59 lines
1.6 KiB
Bash
59 lines
1.6 KiB
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
# NixOS Deployment Helper Script
|
||
|
|
# Usage: ./deploy.sh <hostname> [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 <hostname> [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)"
|