#!/usr/bin/env bash # A wrapper for 'nh' that runs 'git pull' and 'git push' on success. # Exit immediately if a command exits with a non-zero status. set -e # Determine the absolute path of the directory containing this script. SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) # The repository root is one level above the scripts directory. REPO_ROOT="$SCRIPT_DIR/.." # --- Git Operations --- echo "Pulling latest changes from git..." # Use -C to specify the repository path for git operations. git -C "$REPO_ROOT" pull # --- Snapshot Creation (Laptop only) --- if [ "$(hostname)" = "nixos" ]; then echo "Creating Btrfs snapshots for /nix and /home..." sudo btrfs subvolume snapshot -r /nix "/snapshots/nix_$(date +%Y-%m-%d_%H%M)" sudo btrfs subvolume snapshot -r /home "/snapshots/home_$(date +%Y-%m-%d_%H%M)" echo "Snapshots created." fi # --- NixOS Build --- echo "Building NixOS configuration..." # Use --flake to specify the flake path. nh os switch ".#$@" # --- Git Push on Success --- echo "NixOS rebuild successful. Pushing to remote..." git -C "$REPO_ROOT" push echo "Push complete."