#!/usr/bin/env nix-shell
#!nix-shell -i zsh -p zsh -p nix

set -e
set -u
set -o pipefail

source $DOTFILES_PATH/bin/lib/util.zsh

cmdname=$(basename $0)
usage() {
  print "Usage: $cmdname <via_host> <hostname>" >&2
}

if [[ $# -ge 1 ]]
then
  if [ "$1" = "--help" -o "$1" = "-h" ]
  then
      usage
      exit 0
  fi
fi

if [ $# -ne 2 ]
then
  print "Invalid number of arguments." >&2
  usage
  exit 2
fi

via_host="$1"
hostname="$2"


nixos_system_file=$MACHINES_PATH/nixos.nix

local_temp_dir=$(mktemp --tmpdir --directory install-via.XXXXXXXXXX)
trap "rm -rf $local_temp_dir" EXIT INT HUP TERM

print_info "Building target system configuration..."
nix build --file "$nixos_system_file" --argstr hostname "$hostname" --out-link "$local_temp_dir/nixos-config-$hostname"

print_info "Deploying target system configuration..."
nix copy --file "$nixos_system_file" --argstr hostname "$hostname" --to ssh://root@$via_host
nixos_config_path=$(realpath "$local_temp_dir/nixos-config-$hostname")

ssh root@$via_host "nixos-install --system $nixos_config_path && sync"
ssh root@$via_host mkdir --mode u=rwx,g=,o= --parents /mnt/etc/secrets/passwords

# TODO: get host-specific password
#scp -r notThePassword root@$via_host:/mnt/etc/secrets/passwords/root
#scp -r notThePassword root@$via_host:/mnt/etc/secrets/passwords/jens

ssh root@$via_host sync

print_info "Installation completed"