From 786a2d4132a13f25d97b666ccc8f8841753f2de5 Mon Sep 17 00:00:00 2001 From: Simon Gardling Date: Sun, 13 Jul 2025 02:53:35 -0700 Subject: [PATCH] improve zfs mounted script EVEN MORE (EVEN MORE MORE MORE) --- lib.nix | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/lib.nix b/lib.nix index 60ce4d4..08df3d1 100644 --- a/lib.nix +++ b/lib.nix @@ -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" ]; }; };