infrastructure/nyx

46 lines
674 B
Bash
Executable file

#!/usr/bin/env bash
set -eu
usage() {
echo example: $0 build samhain boot
}
eval_setup() {
HOST=$1
if [ $# -gt 2 ]; then
METHOD=$2
else
METHOD="switch"
fi
}
cmd_deploy() {
eval_setup $@
bash <(nix eval --raw deploy.${HOST} -f .) ${METHOD}
}
cmd_debug() {
eval_setup $@
nix eval --raw deploy.$HOST -f .
}
cmd_install() {
HOST=$1
nix build -f . hosts.$HOST.config.system.build.toplevel
CLOSURE=$(readlink result)
nix-store --export $(nix-store -qR ./result) | ssh root@$HOST nix-store --import --store /mnt
ssh root@$HOST nixos-install --system $CLOSURE
}
main() {
if [ $# -lt 2 ]; then
usage
else
CMD=$1
shift
cmd_$CMD $@
fi
}
main "$@"