about summary refs log tree commit diff
path: root/ops/terraform/deploy-nixos/nixos-copy.sh
blob: 449002bbe512b41f7b2f527461623f799883b50d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/usr/bin/env bash
#
# Copies a NixOS system to a target host, using the provided key,
# or whatever ambient key is configured if the key is not set.
set -ueo pipefail

export NIX_SSHOPTS="\
    -o StrictHostKeyChecking=no\
    -o UserKnownHostsFile=/dev/null\
    -o GlobalKnownHostsFile=/dev/null"

# If DEPLOY_KEY was passed, write it to $scratch/id_deploy
if [ -n "${DEPLOY_KEY-}" ]; then
  scratch="$(mktemp -d)"
  trap 'rm -rf -- "${scratch}"' EXIT

  echo -n "$DEPLOY_KEY" > $scratch/id_deploy
  chmod 0600 $scratch/id_deploy
  export NIX_SSHOPTS="$NIX_SSHOPTS -o IdentityFile=$scratch/id_deploy"
fi

nix-copy-closure \
  --to ${TARGET_USER}@${TARGET_HOST} \
  ${SYSTEM_DRV} \
  --gzip \
  --include-outputs \
  --use-substitutes