2026-07-18 09:21:51 -04:00
|
|
|
#!/usr/bin/env bash
|
2026-08-08 21:20:27 -04:00
|
|
|
# Rebuild nix-darwin + home-manager. Rotates stale home-manager *.backup files
|
|
|
|
|
# so a second switch never fails with "would be clobbered".
|
2026-07-18 09:21:51 -04:00
|
|
|
set -euo pipefail
|
|
|
|
|
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)"
|
|
|
|
|
ln -sfn "$DIR" ~/.dotfiles
|
2026-08-08 21:20:27 -04:00
|
|
|
|
|
|
|
|
stamp="$(date +%Y%m%d-%H%M%S)"
|
|
|
|
|
# Paths home-manager manages via home.file (regular files become out-of-store symlinks).
|
|
|
|
|
managed=(
|
|
|
|
|
"$HOME/.grok/config.toml"
|
|
|
|
|
"$HOME/.grok/AGENTS.md"
|
|
|
|
|
"$HOME/.claude/settings.json"
|
|
|
|
|
"$HOME/.claude/CLAUDE.md"
|
|
|
|
|
"$HOME/.codex/AGENTS.md"
|
|
|
|
|
"$HOME/.config/opencode/AGENTS.md"
|
2026-09-18 13:58:49 -04:00
|
|
|
"$HOME/.config/opencode2/opencode.json"
|
|
|
|
|
"$HOME/.config/opencode2/AGENTS.md"
|
|
|
|
|
"$HOME/.local/bin/oc2"
|
2026-08-08 21:20:27 -04:00
|
|
|
"$HOME/.pi/agent/settings.json"
|
|
|
|
|
"$HOME/.pi/agent/models.json"
|
|
|
|
|
"$HOME/.pi/agent/AGENTS.md"
|
|
|
|
|
"$HOME/.pi/agent/extensions/terminal-status-title.js"
|
|
|
|
|
)
|
|
|
|
|
for path in "${managed[@]}"; do
|
|
|
|
|
bak="${path}.backup"
|
|
|
|
|
if [ -e "$bak" ] || [ -L "$bak" ]; then
|
|
|
|
|
mv "$bak" "${bak}.${stamp}"
|
|
|
|
|
echo "rotated stale backup: ${bak} -> ${bak}.${stamp}"
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
# Directory targets use the same backup suffix on collision.
|
|
|
|
|
for path in \
|
|
|
|
|
"$HOME/.config/wezterm" \
|
|
|
|
|
"$HOME/.config/nvim" \
|
|
|
|
|
"$HOME/.config/herdr" \
|
|
|
|
|
"$HOME/.pi/agent/themes" \
|
|
|
|
|
"$HOME/.pi/agent/extensions/calm"
|
|
|
|
|
do
|
|
|
|
|
bak="${path}.backup"
|
|
|
|
|
if [ -e "$bak" ] || [ -L "$bak" ]; then
|
|
|
|
|
mv "$bak" "${bak}.${stamp}"
|
|
|
|
|
echo "rotated stale backup: ${bak} -> ${bak}.${stamp}"
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
|
2026-07-18 09:21:51 -04:00
|
|
|
exec sudo darwin-rebuild switch --flake ~/.dotfiles#lt-mbp
|