#!/usr/bin/env bash set -eo pipefail cd "$(dirname "$0")" if ! command -v nix-build &> /dev/null then echo "Nix installation could not be found. Please follow the instructions linked below." echo "https://nixos.org/manual/nix/unstable/installation/installing-binary.html#multi-user-installation" exit fi mode="${1:-switch}" host="${2:-nuc}" target="${3:-c3h@$host.c3h}" if ! [ -d "hosts/$host" ] then echo "Host $host does not exist. Choose from:" ls hosts exit fi echo "deploying $host to $target" sleep 1 tmp=$(mktemp -d) trap 'rm -rf "$tmp"' EXIT sources="$tmp/sources" cp -r $(nix-build nix/sources-dir.nix --no-out-link) $tmp/sources set -x system_drv=$(nix-instantiate "" -A config.system.build.toplevel -I $sources -I "nixos-config=$PWD/hosts/$host/configuration.nix") nix-copy-closure --to $target $system_drv system=$(ssh $target "nix-store --realise $system_drv") ssh $target "sudo nix-env -p /nix/var/nix/profiles/system -i $system && sudo /nix/var/nix/profiles/system/bin/switch-to-configuration $mode"