diff options
Diffstat (limited to 'modules/by-name/ni/nix')
| -rw-r--r-- | modules/by-name/ni/nix/module.nix | 7 | ||||
| -rwxr-xr-x | modules/by-name/ni/nix/nix_wrapper.sh | 17 |
2 files changed, 13 insertions, 11 deletions
diff --git a/modules/by-name/ni/nix/module.nix b/modules/by-name/ni/nix/module.nix index 31977d4c..5fd10541 100644 --- a/modules/by-name/ni/nix/module.nix +++ b/modules/by-name/ni/nix/module.nix @@ -24,13 +24,11 @@ pkgs.lixPackageSets.latest.lix; nixWrapperBase = pkgs.writeShellApplication { - inherit (lix) name; + name = "nix"; text = builtins.readFile ./nix_wrapper.sh; - inheritPath = false; runtimeInputs = [ pkgs.lixPackageSets.latest.lix - pkgs.libnotify pkgs.btrfs-progs pkgs.coreutils pkgs.gnused @@ -38,6 +36,9 @@ pkgs.bc ]; + # the wrapped nix command might call random other stuff. + inheritPath = true; + derivationArgs = { inherit (lix) meta pname version; }; diff --git a/modules/by-name/ni/nix/nix_wrapper.sh b/modules/by-name/ni/nix/nix_wrapper.sh index 55b12dc9..077988d2 100755 --- a/modules/by-name/ni/nix/nix_wrapper.sh +++ b/modules/by-name/ni/nix/nix_wrapper.sh @@ -1,23 +1,24 @@ #! /usr/bin/env sh set -eu +_NIX_WRAPPER_FALLBACK="${_NIX_WRAPPER_FALLBACK-false}" -notify-send "Running nix via the wrapper." +me="$(basename "$0")" if [ "$_NIX_WRAPPER_FALLBACK" = "true" ]; then # Allow skipping the size check. - nix "$@" + "$me" "$@" else - usage="$(btrfs filesystem usage /nix --raw 2>/dev/null)" + usage="$(btrfs filesystem usage /nix/store --raw 2>/dev/null)" avail="$(echo "$usage" | grep 'Device size:' | cut -f 3 | sed 's/ //g')" used="$(echo "$usage" | grep 'Used:' | cut -f 4 | head -n 1 | sed 's/ //g')" - perc="$(printf "scale=3\n%d / %d\n" "$used" "$avail" | bc)" - perc="$(printf "%d * 100\n" "$perc" | bc)" + perc="$(printf "scale=4\n%d / %d\n" "$used" "$avail" | bc)" + perc="$(printf "scale=2\n%s * 100\n" "0$perc" | bc)" - if test -gt "$perc" "0.2"; then - nix "$@" + if test "$(printf "%s >= 20\n" "$perc" | bc)" = "1"; then + "$me" "$@" else - echo "Not enough space free, in nix store: Only, $perc is still free." + echo "Not enough space free, in nix store: Only, $perc% is still free." exit 3 fi fi |
