aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArpit Chakladar <arpitchakladar+git@gmail.com>2026-07-28 23:09:02 +0530
committerArpit Chakladar <arpitchakladar+git@gmail.com>2026-07-28 23:09:02 +0530
commitb8b0d5e9c7fb6a7d130dcdd14a51ac51cf539be4 (patch)
treebbc927ebdd4c18b904249b17745effd0c78a0d01
parent36630da39cb82a0fb75991ffeeefcb15623a47ea (diff)
downloadhome-manager-config-b8b0d5e9c7fb6a7d130dcdd14a51ac51cf539be4.tar.gz
home-manager-config-b8b0d5e9c7fb6a7d130dcdd14a51ac51cf539be4.zip
feat(deep-clean): deep-clean deletes all generations except current one
- Running deep-clean will now delete all generations for home-manager and nixos except the latest one before cleaning dangling derivations
-rw-r--r--modules/scripts/deep-clean/script.sh31
1 files changed, 18 insertions, 13 deletions
diff --git a/modules/scripts/deep-clean/script.sh b/modules/scripts/deep-clean/script.sh
index dcbd62b..bb28182 100644
--- a/modules/scripts/deep-clean/script.sh
+++ b/modules/scripts/deep-clean/script.sh
@@ -1,30 +1,35 @@
-echo "--- Starting Nix Deep Clean ---"
+#!/usr/bin/env bash
+set -euo pipefail
+
+echo "--- Starting Nix Deep Clean (keeping only current generations) ---"
if [[ $EUID -eq 0 ]]; then
- echo "Error: Do not run this script with 'sudo ./clean-nix.sh'."
- echo "Run it as your normal user; it will ask for your password when needed."
+ echo "Error: Do not run this script with sudo."
+ echo "Run it as your normal user; it will ask for sudo when required."
exit 1
fi
-echo "Cleaning system generations..."
-sudo nix-env -p /nix/var/nix/profiles/system --delete-generations old
+echo "Removing old NixOS system generations..."
+sudo nix-env -p /nix/var/nix/profiles/system --delete-generations +1
+echo "Removing old Home Manager generations..."
if command -v home-manager &> /dev/null; then
- echo "Cleaning Home Manager generations..."
- home-manager expire-generations "-0 days"
+ home-manager generations | \
+ awk 'NR>1 {print $1}' | \
+ xargs -r home-manager remove-generations
fi
-echo "Cleaning user generations..."
-nix-env --delete-generations old
+echo "Removing old user profile generations..."
+nix-env --delete-generations +1
-echo "Removing 'result' symlinks in current directory..."
+echo "Removing result symlinks..."
find . -name "result" -type l -delete
-echo "Running Garbage Collector..."
+echo "Running garbage collector..."
sudo nix-collect-garbage -d
nix-collect-garbage -d
-echo "Optimising the store (deduplicating files)..."
+echo "Optimising Nix store..."
nix store optimise
-echo "--- Clean Up Complete ---"
+echo "--- Cleanup Complete ---"