#!/usr/bin/env bash

# Nnomarchy Update Script
# 1. Updates the flake inputs in /etc/nixos
# 2. Applies system-wide NixOS changes
# 3. Applies user-level Home Manager changes

set -e

REPO_DIR="/etc/nixos"

if [ ! -d "$REPO_DIR" ]; then
    echo "Error: $REPO_DIR not found. Are you running on a Nnomarchy system?"
    exit 1
fi

echo "--- Starting Nnomarchy Update ---"

# 1. Update Flake Lock
echo "Updating flake inputs..."
sudo nix --extra-experimental-features "nix-command flakes" flake update --flake "$REPO_DIR"

# 2. Rebuild System
echo "Applying system-level updates..."
sudo nixos-rebuild switch --flake "$REPO_DIR#default" --impure

# 3. Rebuild Home Environment
echo "Applying user-level updates..."
home-manager switch --flake "$REPO_DIR#default" --impure

# 4. Commit changes if it's a git repo
if [ -d "$REPO_DIR/.git" ]; then
    echo "Committing update to local history..."
    sudo git -C "$REPO_DIR" add flake.lock
    sudo git -C "$REPO_DIR" commit -m "chore: update system (flake.lock)" || echo "No lockfile changes to commit."
fi

echo "--- Nnomarchy Update Complete ---"
