Añade chezmoi-boot-sync.service (aplica la config respaldada al arrancar, vía chezmoi update) y chezmoi-shutdown-sync.service (re-add + commit + push al cerrar sesión/apagar, usando el truco de ExecStop en un servicio oneshot con RemainAfterExit). Ambos a nivel de usuario, sin depender de sudo. run_once_after_enable-chezmoi-sync-linger.sh habilita 'loginctl enable-linger' automáticamente en cualquier máquina nueva donde se aplique este repo, para que la instancia systemd --user (y por tanto ambos servicios) sobreviva al logout y arranque con el sistema. El remoto origin pasó de SSH a HTTPS: el push automático desde un servicio systemd no tiene acceso al agente SSH (Bitwarden) de la sesión interactiva, así que usa el token cacheado por credential.helper=store en su lugar. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
31 lines
779 B
Bash
31 lines
779 B
Bash
#!/usr/bin/env bash
|
|
# Respalda al cerrar sesión/apagar todo lo que chezmoi ya tiene rastreado.
|
|
# Solo re-sincroniza rutas YA gestionadas (chezmoi re-add), nunca añade
|
|
# rutas nuevas por su cuenta -- eso evita que algo sensible se cuele solo.
|
|
set -uo pipefail
|
|
|
|
LOG="$HOME/.local/share/chezmoi-sync.log"
|
|
mkdir -p "$(dirname "$LOG")"
|
|
exec >>"$LOG" 2>&1
|
|
|
|
echo "=== shutdown-sync $(date -Iseconds) ==="
|
|
|
|
SRC="$HOME/.local/share/chezmoi"
|
|
cd "$SRC" || exit 0
|
|
|
|
chezmoi re-add
|
|
git add -A
|
|
|
|
if git diff --cached --quiet; then
|
|
echo "sin cambios que respaldar"
|
|
exit 0
|
|
fi
|
|
|
|
git commit -m "Auto-backup $(date '+%Y-%m-%d %H:%M')"
|
|
|
|
if timeout 20 git push origin main; then
|
|
echo "push OK"
|
|
else
|
|
echo "push falló (¿sin red?), el commit queda en local para el próximo intento"
|
|
fi
|