{ inputs, pkgs, ... }: inputs.nixpkgs.lib.extend ( final: prev: let lib = prev; in { ensureZfsMounts = dirs: pkgs.writeShellApplication { name = "zfslistmounted"; runtimeInputs = with pkgs; [ zfs gnugrep gawk coreutils ]; text = '' #!/bin/sh 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; ExecStart = lib.getExe (final.ensureZfsMounts dirs); }; }; systemd.services.${serviceName} = { wants = [ "${serviceName}_mounts.service" ]; after = [ "${serviceName}_mounts.service" ]; requires = [ "${serviceName}_mounts.service" ]; }; }; # stolen from: https://stackoverflow.com/a/42398526 optimizeWithFlags = pkg: flags: lib.overrideDerivation pkg ( old: let newflags = lib.foldl' (acc: x: "${acc} ${x}") "" flags; oldflags = if (lib.hasAttr "NIX_CFLAGS_COMPILE" old) then "${old.NIX_CFLAGS_COMPILE}" else ""; in { NIX_CFLAGS_COMPILE = "${oldflags} ${newflags}"; # stdenv = pkgs.clang19Stdenv; } ); optimizePackage = pkg: final.optimizeWithFlags pkg [ "-O3" "-march=znver3" "-mtune=znver3" ]; } )