diff options
Diffstat (limited to 'modules/by-name/ni/nix/nix_wrapper.sh')
| -rwxr-xr-x | modules/by-name/ni/nix/nix_wrapper.sh | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/modules/by-name/ni/nix/nix_wrapper.sh b/modules/by-name/ni/nix/nix_wrapper.sh new file mode 100755 index 00000000..077988d2 --- /dev/null +++ b/modules/by-name/ni/nix/nix_wrapper.sh @@ -0,0 +1,26 @@ +#! /usr/bin/env sh + +set -eu +_NIX_WRAPPER_FALLBACK="${_NIX_WRAPPER_FALLBACK-false}" + +me="$(basename "$0")" + +if [ "$_NIX_WRAPPER_FALLBACK" = "true" ]; then + # Allow skipping the size check. + "$me" "$@" +else + 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=4\n%d / %d\n" "$used" "$avail" | bc)" + perc="$(printf "scale=2\n%s * 100\n" "0$perc" | bc)" + + 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." + exit 3 + fi +fi + +# vim: ft=sh |
