#!/bin/sh set -eu NAME="${1:-}" if [ -z "$NAME" ]; then printf 'Missing hostname\n' >&2 exit 2 fi FILE="$(find . -name hostname.txt -exec grep -l "$NAME" {} \;)" if [ -z "$FILE" ]; then printf 'Unknown hostname "%s"\n' "$NAME" >&2 exit 2 fi DIR="$(dirname "$FILE")" terraform apply "$DIR" TLD="$(cat "$DIR"/tld.txt)" DIRS='/opt /srv' # shellcheck disable=2029 ssh "$TLD" "\ sudo mkdir -p $DIRS && \ sudo chown $USER:users -R $DIRS && \ chmod -R 755 $DIRS" rsync -avzP opt "$TLD":/ if [ -f "$DIR"/machines.scm ]; then guix deploy "$DIR"/machines.scm elif [ -f "$DIR"/configuration.nix ]; then scp "$DIR"/configuration.nix "$TLD":/etc/nixos/ ssh "$TLD" sudo nixos-rebuild switch else printf 'Uknown OS type of "%s"\n' "$NAME" >&2 exit 2 fi