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 hostname=(HOSTNAME): @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 ) # Find areas which need to be fixed. fixme: @find . -name '*nix' -exec grep -HE 'TODO|FIXME' {} \;