#!/usr/bin/env bash set -euo pipefail HOST="${1:-ops-jrz1}" repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" cd "$repo_root" echo "== Local working tree ==" git status -sb echo echo "== Commits ahead of origin/main ==" if git rev-parse --verify origin/main >/dev/null 2>&1; then git log --oneline origin/main..HEAD || true else echo "origin/main not found (run: git fetch origin)" fi echo echo "== Local HEAD ==" local_head="$(git rev-parse HEAD)" echo "$local_head" echo echo "== Remote configuration revision ($HOST) ==" remote_rev="$(ssh "root@${HOST}" 'nixos-version --configuration-revision' || true)" if [[ -z "$remote_rev" || "$remote_rev" == "" ]]; then echo "(empty)" else echo "$remote_rev" fi echo echo "== Comparison ==" if [[ -n "$remote_rev" && "$remote_rev" == "$local_head" ]]; then echo "OK: remote matches local HEAD" else echo "NOTE: remote does not match local HEAD" echo "Remote: ${remote_rev:-}" echo "Local: $local_head" fi echo echo "== Remote current system ==" ssh "root@${HOST}" 'readlink /run/current-system' echo echo "== Musiclink local repo HEAD ==" musiclink_repo="/home/dan/proj/musiclink" if [[ -d "$musiclink_repo/.git" ]]; then git -C "$musiclink_repo" rev-parse HEAD else echo "(missing $musiclink_repo)" fi echo echo "== Musiclink flake.lock rev ==" python3 - <<'PY' import json from pathlib import Path lock_path = Path("flake.lock") try: data = json.loads(lock_path.read_text()) rev = data["nodes"]["musiclink"]["locked"].get("rev") print(rev or "(missing rev)") except Exception as exc: print(f"(error reading flake.lock: {exc})") PY echo echo "== Musiclink running ExecStart ==" ssh "root@${HOST}" 'systemctl show -p ExecStart musiclink --value'