diff options
| author | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2026-11-06 19:00:07 +0100 |
|---|---|---|
| committer | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2026-11-06 19:00:59 +0100 |
| commit | 2da934cf5fafbac67e9cff15a7936ebf589c43c6 (patch) | |
| tree | 3dbc04e783e59e1ab9cc1eabc2ec0f158713c431 | |
| parent | modules/rofi: Change configured terminal to foot (diff) | |
| download | nixos-config-2da934cf5fafbac67e9cff15a7936ebf589c43c6.zip | |
modules/nix: Make the nix wrapper actually work
| -rw-r--r-- | modules/by-name/ni/nix/module.nix | 6 | ||||
| -rwxr-xr-x | modules/by-name/ni/nix/nix_wrapper.sh | 16 |
2 files changed, 13 insertions, 9 deletions
diff --git a/modules/by-name/ni/nix/module.nix b/modules/by-name/ni/nix/module.nix index 31977d4c..391f38e5 100644 --- a/modules/by-name/ni/nix/module.nix +++ b/modules/by-name/ni/nix/module.nix @@ -24,10 +24,9 @@ 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 @@ -38,6 +37,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..489f10f1 100755 --- a/modules/by-name/ni/nix/nix_wrapper.sh +++ b/modules/by-name/ni/nix/nix_wrapper.sh @@ -1,23 +1,25 @@ #! /usr/bin/env sh set -eu +_NIX_WRAPPER_FALLBACK="${_NIX_WRAPPER_FALLBACK-false}" -notify-send "Running nix via the wrapper." +me="$(basename "$0")" +notify-send "Running '$me' via the wrapper." if [ "$_NIX_WRAPPER_FALLBACK" = "true" ]; then # Allow skipping the size check. - nix "$@" + "$me" "$@" else usage="$(btrfs filesystem usage /nix --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 |
