NixOS-Configs/justfile
2025-09-04 14:23:58 -05:00

129 lines
4.5 KiB
Makefile

HOSTNAME := `hostname -s`
nixcmd := "nix --extra-experimental-features flakes --extra-experimental-features nix-command"
# Do as test build without installing
test hostname=(HOSTNAME):
@nixfmt . &> nixos-switch.log || ( cat nixos-switch.log && false )
@rm -f nixos-switch.log
@colmena --impure build --on {{hostname}}
# Apply config on hostname
switch hostname=(HOSTNAME):
@rm -f nixos-switch.log
@colmena --impure apply --on {{hostname}}
# Apply config on hostname and then reboot
bootswitch hostname=(HOSTNAME):
@rm -f nixos-switch.log
@colmena --impure apply --on {{hostname}} --reboot
# Apply config on hostname at next reboot
boot:
@rm -f nixos-switch.log
@doas nixos-rebuild boot --impure --flake .#{{HOSTNAME}}
# Build and install the world!
world:
@colmena --impure exec "locate home-manager-backup | sort -u | xargs rm -f"
@colmena --impure apply
# Build and install the workstations
workstation:
@rm -f nixos-switch.log
@colmena --impure exec --on @workstation "locate home-manager-backup | sort -u | xargs rm -f"
@colmena --impure apply --on @workstation
# Build and install the servers
server:
@rm -f nixos-switch.log
@colmena --impure exec --on @server "locate home-manager-backup | sort -u | xargs rm -f"
@colmena --impure apply --on @server
# Build and install the webhosts
web:
@rm -f nixos-switch.log
@colmena --impure exec --on @web "locate home-manager-backup | sort -u | xargs rm -f"
@colmena --impure apply --on @web
# Build and run a vm FIXME
vm hostname=(HOSTNAME):
@doas rm -f result
@rm -f nixos-switch.log
@echo Running iso build
@nixos-rebuild build-vm --impure --flake .#{{hostname}}
export QEMU_NET_OPTS="hostfwd=tcp::2221-:22"
result/bin/run-{{hostname}}-vm
buildiso hostname:
@rm -f nixos-switch.log result
@echo Running iso build
@NIXPKGS_ALLOW_UNFREE=1 {{nixcmd}} run --impure nixpkgs#nixos-generators -- -f iso --flake .#{{hostname}} --system x86_64-linux -o ./{{hostname}}.sd &> nixos-switch.log || ( cat nixos-switch.log && false )
buildsd hostname:
@rm -f nixos-switch.log result
@echo Running sd build
@doas {{nixcmd}} run nixpkgs#nixos-generators -- -f sd-aarch64 --flake .#{{hostname}} --system aarch64-linux -o ./{{hostname}}.sd &> nixos-switch.log || ( cat nixos-switch.log && false )
# Stuff to do weekly
weekly: pull clean update world ci push clean-world
# Update flake.lock
update:
@echo "Updating flake.lock"
@{{nixcmd}} flake update &> nixos-switch.log || ( cat nixos-switch.log && false )
@rm -f nixos-switch.log
# Clean up
clean hostname=(HOSTNAME):
@echo "Cleaning old entries and store"
@colmena --impure exec --on {{hostname}} "locate home-manager-backup | sort -u | xargs rm -f"
@# @ssh {{hostname}} 'home-manager expire-generations "-5 days"'
@colmena --impure exec --on {{hostname}} 'home-manager expire-generations "-5 days"'
@echo "Garbage Collection"
@colmena --impure exec --on {{hostname}} nix-collect-garbage --quiet --log-format bar --no-build-output --delete-old
@echo "Store optimise"
@colmena --impure exec --on {{hostname}} {{nixcmd}} store optimise
# Clean up the world
clean-world:
@echo "Cleaning old entries and store"
@colmena --impure exec "locate home-manager-backup | sort -u | xargs rm -f"
@colmena --impure exec 'home-manager expire-generations "-5 days"'
@echo "Garbage Collection"
@colmena --impure exec 'nix-collect-garbage --quiet --log-format bar --no-build-output --delete-old'
@echo "Store optimise"
@colmena --impure exec '{{nixcmd}} store optimise'
# Push local changes to git
push:
@echo pushing to git
@git push
# Pull changes from git
pull:
@echo Updating from git repo
@git pull &> nixos-switch.log || ( cat nixos-switch.log && false )
@rm -f nixos-switch.log
@doas nix-prefetch-url file://`pwd`/`ls -1 src/linuxx64* | tail -n1` &> nixos-switch.log || ( cat nixos-switch.log && false )
@rm -f nixos-switch.log
# @doas nix-prefetch-url file://`pwd`/`ls -1 src/linuxarm64* | tail -n1` &> nixos-switch.log || ( cat nixos-switch.log && false )
# @rm -f nixos-switch.log
# Add everything to git
ci:
@echo "git commit"
@git commit -m"chore | Update flake.lock" flake.lock &> nixos-switch.log || ( cat nixos-switch.log && false )
@rm -f nixos-switch.log
# Go old school
oldschool:
@rm -f nixos-switch.log
@doas nixos-rebuild switch --impure --flake .#{{HOSTNAME}}
# Reboot on hostname
reboot hostname=(HOSTNAME):
@colmena --impure exec --on {{hostname}} "doas reboot"
# Format the code
format:
@nixfmt . &> nixos-switch.log || ( cat nixos-switch.log && false )