From c2badfbc60c22267e754831ff869346bac27700b Mon Sep 17 00:00:00 2001 From: Simon Gardling Date: Thu, 10 Jul 2025 09:19:35 -0700 Subject: [PATCH] simplify mountpoint script --- flake.nix | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/flake.nix b/flake.nix index ff53774..63cd862 100644 --- a/flake.nix +++ b/flake.nix @@ -136,18 +136,34 @@ }; 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}_mounts" = + let + zfslistmounted = pkgs.writeShellApplication { + name = "zfslistmounted"; + runtimeInputs = with pkgs; [ + zfs + gnugrep + gawk + ]; + text = '' + #!/bin/sh + zfs get mounted | grep yes | awk '{print $1}' | while read -r i; do zfs get mountpoint "$i" | awk 'FNR==2 {print $3}'; done + ''; + }; + in + { + unitConfig.Wants = "zfs.target"; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + ExecStart = + let + lib = nixpkgs.lib; + contains_cmd = "${lib.getExe pkgs.gnugrep} '${lib.strings.concatStringsSep "\|" dirs}' | ${pkgs.coreutils}/bin/wc -l | ${lib.getExe pkgs.gnugrep} -q ${toString (lib.length dirs)}"; + in + "${lib.getExe pkgs.bash} -c \"${lib.getExe zfslistmounted} | ${contains_cmd}\""; + }; }; - }; systemd.services.${serviceName} = { wants = [ "${serviceName}_mounts.service" ];