export GUM_FILTER_HEIGHT := "15" @_default: just "$(gum filter --placeholder "Pick a recipie..." $(just --summary --unsorted))" eval hostname=`just _a_host`: nix eval .#nixosConfigurations."{{hostname}}".config.system.build.toplevel.outPath report hostname=`just _a_host`: nix eval .#nixosReports."{{hostname}}" --json | yq . --yaml-output | bat --language yaml --style plain --paging never reports: nix eval .#nixosReports --json | yq . --yaml-output | bat --language yaml --style plain --paging never update: git reset flake.lock git restore flake.lock git pull --rebase --autostash nix flake update --commit-lock-file @mkdir -p .direnv/ @echo "$(date +%Y-%m-%d)" > .direnv/pull-date @update-select: git reset flake.lock git restore flake.lock nix eval .#inputs --apply builtins.attrNames --json \ | jq '.[]' -r \ | gum choose --no-limit --height=15 \ | xargs nix flake update --commit-lock-file build hostname=`just _a_host`: nixos-rebuild build --accept-flake-config --show-trace --flake .#"{{hostname}}" build-vm hostname=`just _a_host`: nixos-rebuild build-vm --accept-flake-config --show-trace --flake .#"{{hostname}}" test: sudo nixos-rebuild test --accept-flake-config --show-trace --flake . switch: sudo nixos-rebuild switch --accept-flake-config --show-trace --flake . boot: sudo nixos-rebuild boot --accept-flake-config --show-trace --flake . boot-and-reboot: sudo nixos-rebuild boot --accept-flake-config --show-trace --flake . sudo reboot push hostname=`just _a_host` cmd=`gum choose test switch boot --header "Select mode..."`: nixos-rebuild build --flake .#{{hostname}} @echo pushing... NIX_NO_NOM=1 nixos-rebuild {{cmd}} --flake .#{{hostname}} --target-host root@$(nix eval .#nixosConfigurations.{{hostname}}.config.networking.fqdn --json | jq . -r) --use-substitutes #NIX_NO_NOM=1 NIX_SSHOPTS="-tt" nixos-rebuild {{cmd}} --flake .#{{hostname}} --use-remote-sudo --target-host $(nix eval .#nixosReports.{{hostname}}.fqdn --json | jq . -r) --use-substitutes inspect: nix run -- nixpkgs#nix-inspect -p . inspect-config host=`just _a_host`: nix run -- nixpkgs#nix-inspect -e '(builtins.getFlake "'"$PWD"'").nixosConfigurations.{{host}}.config' @_a_host: hostnames="$(nix eval .#nixosConfigurations --apply builtins.attrNames --json 2>/dev/null | jq '.[]' -r)"; \ if test "$(grep <<<"$hostnames" "^$(hostname)$" | wc -l)" -eq 1; then hostnames="$(hostname; grep <<<"$hostnames" -v "^$(hostname)$")"; fi; \ gum <<<"$hostnames" filter --placeholder "Pick a host..." @_a_fqdn: hostnames="$(nix eval .#nixosConfigurations --apply 'c: builtins.attrValues (builtins.mapAttrs (_: x: x.config.networking.fqdn) c)' --json 2>/dev/null | jq '.[]' -r)"; \ if test "$(grep <<<"$hostnames" "^$(hostname --fqdn)$" | wc -l)" -eq 1; then hostnames="$(hostname --fqdn; grep <<<"$hostnames" -v "^$(hostname --fqdn)$")"; fi; \ gum <<<"$hostnames" filter --placeholder "Pick a host..." @remote-current: >&2 echo Current remote: $(remote-host) @remote-list: tomlq <.remote.toml '.hosts | to_entries[] | "remote-set \(.key+1) # -> \(.value.host)"' -r @remote-set remote=`just remote-current && just _a-remote-label`: remote-set {{remote}} @_a-remote-label: just remote-list | gum filter --placeholder "Pick a remote..." | cut -d' ' -f2 @_a-remote-fqdn: just remote-list | gum filter --placeholder "Pick a remote..." | cut -d' ' -f5- @_remote_ensure hostname=`just _a_fqdn`: if test ! -s .remote.toml; then remote-init "{{ hostname }}"; \ elif tomlq <.remote.toml '.hosts | to_entries[] |.value.host' -r | grep -q "{{ hostname }}"; then true; \ else remote-add "{{ hostname }}"; \ fi @_remote_label_from_fqdn hostname=`just _a_fqdn`: tomlq <.remote.toml '.hosts | to_entries[] | select(.value.host == "{{ hostname }}") | .key' -r # TODO: support multiple labels, run in tmux remote label=`just _a-remote-label` cmd=`printf "just %s\n" $(just --summary --unsorted) | gum filter --placeholder "Pick a recipie..."`: remote --label={{label}} {{cmd}} # TODO: packaged as nix-web @gorgon: # https://codeberg.org/gorgon/gorgon/src/branch/main/nix-web # https://discourse.nixos.org/t/a-web-ui-for-the-nix-store-early-beta/35762 nix run 'git+https://codeberg.org/gorgon/gorgon#nix-web'