aboutsummaryrefslogtreecommitdiffstats
path: root/modules/system/deep-clean
diff options
context:
space:
mode:
Diffstat (limited to 'modules/system/deep-clean')
-rw-r--r--modules/system/deep-clean/deep-clean.sh35
-rw-r--r--modules/system/deep-clean/default.nix18
2 files changed, 53 insertions, 0 deletions
diff --git a/modules/system/deep-clean/deep-clean.sh b/modules/system/deep-clean/deep-clean.sh
new file mode 100644
index 0000000..bb28182
--- /dev/null
+++ b/modules/system/deep-clean/deep-clean.sh
@@ -0,0 +1,35 @@
+#!/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."
+ echo "Run it as your normal user; it will ask for sudo when required."
+ exit 1
+fi
+
+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
+ home-manager generations | \
+ awk 'NR>1 {print $1}' | \
+ xargs -r home-manager remove-generations
+fi
+
+echo "Removing old user profile generations..."
+nix-env --delete-generations +1
+
+echo "Removing result symlinks..."
+find . -name "result" -type l -delete
+
+echo "Running garbage collector..."
+sudo nix-collect-garbage -d
+nix-collect-garbage -d
+
+echo "Optimising Nix store..."
+nix store optimise
+
+echo "--- Cleanup Complete ---"
diff --git a/modules/system/deep-clean/default.nix b/modules/system/deep-clean/default.nix
new file mode 100644
index 0000000..af75382
--- /dev/null
+++ b/modules/system/deep-clean/default.nix
@@ -0,0 +1,18 @@
+# Deep clean script for Nix systems
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+let
+ inherit ((import ../../lib/script.nix { inherit lib pkgs; })) mkScriptModule;
+in
+mkScriptModule {
+ scope = [ "system" ];
+ name = "deep-clean";
+ path = ./deep-clean.sh;
+ description = "Deep clean script for Nix systems\nRemoves old generations, garbage, and optimizes store\nWARNING: Do NOT run with sudo - run as normal user";
+ deps = [ pkgs.bash ];
+ inherit config;
+}