#!/usr/bin/env bash

# Nomarchy Environment Update Script
# 1. Runs the pre-flight state migration
# 2. Applies user-level Home Manager changes (Standalone)

set -e

# Detect the repository location
if [ -f "/etc/nixos/flake.nix" ]; then
    REPO_DIR="/etc/nixos"
elif [ -f "/etc/nomarchy/flake.nix" ]; then
    REPO_DIR="/etc/nomarchy"
else
    echo "Error: Nomarchy flake repository not found in /etc/nixos or /etc/nomarchy."
    exit 1
fi

# Use the pre-flight migration script to ensure the state is synced before evaluation
if command -v nomarchy-preflight-migration >/dev/null 2>&1; then
    nomarchy-preflight-migration
fi

# Apply Home Manager changes from the local flake (Standalone).
# On a freshly-installed system where the installer's HM activation failed,
# `home-manager` won't be on PATH yet — fall back to `nix run` so this
# script can recover the install instead of erroring on a missing binary.
echo "Applying user-level changes from $REPO_DIR#$USER..."
if command -v home-manager >/dev/null 2>&1; then
    home-manager switch --flake "$REPO_DIR#$USER" --impure
else
    nix --extra-experimental-features 'nix-command flakes' \
        run 'home-manager/release-25.11' \
        -- switch --flake "$REPO_DIR#$USER" --impure
fi

echo "Environment update complete."
