Files
Proux/Makefile
T
2026-07-23 18:45:14 +02:00

68 lines
2.4 KiB
Makefile

# Makefile to safely clean up NixOS profiles, keeping only the last 3 generations.
.PHONY: help dry-run clean-system clean-user clean-home-manager clean-all
# Default target displays the help menu
help:
@echo "NixOS Profile Cleanup Utility"
@echo "============================="
@echo "Available targets:"
@echo " make dry-run - Safe preview of what will be deleted"
@echo " make clean-system - Clean system generations and update bootloader (requires sudo)"
@echo " make clean-user - Clean current user's profile generations"
@echo " make clean-home-manager - Clean Home Manager generations (if applicable)"
@echo " make 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