proper mountpoint testing

This commit is contained in:
2025-07-10 01:31:52 -07:00
parent 265d5ff5fb
commit 888fbc3649
8 changed files with 24 additions and 10 deletions

View File

@@ -135,9 +135,22 @@
};
};
serviceMountDeps = serviceName: dirs: {
serviceMountDeps = serviceName: dirs: pkgs: {
systemd.services."${serviceName}_mounts" = {
unitConfig.Wants = "zfs.target";
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
ExecStart =
let
lib = nixpkgs.lib;
in
"${lib.getExe pkgs.bash} -c \"${lib.getExe pkgs.zfs} get mounted | ${lib.getExe pkgs.gnugrep} yes | ${lib.getExe pkgs.gawk} '{print $1}' | while read i; do ${lib.getExe pkgs.zfs} get mountpoint \$i | ${lib.getExe pkgs.gawk} 'FNR==2 {print \$3}'; done | ${lib.getExe pkgs.gnugrep} '${lib.strings.concatStringsSep "\|" dirs}' | ${pkgs.coreutils}/bin/wc -l | ${lib.getExe pkgs.gnugrep} -q ${toString (lib.length dirs)}\"";
};
};
systemd.services.${serviceName} = {
unitConfig.RequiresMountsFor = dirs;
wants = [ "${serviceName}_mounts.service" ];
};
};
in