2023-10-03 01:07:18 +02:00
|
|
|
set -o errexit
|
|
|
|
set -o nounset
|
|
|
|
set -o pipefail
|
2024-11-14 22:01:58 +01:00
|
|
|
shopt -s lastpipe
|
2023-10-03 01:07:18 +02:00
|
|
|
|
|
|
|
MACHINE=""
|
|
|
|
HOSTFWD=""
|
|
|
|
|
|
|
|
while getopts 'p:o:h' opt; do
|
|
|
|
case "$opt" in
|
2024-11-14 22:01:58 +01:00
|
|
|
p)
|
|
|
|
HOSTFWD=",hostfwd=tcp::$OPTARG$HOSTFWD"
|
|
|
|
;;
|
|
|
|
|
|
|
|
o)
|
|
|
|
MACHINE="$OPTARG"
|
|
|
|
;;
|
|
|
|
|
|
|
|
h | ?)
|
|
|
|
echo "Usage: $(basename "$0") [-p hostport-:guestport] -o MACHINE"
|
|
|
|
exit 1
|
|
|
|
;;
|
2023-10-03 01:07:18 +02:00
|
|
|
esac
|
|
|
|
done
|
2024-11-14 22:01:58 +01:00
|
|
|
shift "$((OPTIND - 1))"
|
2023-10-03 01:07:18 +02:00
|
|
|
|
2024-11-14 22:01:58 +01:00
|
|
|
if [ -z "$MACHINE" ]; then
|
|
|
|
echo "-o option needed"
|
|
|
|
exit 1
|
|
|
|
fi
|
2023-10-03 01:07:18 +02:00
|
|
|
|
2024-11-14 22:01:58 +01:00
|
|
|
DRV_PATH=$(colmena eval --instantiate -E "{nodes, ...}: nodes.$MACHINE.config.system.build.vm")
|
2023-10-03 01:07:18 +02:00
|
|
|
|
|
|
|
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"
|