# 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 .#prouk

# 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 .#prouk

# Update flake.
update:
    @echo "--- Updating Flake ---"
    nix flake update
