#! /usr/bin/env sh set -eu _NIX_WRAPPER_FALLBACK="${_NIX_WRAPPER_FALLBACK-false}" me="$(basename "$0")" notify-send "Running '$me' via the wrapper." if [ "$_NIX_WRAPPER_FALLBACK" = "true" ]; then # Allow skipping the size check. "$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=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