aboutsummaryrefslogtreecommitdiffstats
path: root/modules/scripts
diff options
context:
space:
mode:
authorArpit Chakladar <arpitchakladar@proton.me>2026-03-12 19:08:28 +0530
committerArpit Chakladar <arpitchakladar@proton.me>2026-03-12 19:08:28 +0530
commit8ef0218be2006e8bbbe75ea28563fc0b127de7fc (patch)
tree1984bacc4e0fb8221022aeea4532b807136f4a17 /modules/scripts
parent51d537e03ad877566f00af3c6a1c00340512ac65 (diff)
downloadhome-manager-config-8ef0218be2006e8bbbe75ea28563fc0b127de7fc.tar.gz
home-manager-config-8ef0218be2006e8bbbe75ea28563fc0b127de7fc.zip
Added a deep-clean script that removes all unncessary nix packages in /nix/store
Diffstat (limited to 'modules/scripts')
-rw-r--r--modules/scripts/deep-clean.sh30
-rw-r--r--modules/scripts/default.nix1
2 files changed, 31 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 ---"
diff --git a/modules/scripts/default.nix b/modules/scripts/default.nix
index c90703c..8e7d7d2 100644
--- a/modules/scripts/default.nix
+++ b/modules/scripts/default.nix
@@ -15,6 +15,7 @@
executable = true;
};
in {
+ "scripts/deep-clean" = shellScript ./deep-clean.sh;
"scripts/system-monitor" =
lib.mkIf
(config.tools.bottom.enable &&