57 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
| set positional-arguments # makes variables accesible as $1 $2 $@
 | |
| export GUM_FILTER_HEIGHT := "15"
 | |
| nom := `if [[ -t 1 ]] && command -v nom >/dev/null; then echo nom; else echo nix; fi`
 | |
| nix_eval_opts := "--log-format raw --option warn-dirty false"
 | |
| 
 | |
| @_default:
 | |
|   just "$(gum choose --ordered --header "Pick a recipie..." $(just --summary --unsorted))"
 | |
| 
 | |
| check *_:
 | |
|   nix flake check --keep-going "$@"
 | |
| 
 | |
| build-machine machine=`just _a_machine` *_:
 | |
|   {{nom}} build .#nixosConfigurations.{{ machine }}.config.system.build.toplevel "${@:2}"
 | |
| 
 | |
| run-vm machine=`just _a_machine` *_:
 | |
|   nixos-rebuild build-vm --flake .#{{ machine }} "${@:2}"
 | |
|   QEMU_NET_OPTS="hostfwd=tcp::8080-:80,hostfwd=tcp::8081-:443,hostfwd=tcp::2222-:22" ./result/bin/run-*-vm
 | |
| 
 | |
| @update-inputs *_:
 | |
|   @git reset flake.lock
 | |
|   @git restore flake.lock
 | |
|   nix eval {{nix_eval_opts}} --file flake.nix --apply 'x: builtins.attrNames x.inputs' --json \
 | |
|     | { printf "%s\n" --commit-lock-file; jq '.[]' -r | grep -vxF "self" ||:; } \
 | |
|     | gum choose --no-limit --header "Choose extra arguments:" \
 | |
|     | tee >(xargs -d'\n' echo + nix flake update "$@" >&2) \
 | |
|     | xargs -d'\n' nix flake update "$@"
 | |
| 
 | |
| @repl $machine=`just _a_machine` *_:
 | |
|   set -v; nixos-rebuild --flake .#"$machine" repl "${@:2}"
 | |
| 
 | |
| @eval $machine=`just _a_machine` $attrpath="system.build.toplevel.outPath" *_:
 | |
|   set -v; nix eval {{nix_eval_opts}} ".#nixosConfigurations.\"$machine\".config.$attrpath" --show-trace "${@:3}"
 | |
| 
 | |
| @eval-vm $machine=`just _a_machine` $attrpath="system.build.toplevel.outPath" *_:
 | |
|   just eval "$machine" "virtualisation.vmVariant.$attrpath" "${@:3}"
 | |
| 
 | |
| 
 | |
| # helpers
 | |
| 
 | |
| [no-exit-message]
 | |
| _a_machine:
 | |
|   #!/usr/bin/env -S sh -euo pipefail
 | |
|   machines="$(
 | |
|     nix eval {{nix_eval_opts}} .#nixosConfigurations --apply builtins.attrNames --json | jq .[] -r
 | |
|   )"
 | |
|   [ -n "$machines" ] || { echo >&2 "ERROR: no machines found"; false; }
 | |
|   if [ -s .direnv/vars/last-machine.txt ]; then
 | |
|     machines="$(
 | |
|       grep <<<"$machines" -xF  "$(cat .direnv/vars/last-machine.txt)" ||:
 | |
|       grep <<<"$machines" -xFv "$(cat .direnv/vars/last-machine.txt)" ||:
 | |
|     )"
 | |
|   fi
 | |
|   choice="$(gum filter <<<"$machines")"
 | |
|   mkdir -p .direnv/vars
 | |
|   cat <<<"$choice" >.direnv/vars/last-machine.txt
 | |
|   cat <<<"$choice"
 |