75 lines
1.9 KiB
Makefile
75 lines
1.9 KiB
Makefile
.PHONY: init install link unlink rebuild update purge edit hw help
|
|
|
|
NIXOS_DIR := /etc/nixos
|
|
REPO_DIR := $(shell pwd)
|
|
SETTINGS := settings.nix
|
|
HOSTNAME := $(shell grep 'hostname =' $(SETTINGS) | cut -d '"' -f 2)
|
|
|
|
# Colors for output
|
|
GREEN := \033[0;32m
|
|
YELLOW := \033[0;33m
|
|
RED := \033[0;31m
|
|
NC := \033[0m # No Color
|
|
|
|
help:
|
|
@echo "NixOS Config (Flake)"
|
|
@echo ""
|
|
@echo " make init - first time setup"
|
|
@echo " make hw - generate hardware-configuration.nix"
|
|
@echo " make rebuild - rebuild nixos configuration"
|
|
@echo " make update - update flake inputs and rebuild"
|
|
@echo " make purge - garbage collect"
|
|
@echo " make link - symlink to /etc/nixos"
|
|
@echo " make unlink - remove symlink"
|
|
@echo " make edit - edit settings.nix"
|
|
|
|
init:
|
|
@$(MAKE) --no-print-directory hw
|
|
@$(MAKE) --no-print-directory link
|
|
@echo ""
|
|
@echo "done. run 'make rebuild' when ready"
|
|
|
|
link:
|
|
@if [ -L "$(NIXOS_DIR)" ]; then \
|
|
sudo rm $(NIXOS_DIR); \
|
|
elif [ -d "$(NIXOS_DIR)" ]; then \
|
|
sudo mv $(NIXOS_DIR) $(NIXOS_DIR).bak; \
|
|
echo "backed up /etc/nixos to /etc/nixos.bak"; \
|
|
fi
|
|
@sudo ln -sf $(REPO_DIR) $(NIXOS_DIR)
|
|
@echo "linked $(REPO_DIR) -> $(NIXOS_DIR)"
|
|
|
|
unlink:
|
|
@if [ -L "$(NIXOS_DIR)" ]; then \
|
|
sudo rm $(NIXOS_DIR); \
|
|
sudo mkdir -p $(NIXOS_DIR); \
|
|
echo "unlinked"; \
|
|
else \
|
|
echo "/etc/nixos is not a symlink"; \
|
|
fi
|
|
|
|
rebuild:
|
|
@if [ -f hardware-configuration.nix ]; then \
|
|
git add -f -N hardware-configuration.nix; \
|
|
fi
|
|
@echo "Rebuilding system for $(HOSTNAME)..."
|
|
sudo nixos-rebuild switch --flake .#$(HOSTNAME)
|
|
|
|
update:
|
|
@echo "Updating flake inputs..."
|
|
nix flake update
|
|
@$(MAKE) --no-print-directory rebuild
|
|
|
|
purge:
|
|
sudo nix-collect-garbage -d
|
|
sudo /run/current-system/bin/switch-to-configuration boot
|
|
|
|
check:
|
|
nix flake check
|
|
|
|
hw:
|
|
sudo nixos-generate-config --show-hardware-config > hardware-configuration.nix
|
|
|
|
edit:
|
|
@$${EDITOR:-nano} $(SETTINGS)
|