#!/usr/bin/env bash # Migration script: move Ava data from _/var/ava to /home/ava # # Run this ONCE after deploying the NixOS config with the new ava user. # # Usage: # sudo ./migrate-ava.sh # # This script: # 1. Copies existing data from _/var/ava to /home/ava # 2. Copies memory.db from ben's .local to ava's .local # 3. Clones the omni repo into /home/ava/omni # 4. Sets proper ownership set -euo pipefail GRN='\033[0;32m' YLW='\033[0;33m' RED='\033[0;31m' NC='\033[0m' OMNI_REPO="/home/ben/omni" AVA_HOME="/home/ava" OLD_DATA_ROOT="$OMNI_REPO/_/var/ava" echo -e "${YLW}=== Ava Migration Script ===${NC}" # Check we're running as root if [[ $EUID -ne 0 ]]; then echo -e "${RED}Error: This script must be run as root${NC}" exit 1 fi # Check ava user exists if ! id ava &>/dev/null; then echo -e "${RED}Error: ava user does not exist. Deploy the NixOS config first.${NC}" exit 1 fi # Create directory structure (tmpfiles should handle this, but just in case) echo -e "${YLW}Creating directory structure...${NC}" mkdir -p "$AVA_HOME"/{skills,outreach,users,omni,.local/share/omni} mkdir -p "$AVA_HOME"/outreach/{pending,approved,rejected,sent} # Copy skills if [[ -d "$OLD_DATA_ROOT/skills" ]]; then echo -e "${YLW}Copying skills...${NC}" rsync -av --progress "$OLD_DATA_ROOT/skills/" "$AVA_HOME/skills/" else echo -e "${YLW}No skills to migrate${NC}" fi # Copy outreach if [[ -d "$OLD_DATA_ROOT/outreach" ]]; then echo -e "${YLW}Copying outreach data...${NC}" rsync -av --progress "$OLD_DATA_ROOT/outreach/" "$AVA_HOME/outreach/" else echo -e "${YLW}No outreach data to migrate${NC}" fi # Copy memory.db if it exists BEN_MEMORY="/home/ben/.local/share/omni/memory.db" AVA_MEMORY="$AVA_HOME/.local/share/omni/memory.db" if [[ -f "$BEN_MEMORY" ]]; then echo -e "${YLW}Copying memory database...${NC}" cp -v "$BEN_MEMORY" "$AVA_MEMORY" else echo -e "${YLW}No memory.db found at $BEN_MEMORY${NC}" fi # Clone or update the omni repo if [[ -d "$AVA_HOME/omni/.git" ]]; then echo -e "${YLW}Omni repo already exists, updating...${NC}" cd "$AVA_HOME/omni" sudo -u ava git fetch origin else echo -e "${YLW}Cloning omni repo...${NC}" sudo -u ava git clone "$OMNI_REPO" "$AVA_HOME/omni" fi # Set ownership echo -e "${YLW}Setting ownership...${NC}" chown -R ava:users "$AVA_HOME" # Show summary echo "" echo -e "${GRN}=== Migration Complete ===${NC}" echo "" echo "Directory structure:" ls -la "$AVA_HOME" echo "" echo "Next steps:" echo "1. Create /run/secrets/ava.env with:" echo " TELEGRAM_BOT_TOKEN=xxx" echo " OPENROUTER_API_KEY=xxx" echo " KAGI_API_KEY=xxx (optional)" echo " ALLOWED_TELEGRAM_USER_IDS=xxx (or * for all)" echo "" echo "2. Stop the tmux Ava process" echo "3. Start the systemd service: sudo systemctl start ava" echo "4. Watch logs: journalctl -u ava -f" echo "5. Enable on boot: sudo systemctl enable ava"