aboutsummaryrefslogtreecommitdiffstats
path: root/modules/scripts/deep-clean.sh
diff options
context:
space:
mode:
Diffstat (limited to 'modules/scripts/deep-clean.sh')
-rw-r--r--modules/scripts/deep-clean.sh30
1 files changed, 30 insertions, 0 deletions
diff --git a/modules/scripts/deep-clean.sh b/modules/scripts/deep-clean.sh
new file mode 100644
index 0000000..dcbd62b
--- /dev/null
+++ b/modules/scripts/deep-clean.sh
@@ -0,0 +1,30 @@
+echo "--- Starting Nix Deep Clean ---"
+
+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."
+ exit 1
+fi
+
+echo "Cleaning system generations..."
+sudo nix-env -p /nix/var/nix/profiles/system --delete-generations old
+
+if command -v home-manager &> /dev/null; then
+ echo "Cleaning Home Manager generations..."
+ home-manager expire-generations "-0 days"
+fi
+
+echo "Cleaning user generations..."
+nix-env --delete-generations old
+
+echo "Removing 'result' symlinks in current directory..."
+find . -name "result" -type l -delete
+
+echo "Running Garbage Collector..."
+sudo nix-collect-garbage -d
+nix-collect-garbage -d
+
+echo "Optimising the store (deduplicating files)..."
+nix store optimise
+
+echo "--- Clean Up Complete ---"