diff --git a/scripts/default.nix b/scripts/default.nix index 9e2e4c6..9a1f9b4 100644 --- a/scripts/default.nix +++ b/scripts/default.nix @@ -6,7 +6,8 @@ let bash colmena coreutils - git; + git + jq; }; mkShellScript = name: (pkgs.substituteAll ({ @@ -22,6 +23,7 @@ let scripts = [ "ns-update" + "launch-vm" # "mk-backup-key" # "wg-setup" ]; diff --git a/scripts/launch-vm.sh b/scripts/launch-vm.sh new file mode 100755 index 0000000..7f8c598 --- /dev/null +++ b/scripts/launch-vm.sh @@ -0,0 +1,37 @@ +#!@bash@/bin/bash +# shellcheck shell=bash +set -o errexit +set -o nounset +set -o pipefail + +MACHINE="" +HOSTFWD="" + +while getopts 'p:o:h' opt; do + case "$opt" in + p) + HOSTFWD=",hostfwd=tcp::$OPTARG$HOSTFWD" + ;; + + o) + MACHINE="$OPTARG" + ;; + + h|?) + echo "Usage: $(basename "$0") [-p hostport-:guestport] -o MACHINE" + exit 1 + ;; + esac +done +shift "$((OPTIND -1))" + +if [ -z "$MACHINE" ]; then echo "-o option needed"; exit 1; fi + +DRV_PATH=$(@colmena@/bin/colmena eval --instantiate -E "{nodes, ...}: nodes.$MACHINE.config.system.build.vm") + +echo "Realising $DRV_PATH" +RESULT=$(nix-store -r "$DRV_PATH") + +echo "Built $RESULT, launching VM ..." + +"$RESULT/bin/run-$MACHINE-vm" -device e1000,netdev=net0 -netdev "user,id=net0$HOSTFWD"