Añade pkgsync: sincronización de paquetes entre máquinas (mismo patrón que chezmoi)

Nuevo pkgsync/pkgsync.sh + servicios systemd --user (push al cerrar sesión,
pull+diff+notifica al iniciar sesión, sin aplicar cambios solo) usando
metapac como motor de diff/aplicación sobre los arrays de
packages-common.sh. Lista de paquetes críticos protegidos de borrado
automático, fichero de overrides local para divergencias entre máquinas, y
comandos de introspección (diff/log/incoming/audit).

De paso, grub/efibootmgr y los drivers gráficos pasan de estar hardcodeados
en cada <de>/setup.sh a vivir en PACMAN_COMMON, para que pkgsync pueda
declararlos y protegerlos.
This commit is contained in:
Josevi
2026-08-18 10:46:23 +02:00
parent f19b6f0f93
commit c074095d68
7 changed files with 632 additions and 6 deletions
+26
View File
@@ -37,6 +37,13 @@ PACMAN_COMMON=(
linux linux-lts linux-lts-headers linux-firmware
# rollback de actualizaciones atómicas sobre btrfs
snapper snap-pac grub-btrfs
# bootloader (antes hardcodeado en cada <de>/setup.sh, install_bootloader()
# también los instala explícito -- duplicado inofensivo con --needed, pero
# ahora viven aquí para que pkgsync pueda declararlos/protegerlos)
grub efibootmgr
# drivers gráficos open-source (antes hardcodeados en cada <de>/setup.sh;
# mismo hardware físico en ambas máquinas, ver PROJECT_CONTEXT.md)
mesa vulkan-icd-loader vulkan-radeon vulkan-intel intel-media-driver
)
# --- Flatpak ---------------------------------------------------------------
@@ -162,6 +169,25 @@ install_flatpaks() {
return 0
}
# pkgsync: sincroniza qué paquetes hay instalados (pacman+AUR+flatpak) entre
# las dos máquinas, igual que chezmoi sincroniza los dotfiles. Instala metapac
# (motor de diff/aplicación), despliega pkgsync.sh y sus dos servicios de
# usuario, y deja el group file de metapac listo. Ver pkgsync/ en este repo.
install_pkgsync() {
echo ">> Instalando pkgsync (metapac + servicios de sincronización de paquetes)..."
install_aur metapac
as_user "mkdir -p ~/.local/bin ~/.config/systemd/user ~/.config/metapac/groups"
as_user "cp '$REPO_DIR/pkgsync/pkgsync.sh' ~/.local/bin/pkgsync.sh && chmod +x ~/.local/bin/pkgsync.sh"
as_user "cp '$REPO_DIR/pkgsync/systemd/'*.service ~/.config/systemd/user/"
as_user "~/.local/bin/pkgsync.sh bootstrap"
as_user "systemctl --user enable pkgsync-push.service pkgsync-pull.service"
# ya lo activa el run_once de chezmoi, pero por si este DE se instala algún
# día sin chezmoi: idempotente, no hace nada si ya está activo.
loginctl enable-linger "$INSTALL_USER" 2>/dev/null || true
}
# Configura snapper + snap-pac + grub-btrfs para rollback de actualizaciones.
# snap-pac crea snapshots automaticos antes/después de cada 'pacman -Syu'.
# grub-btrfs añade las entradas de snapshots al menú de GRUB.