#!/usr/bin/env bash set -xeuo pipefail SYSTEM="$1" REMOTE_HOST="$2" REMOTE_ROOT="$3" nix copy "${SYSTEM}" --to "ssh://${REMOTE_HOST}?remote-store=${REMOTE_ROOT}" ssh "${REMOTE_HOST}" -- nix-env --store "${REMOTE_ROOT}" -p "${REMOTE_ROOT}/nix/var/nix/profiles/system" --set "${SYSTEM}" ssh "${REMOTE_HOST}" -- mkdir -p "${REMOTE_ROOT}/tmp" TMPSH="$(ssh "${REMOTE_HOST}" -- mktemp -p "${REMOTE_ROOT}/tmp")" # shellcheck disable=SC2087 ssh "${REMOTE_HOST}" -- tee "${TMPSH}" <<EOF #!/usr/bin/env bash set -euo pipefail nix-env --store "${REMOTE_ROOT}" -p "${REMOTE_ROOT}/nix/var/nix/profiles/system" --set "${SYSTEM}" mkdir -m 0775 -p "${REMOTE_ROOT}/etc" touch "${REMOTE_ROOT}/etc/NIXOS" ln -sfn /proc/mounts "${REMOTE_ROOT}/etc/mtab" NIXOS_INSTALL_BOOTLOADER=1 nixos-enter --root "${REMOTE_ROOT}" -c "/run/current-system/bin/switch-to-configuration boot" EOF ssh "${REMOTE_HOST}" -- bash "${TMPSH}"