diff --git a/home/packages/development.nix b/home/packages/development.nix index 811f5ce..cd564fb 100644 --- a/home/packages/development.nix +++ b/home/packages/development.nix @@ -11,5 +11,6 @@ nil nixd jujutsu + just ]; } diff --git a/justfile b/justfile new file mode 100644 index 0000000..cb2bbae --- /dev/null +++ b/justfile @@ -0,0 +1,65 @@ +# Justfile to safely clean up NixOS profiles, keeping only the last 3 generations. + +# Default recipe displays the help menu. +help: + @echo "NixOS Profile Cleanup Utility" + @echo "=============================" + @echo "Available recipes:" + @echo " just dry-run - Safe preview of what will be deleted" + @echo " just clean-system - Clean system generations and update bootloader (requires sudo)" + @echo " just clean-user - Clean current user's profile generations" + @echo " just clean-home-manager - Clean Home Manager generations (if applicable)" + @echo " just clean-all - Clean everything (System, User, and Home Manager)" + +# Dry run to preview changes without deleting anything. +dry-run: + @echo "=== [DRY RUN] System Profile ===" + sudo nix-env --profile /nix/var/nix/profiles/system --delete-generations +3 --dry-run + @echo "\n=== [DRY RUN] User Profile ===" + nix-env --delete-generations +3 --dry-run + @echo "\n=== [DRY RUN] Home Manager Profile ===" + @if [ -d "$HOME/.local/state/nix/profiles/home-manager" ]; then \ + nix-env --profile "$HOME/.local/state/nix/profiles/home-manager" --delete-generations +3 --dry-run; \ + elif [ -d "$HOME/.nix-profile" ]; then \ + echo "No Home Manager directory found, but user profile exists."; \ + else \ + echo "No Home Manager profile detected."; \ + fi + +# Clean system generations (requires sudo). +clean-system: + @echo "--- Cleaning System Profile (SUDO) ---" + sudo nix-env --profile /nix/var/nix/profiles/system --delete-generations +3 + sudo nix-collect-garbage + @echo "--- Updating Bootloader Menu ---" + sudo nixos-rebuild boot --flake + +# Clean user generations (no sudo). +clean-user: + @echo "--- Cleaning User Profile ---" + nix-env --delete-generations +3 + nix-collect-garbage + +# Clean Home Manager generations (no sudo). +clean-home-manager: + @echo "--- Cleaning Home Manager Profile ---" + @if [ -d "$HOME/.local/state/nix/profiles/home-manager" ]; then \ + nix-env --profile "$HOME/.local/state/nix/profiles/home-manager" --delete-generations +3; \ + nix-collect-garbage; \ + else \ + echo "No Home Manager profile found. Skipping."; \ + fi + +# Clean everything in one go. +clean-all: clean-system clean-user clean-home-manager + @echo "All cleanups successfully completed!" + +# Rebuild. +rebuild: + @echo "--- Rebuilding System ---" + sudo nixos-rebuild switch --flake + +# Update flake. +update: + @echo "--- Updating Flake ---" + sudo nix flake update