#!/usr/bin/env bash # NixOS Deployment Helper Script # Usage: ./deploy.sh [branch] [action] # Example: ./deploy.sh uConsole feat/test switch set -e HOSTNAME="${1:-}" BRANCH="${2:-main}" ACTION="${3:-switch}" if [ -z "$HOSTNAME" ]; then echo "Usage: $0 [branch] [action]" echo " hostname: lazyworkhorse, cyt-pi, uConsole" echo " branch: git branch to deploy (default: main)" echo " action: switch, test, boot (default: switch)" exit 1 fi # Environment setup export GIT_SSH_COMMAND="ssh -i /opt/data/home/.ssh/id_hermes_gitea -o StrictHostKeyChecking=no" export PATH="/nix/var/nix/profiles/default/bin:$PATH" cd /opt/data/infra echo "=== NixOS Deployment ===" echo "Host: $HOSTNAME" echo "Branch: $BRANCH" echo "Action: $ACTION" echo "" # Checkout branch echo "[1/4] Checking out branch..." git fetch origin "$BRANCH" 2>/dev/null || true git checkout "$BRANCH" 2>/dev/null || git checkout -b "$BRANCH" # Update submodules echo "[2/4] Updating submodules..." git submodule update --init --recursive # Build configuration echo "[3/4] Building configuration..." if [ "$ACTION" = "switch" ]; then nixos-rebuild switch --flake ".#$HOSTNAME" --target-host "thierry@$HOSTNAME" --use-remote-sudo elif [ "$ACTION" = "test" ]; then nixos-rebuild test --flake ".#$HOSTNAME" --target-host "thierry@$HOSTNAME" --use-remote-sudo elif [ "$ACTION" = "boot" ]; then nixos-rebuild boot --flake ".#$HOSTNAME" --target-host "thierry@$HOSTNAME" --use-remote-sudo else echo "Unknown action: $ACTION" exit 1 fi echo "" echo "[4/4] Deployment complete!" echo "Host: $HOSTNAME" echo "Branch: $BRANCH" echo "Time: $(date -Iseconds)"