summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2026-11-06 19:00:07 +0100
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2026-11-06 19:00:59 +0100
commit2da934cf5fafbac67e9cff15a7936ebf589c43c6 (patch)
tree3dbc04e783e59e1ab9cc1eabc2ec0f158713c431
parentmodules/rofi: Change configured terminal to foot (diff)
downloadnixos-config-2da934cf5fafbac67e9cff15a7936ebf589c43c6.zip
modules/nix: Make the nix wrapper actually work
-rw-r--r--modules/by-name/ni/nix/module.nix6
-rwxr-xr-xmodules/by-name/ni/nix/nix_wrapper.sh16
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