improve zfs mounted script EVEN MORE (EVEN MORE MORE MORE)

This commit is contained in:
Simon Gardling 2025-07-13 02:53:35 -07:00
parent 17e23895d9
commit 786a2d4132
Signed by: titaniumtown
GPG Key ID: 9AB28AC10ECE533D

19
lib.nix
View File

@ -19,15 +19,30 @@ inputs.nixpkgs.lib.extend (
gawk
coreutils
];
text = ''
#!/bin/sh
zfs list -o mountpoint,mounted -H | awk '$2 == "yes" {print $1}' | grep -c '${lib.strings.concatStringsSep "\|" dirs}' | grep -Fq ${toString (lib.length dirs)}
TARGETS=$(echo "${lib.strings.concatStringsSep "\n" dirs}" | sort | uniq)
MOUNTED=$(zfs list -o mountpoint,mounted -H | awk '$2 == "yes" {print $1}' | sort | uniq)
NUM_MATCHED=$(echo "$MOUNTED" | grep -Ec '${lib.strings.concatStringsSep "\|" dirs}')
if [[ "$NUM_MATCHED" -eq "${toString (lib.length dirs)}" ]]; then
exit 0
fi
FOUND=$(printf "%s\n%s" "$TARGETS" "$MOUNTED" | sort | uniq -c | awk '$1 == "2" {print $2}' | sort)
MISSING=$(printf "%s\n%s" "$FOUND" "$TARGETS" | sort | uniq -u | sort)
echo "FAILURE, missing: $MISSING" 1>&2
exit 1
'';
};
serviceMountDeps = serviceName: dirs: {
systemd.services."${serviceName}_mounts" = {
wants = [ "zfs.target" ];
before = [ "${serviceName}.service" ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
@ -37,6 +52,8 @@ inputs.nixpkgs.lib.extend (
systemd.services.${serviceName} = {
wants = [ "${serviceName}_mounts.service" ];
after = [ "${serviceName}_mounts.service" ];
requires = [ "${serviceName}_mounts.service" ];
};
};