Detectado en real en Vampire-HM80: los 3 paquetes de rollback btrfs estaban
declarados e instalados, pero grub-btrfsd moría con exit 1 porque pacman
--needed no arrastra dependencias opcionales. Sin inotify-tools el daemon
nunca regenera el grub.cfg con los snapshots -- toda la red de seguridad de
rollback quedaba muda en silencio.
Un StartServiceByName de D-Bus atascado hizo que notify-send se colgara,
comiéndose el TimeoutStartSec=60 del servicio systemd y matándolo (probado
en la máquina real). Acotado a 5s como los git ls-remote/clone/pull.
trap RETURN persiste entre retornos de función en bash, no solo el de la
función que lo puso: al volver de compute_diff/cmd_push/cmd_audit hacia
arriba en la pila, volvía a dispararse sobre un $work ya fuera de scope
('work: variable sin asignar' bajo set -u). Cambiado a rm -rf explícito en
cada punto de salida.
DavMail se desinstaló del sistema; ya no debía aparecer en la lista de apps.
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.
- Añade linux-lts como kernel fallback en archinstall (GNOME/KDE).
- Implementa snapper + snap-pac + grub-btrfs para rollback de actualizaciones.
- Configura snapshots solo en operaciones de pacman (timeline deshabilitado).
- Sincroniza PACMAN_COMMON/AUR_COMMON con la máquina maestra.
- Añade FLATPAK_COMMON para Heroic, Karere y Buffer.
- Elimina paquetes no presentes: obsidian, davmail, karere, heroic-games-launcher-bin.
- Añade packagekit-qt6 y kwin-decoration-sierra-breeze-enhanced-git en KDE.
- Actualiza PROJECT_CONTEXT.md con la nueva arquitectura.
- ksshaskpass: ssh-add helper vía kwallet, instalado a mano hoy (03/08).
- kwin-effects-glass-git: efecto de cristal para kwin, mismo día, junto al
resto de efectos de blur ya trackeados.
packagekit-qt6 sigue instalado en esta máquina pero se deja fuera del script
a propósito: la decisión de quitarlo (commit 4cb89eb) sigue vigente, es solo
resto de antes de esa limpieza.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- vim, usbutils, gvfs-mtp, chezmoi (ya en repos oficiales, fuera de AUR),
kdegraphics-thumbnailers, breeze-enhanced, yin-yang, heroic-games-launcher-bin.
- Quita discover/packagekit-qt6 de kde/setup.sh: ya no se usan, pamac-all es
el único gestor gráfico.
- claude-code sale de AUR_COMMON (se desincroniza) y pasa a instalador nativo
oficial vía install_claude_code() en shared/packages-common.sh, llamado
desde ambos setup.sh.
- Karere se queda en AUR_COMMON tal cual pese a que en la práctica corre por
Flatpak en esta máquina (el build de AUR es inestable, ver comentario ya
existente en install_aur); Heroic pasa a AUR (tenía alternativa estable).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Se había dejado fuera por contradecir el "AUR-first, resto por paru" de los
comentarios, pero esta máquina es la fuente de verdad: si está instalado y
funcionando aquí, se replica tal cual.
capture-kde.sh no incluia ~/.local/share/plasma/plasmoids, asi que los
widgets de KDE Store/GitHub (no estan en AUR) nunca llegaban al repo de
dotfiles y el panel quedaba con huecos vacios. Anadido a la allowlist +
nota en setup.sh de que van por chezmoi, no por AUR.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
kde/setup.sh instala plasma6-themes-layan-git, tela-icon-theme y
layan-cursor-theme-git (a /usr/share, sin vendorizar binarios). El look
capturado (rc files, splash Animated-Abstract-Cube) ya va por chezmoi
en arch-configs, ver shared/capture-kde.sh. README actualizado: KDE ya
no es Catppuccin+Papirus, diverge de GNOME (Layan+Tela). También
arregla un bug de capture-kde.sh (hostname -> uname -n).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Añade a los scripts lo que llevaba usando semanas sin estar versionado
(kdeconnect, kinfocenter, sddm-kcm, guvcview, kvirc, hunspell es/en,
plasma6-applets-panel-colorizer, kwin-effects-better-blur-dx). Quita
input-remapper-git de AUR_COMMON: decidido no instalarlo por defecto.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
El Plasma curado no incluía la integración de Bluetooth, así que el
módulo en Preferencias del Sistema y el applet de bandeja no aparecían
pese a tener bluez + servicio activos. GNOME no se ve afectado: su UI
llega vía gnome-control-center.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
tee de pacman/paru/chezmoi a un log dentro del sistema nuevo (persiste al
reinicio) para revisar fallos AUR después del primer arranque.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- KDE: discover + packagekit-qt6 (tienda; backend flatpak ya vía flatpak)
- as_user exporta RUSTUP_HOME/CARGO_HOME: paquetes Rust (karere) no intentan
escribir /root/.rustup bajo el fakeroot de makepkg
- install_aur instala uno a uno: un PKGBUILD roto ya no tumba el lote ni chezmoi
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- bluez/bluez-utils + bluetooth.service en GNOME y KDE
- AUR: añade karere (cliente WhatsApp), quita neochat (Matrix) de KDE
- KDE sin personalización: fuera temas Catppuccin/Klassy, SDDM y firstboot-theme
- shared/capture-kde.sh: vuelca config portable + paquetes del portátil para
replicar la base (single-monitor; excluye kscreen hardware-specific)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
parted marca como misaligned las particiones cuyo final no cae en la rejilla
de 1 MiB. En la VM los discos miden GiB exactos y el final encaja; en hardware
real el tamano no es multiplo de MiB (p.ej. 250_059_350_016 B), asi que
terminar en total-1MiB dejaba la particion fuera de rejilla.
usable_end() redondea el final hacia abajo a MiB (se pierden <2 MiB). Aplica a
/ (btrfs) y a /home. Los starts ya estaban en rejilla. Cubre cualquier sector
size. Anade casos al --selftest.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
La regla de "2 discos" contaba el USB instalador (sdb) como segundo disco
y asumia que el sistema era nvme0n1. Un portatil con SSD PCIe enumera como
sda, asi que ni el nombre fijo ni el conteo de discos servian.
Ahora gen-disk-config.py filtra por RM=0 (no removible): el USB y el ISO
quedan fuera. Sistema = 1er disco fijo (nvme primero), /home = 2o si existe.
Override manual con args. Anade --selftest.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Si /dev/sda no existe (portátil de 1 disco), se omite y /home queda
dentro del btrfs raíz. Con dos discos, comportamiento de siempre.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Tras iterar en la VM, se hornea en el instalador:
- AUR: kvantum-theme-catppuccin, catppuccin-cursors-mocha, catppuccin-konsole,
papirus-folders-catppuccin, catppuccin-sddm-theme-mocha (+ kvantum del repo).
- Root (chroot): tema SDDM catppuccin-mocha-blue y recoloreo de carpetas Papirus.
- Oneshot primer login: cursor Catppuccin, estilo Qt=Kvantum (Catppuccin Mocha
Blue), perfil Konsole Catppuccin, botones de ventana a la izquierda (macOS), y
layout macOS por Plasma scripting (barra superior con menú global + dock
inferior flotante con apps clavadas). Sustituye el hack del pin de Discover.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Añade catppuccin-gtk-theme-mocha (apps GTK como GIMP siguen Catppuccin) y
escribe gtk-3.0/4.0 settings.ini en el oneshot.
- Quita el curl del .colors (URL 404; ahora lo provee chezmoi).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
El panel por defecto de Plasma clava org.kde.discover.desktop, que no se
instala en el setup mínimo -> icono en blanco que da error al pulsar. El
oneshot de tema fija lanzadores limpios (dolphin+konsole) en el gestor de
tareas, localizando su applet dinámicamente.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Mismo enfoque que GNOME mínimo: se quita el profile_config (archinstall solo
base) y kde/setup.sh instala un Plasma curado (plasma-desktop, sddm, plasma-pa,
plasma-nm, powerdevil, kscreen, systemsettings, konsole, dolphin, kate, ark,
spectacle, kcalc, gwenview, okular) + drivers open-source, y habilita sddm.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
El perfil GNOME de archinstall instala el grupo 'gnome' completo (Maps,
Weather, Music, Tour, Web/Epiphany, Contacts, Rygel...). Se quita el
profile_config: archinstall instala solo la base, y gnome/setup.sh pone una
lista curada (gnome-shell, gdm, control-center, nautilus, console, text-editor,
calculator, loupe, tweaks) + drivers gráficos open-source (mesa/vulkan) y
habilita gdm. KDE pendiente del mismo tratamiento.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
El .INSTALL que genera debtap tiene un error de sintaxis y no registra el
lanzador, que queda en /opt/HelpWire/Operator/desktop. Lo copiamos a
/usr/share/applications e icons/hicolor para que aparezca en el menú.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
systemctl enable --global (servicio de usuario) depende del login gráfico
y a menudo no arranca; syncthing@$INSTALL_USER lo levanta al boot y escucha
en 127.0.0.1:8384. Sin el silenciado para que un fallo se vea.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
archinstall 4.3 instala el paquete grub y detecta la ESP, pero no ejecuta
grub-install/grub-mkconfig con el esquema /boot ext4 separado + ESP, dejando
el sistema sin bootloader. Nuevo helper install_bootloader() en shared, que
ambos setup.sh llaman tras los paquetes pacman.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- disk_config: archinstall 4.3 cambió el schema (exige sector_size, sin
unidad Percent). Nuevo shared/gen-disk-config.py genera el layout con los
modelos de archinstall, dimensionado al disco real; ambos setup.sh lo
invocan y se quita el disk_config 3.0 muerto de los JSON.
- paru: compilar de fuente, no paru-bin (su binario enlaza contra una
libalpm.so concreta y rompe si la del sistema nuevo difiere).
- rustup default stable antes de compilar paru (si no, no hay cargo).
- helpwire: debtap nombra el paquete 'helpwire', no 'helpwire-operator';
convertir en dir limpio e instalar el único .zst.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>