# 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!" # Build. build: @echo "--- Rebuilding System ---" sudo nixos-rebuild switch --flake # Update flake. update: @echo "--- Updating Flake ---" sudo nix flake update