#!/bin/sh
set -e

REMOTE_STORE=/var/lib/harmonia
SSH_HOST="harmonia@object-ctr.ams1.int.nul.ie"
SSH_KEY=/tmp/harmonia.key
STORE_URI="ssh-ng://$SSH_HOST?ssh-key=$SSH_KEY&remote-store=$REMOTE_STORE"

remote_cmd() {
  ssh -i "$SSH_KEY" "$SSH_HOST" env HOME=/run/harmonia NIX_REMOTE="$REMOTE_STORE" "$@"
}

collect_garbage() {
  echo "Collecting garbage..."
  remote_cmd nix-collect-garbage --delete-older-than 60d
}

umask_old=$(umask)
umask 0066
echo "$HARMONIA_SSH_KEY" | base64 -d > "$SSH_KEY"
umask $umask_old

mkdir -p ~/.ssh
cp ci/known_hosts ~/.ssh/

if [ "${1-}" = "--gc" ]; then
  collect_garbage
  exit
fi

path="$1"

echo "Pushing $path to cache..."
nix copy --no-check-sigs --to "$STORE_URI" "$path"

if [ -n "$UPDATE_PROFILE" ]; then
  echo "Updating profile..."
  remote_cmd nix-env -p "$REMOTE_STORE"/nix/var/nix/profiles/nixfiles --set "$path"

  collect_garbage
fi
