aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.editorconfig4
-rw-r--r--modules/scripts/deep-clean.sh30
-rw-r--r--modules/scripts/default.nix1
3 files changed, 35 insertions, 0 deletions
diff --git a/.editorconfig b/.editorconfig
index 8ffd4a3..90f0205 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -3,3 +3,7 @@ root = true
[*.nix]
indent_style = space
indent_size = 2
+
+[*.sh]
+indent_style = space
+indent_size = 2
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 &&