diff --git a/modules/common.nix b/modules/common.nix index c0997b6..d76fee4 100644 --- a/modules/common.nix +++ b/modules/common.nix @@ -164,12 +164,20 @@ nix = { settings.experimental-features = ["nix-command" "flakes"]; # Enable modern Nix features (flakes and new CLI) + # Optimise the Nix store automatically to recover space optimise = { - # Optimise the Nix store automatically to recover space automatic = true; - dates = ["03:45"]; # Optional; allows customizing optimisation schedule + dates = ["03:45"]; persistent = true; # Run missed optimisations }; + + # Garbage collect the Nix store automatically to recover space + gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 60d"; + persistent = true; # Run missed GC + }; }; # ================================ diff --git a/rebuild-nix-system.sh b/rebuild-nix-system.sh index d613d79..064244e 100755 --- a/rebuild-nix-system.sh +++ b/rebuild-nix-system.sh @@ -2,13 +2,6 @@ set -e -# Days of nix generations to keep -KEEP_DAYS=60 -# extra buffer before we trigger a GC -BUFFER_DAYS=30 -# minimum number of generations to keep -KEEP_MIN=5 - # Check for force flag FORCE_REBUILD=false if [[ "$1" == "-f" || "$1" == "--force" ]]; then @@ -67,18 +60,3 @@ current=$(nixos-rebuild list-generations | grep current) # Commit all changes witih the generation metadata git commit -am "$NIXOS_HOST: $current" - -# Clean up old generations if conditions are met -gens=$(nixos-rebuild list-generations | tail -n +2) -# If there are less than KEEP_MIN generations, exit -(( $(wc -l <<<"$gens") <= KEEP_MIN )) && exit 0 - -# Get the oldest generation -old=$(awk 'END{print $2" "$3}' <<<"$gens") -# Calculate the age of the oldest generation in days -age=$(( ( $(date +%s) - $(date -d "$old" +%s) )/86400 )) -# If the age is greater than KEEP_DAYS+BUFFER_DAYS, delete the oldest generation -(( age > KEEP_DAYS+BUFFER_DAYS )) || exit 0 -sudo nix-collect-garbage --delete-older-than ${KEEP_DAYS}d &>logs/nixos-gc.log || (cat logs/nixos-gc.log | grep --color error && exit 1) - -