feat: rollback btrfs + kernel LTS + sync paquetes/flatpaks

- 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.
This commit is contained in:
Josevi
2026-08-13 17:11:49 +02:00
parent f87c2c08ce
commit f19b6f0f93
5 changed files with 103 additions and 14 deletions
+2 -1
View File
@@ -4,7 +4,8 @@
"bootloader": "Grub", "bootloader": "Grub",
"hostname": "arch-gnome", "hostname": "arch-gnome",
"kernels": [ "kernels": [
"linux" "linux",
"linux-lts"
], ],
"ntp": true, "ntp": true,
"swap": true, "swap": true,
+6
View File
@@ -71,6 +71,9 @@ install_pacman "${PACMAN_COMMON[@]}" \
echo ">> Bootloader (GRUB)..." echo ">> Bootloader (GRUB)..."
install_bootloader install_bootloader
echo ">> Configurando rollback de actualizaciones (snapper)..."
configure_btrfs_rollback
echo ">> Bootstrapeando paru y paquetes AUR..." echo ">> Bootstrapeando paru y paquetes AUR..."
bootstrap_paru bootstrap_paru
install_aur "${AUR_COMMON[@]}" \ install_aur "${AUR_COMMON[@]}" \
@@ -83,6 +86,9 @@ install_aur "${AUR_COMMON[@]}" \
install_helpwire install_helpwire
install_claude_code install_claude_code
echo ">> Instalando Flatpaks comunes..."
install_flatpaks "${FLATPAK_COMMON[@]}"
echo ">> Servicios..." echo ">> Servicios..."
systemctl enable gdm systemctl enable gdm
systemctl enable NetworkManager systemctl enable NetworkManager
+2 -1
View File
@@ -4,7 +4,8 @@
"bootloader": "Grub", "bootloader": "Grub",
"hostname": "arch-kde", "hostname": "arch-kde",
"kernels": [ "kernels": [
"linux" "linux",
"linux-lts"
], ],
"ntp": true, "ntp": true,
"swap": true, "swap": true,
+11 -3
View File
@@ -67,12 +67,17 @@ install_pacman "${PACMAN_COMMON[@]}" \
konsole dolphin kate ark spectacle kcalc gwenview okular kdeconnect kdegraphics-thumbnailers \ konsole dolphin kate ark spectacle kcalc gwenview okular kdeconnect kdegraphics-thumbnailers \
plasma-systemmonitor \ plasma-systemmonitor \
adwaita-fonts \ adwaita-fonts \
mesa vulkan-icd-loader vulkan-radeon vulkan-intel intel-media-driver mesa vulkan-icd-loader vulkan-radeon vulkan-intel intel-media-driver \
# Sin discover/packagekit-qt6: se usa pamac-all (AUR_COMMON) como gestor gráfico. packagekit-qt6
# Sin discover: se usa pamac-all + pamac-tray-plasma-git como gestor gráfico.
# packagekit-qt6 lo requiere pamac-tray-plasma-git.
echo ">> Bootloader (GRUB)..." echo ">> Bootloader (GRUB)..."
install_bootloader install_bootloader
echo ">> Configurando rollback de actualizaciones (snapper)..."
configure_btrfs_rollback
echo ">> Bootstrapeando paru y paquetes AUR..." echo ">> Bootstrapeando paru y paquetes AUR..."
bootstrap_paru bootstrap_paru
# Solo plasmoides que EXISTEN en AUR. Los de KDE Store/GitHub (gnome-pager, kMenu, # Solo plasmoides que EXISTEN en AUR. Los de KDE Store/GitHub (gnome-pager, kMenu,
@@ -83,10 +88,13 @@ install_aur "${AUR_COMMON[@]}" \
plasma6-applets-panel-colorizer kwin-effects-better-blur-dx kwin-effects-glass-git breeze-enhanced \ plasma6-applets-panel-colorizer kwin-effects-better-blur-dx kwin-effects-glass-git breeze-enhanced \
plasma6-themes-layan-git tela-icon-theme layan-cursor-theme-git \ plasma6-themes-layan-git tela-icon-theme layan-cursor-theme-git \
plasma6-applets-appgrid plasma6-wallpapers-smart-video-wallpaper-reborn pamac-tray-plasma-git \ plasma6-applets-appgrid plasma6-wallpapers-smart-video-wallpaper-reborn pamac-tray-plasma-git \
yin-yang yin-yang kwin-decoration-sierra-breeze-enhanced-git
install_helpwire install_helpwire
install_claude_code install_claude_code
echo ">> Instalando Flatpaks comunes..."
install_flatpaks "${FLATPAK_COMMON[@]}"
echo ">> Servicios..." echo ">> Servicios..."
systemctl enable sddm systemctl enable sddm
systemctl enable NetworkManager systemctl enable NetworkManager
+82 -9
View File
@@ -3,16 +3,18 @@
# AUR-first: lo que está en repos oficiales va por pacman, el resto por paru. # AUR-first: lo que está en repos oficiales va por pacman, el resto por paru.
# --- Repos oficiales (pacman) --------------------------------------------- # --- Repos oficiales (pacman) ---------------------------------------------
# Sincronizado con la instalación real de la máquina maestra. Si un paquete no
# está presente aquí, se elimina del instalador.
PACMAN_COMMON=( PACMAN_COMMON=(
# base / shell / CLI moderno # base / shell / CLI moderno
zsh starship fzf ripgrep bat eza btop zoxide fd tldr fastfetch 7zip vim usbutils zsh starship fzf ripgrep bat eza btop zoxide fd tldr fastfetch 7zip vim usbutils
# dev toolchain (Podman en vez de Docker + capa de compat) # dev toolchain (Podman en vez de Docker + capa de compat)
git base-devel podman podman-docker buildah git base-devel podman podman-docker buildah
nodejs npm python python-pip rustup nodejs npm python python-pip rustup github-cli
# sync de dotfiles (repo arch-configs) -- en repos oficiales desde 2.x, ya no hace falta AUR # sync de dotfiles (repo arch-configs) -- en repos oficiales desde 2.x
chezmoi chezmoi
# apps de escritorio que SÍ están en extra # apps de escritorio que SÍ están en extra
bitwarden dbeaver obsidian gimp syncthing remmina freerdp apostrophe guvcview kvirc vlc vlc-plugin-ffmpeg bitwarden dbeaver gimp syncthing remmina freerdp apostrophe guvcview kvirc vlc vlc-plugin-ffmpeg
# diccionarios (corrector ortográfico en apps GTK/Qt) # diccionarios (corrector ortográfico en apps GTK/Qt)
hunspell-en_us hunspell-es_es hunspell-en_us hunspell-es_es
# fuentes / iconos compartidos # fuentes / iconos compartidos
@@ -24,14 +26,27 @@ PACMAN_COMMON=(
pipewire pipewire-alsa pipewire-jack pipewire-pulse wireplumber libpulse pipewire pipewire-alsa pipewire-jack pipewire-pulse wireplumber libpulse
gst-plugin-pipewire gst-plugins-good gst-plugins-bad gst-libav gst-plugin-pipewire gst-plugins-good gst-plugins-bad gst-libav
# bluetooth: stack + daemon comunes. La UI va por DE: GNOME la trae vía # bluetooth: stack + daemon comunes. La UI va por DE: GNOME la trae vía
# gnome-control-center (depende de gnome-bluetooth); KDE NO, porque usamos un # gnome-control-center; KDE la instala explícito en kde/setup.sh.
# Plasma curado, así que bluedevil se instala explícito en kde/setup.sh.
bluez bluez-utils bluez bluez-utils
# hardware: mismo par de máquinas físicas (ver PROJECT_CONTEXT.md) # hardware: mismo par de máquinas físicas (ver PROJECT_CONTEXT.md)
amd-ucode sof-firmware btrfs-progs zram-generator cpupower power-profiles-daemon amd-ucode sof-firmware btrfs-progs zram-generator cpupower power-profiles-daemon
ibus wl-clipboard wmctrl ibus wl-clipboard wmctrl smartmontools
# gvfs backend para montar móviles Android por MTP (Dolphin/Nautilus) # gvfs backend para montar móviles Android por MTP (Dolphin/Nautilus)
gvfs-mtp gvfs-mtp
# kernels: último + LTS como fallback ante actualizaciones rotas
linux linux-lts linux-lts-headers linux-firmware
# rollback de actualizaciones atómicas sobre btrfs
snapper snap-pac grub-btrfs
)
# --- Flatpak ---------------------------------------------------------------
# Aplicaciones que en la máquina maestra están instaladas como Flatpak.
# Antes algunas de estas vivían en AUR (p.ej. heroic-games-launcher-bin,
# karere); ahora se gestionan desde Flathub.
FLATPAK_COMMON=(
com.heroicgameslauncher.hgl
io.github.tobagin.karere
org.gnome.gitlab.cheywood.Buffer
) )
# --- AUR (paru) ------------------------------------------------------------ # --- AUR (paru) ------------------------------------------------------------
@@ -43,19 +58,18 @@ AUR_COMMON=(
zen-browser-bin zen-browser-bin
visual-studio-code-bin visual-studio-code-bin
vscodium-bin vscodium-bin
davmail
betterbird-bin betterbird-bin
onlyoffice-bin onlyoffice-bin
spotify spotify
ungoogled-chromium-bin ungoogled-chromium-bin
karere
ventoy-bin ventoy-bin
woeusb-ng woeusb-ng
bibata-cursor-theme-bin bibata-cursor-theme-bin
googledot-cursor-theme googledot-cursor-theme
pamac-all pamac-all
yay yay
heroic-games-launcher-bin # herramientas adicionales presentes en la máquina maestra
autofirma debtap gotify-desktop openlogi stably-orca-bin
) )
# --- helpers usados por los setup.sh -------------------------------------- # --- helpers usados por los setup.sh --------------------------------------
@@ -128,3 +142,62 @@ install_helpwire() {
install_claude_code() { install_claude_code() {
as_user "curl -fsSL https://claude.ai/install.sh | bash" as_user "curl -fsSL https://claude.ai/install.sh | bash"
} }
# Instala aplicaciones desde Flathub. Se usa para apps que en la máquina
# maestra están como Flatpak, aunque antes estuvieran en AUR.
install_flatpaks() {
echo ">> Instalando Flatpaks comunes..."
if ! command -v flatpak &>/dev/null; then
echo "!! flatpak no está disponible; omitiendo Flatpaks." >&2
return 0
fi
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
local app failed=()
for app in "$@"; do
flatpak install -y --noninteractive flathub "$app" || failed+=("$app")
done
((${#failed[@]})) && echo "!! Flatpak falló (revisa a mano): ${failed[*]}" >&2
return 0
}
# 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.
configure_btrfs_rollback() {
echo ">> Configurando rollback btrfs (snapper + snap-pac + grub-btrfs)..."
# Asegurar que / es btrfs; si no, no hacemos nada.
if ! findmnt -nro FSTYPE / | grep -q btrfs; then
echo "!! Advertencia: / no es btrfs; omitiendo configuración de snapper." >&2
return 0
fi
# Crear configuración de snapper para / si no existe.
if [[ ! -f /etc/snapper/configs/root ]]; then
snapper -c root create-config /
fi
# Solo queremos snapshots automáticos de pacman (snap-pac), no por tiempo.
# Esto evita que se acumulen snapshots innecesarios y se coma espacio.
snapper -c root set-config \
TIMELINE_CREATE=no \
TIMELINE_LIMIT_HOURLY=0 \
TIMELINE_LIMIT_DAILY=0 \
TIMELINE_LIMIT_WEEKLY=0 \
TIMELINE_LIMIT_MONTHLY=0 \
TIMELINE_LIMIT_YEARLY=0 \
NUMBER_LIMIT=10 \
NUMBER_LIMIT_IMPORTANT=10
# Ajustar permisos para que el usuario pueda listar snapshots.
chmod 750 /.snapshots
chown :wheel /.snapshots 2>/dev/null || true
# Habilitar el daemon que regenera el menú de GRUB cuando cambian los snapshots.
systemctl enable grub-btrfsd
# Regenerar menú de GRUB con las entradas de snapshots.
grub-mkconfig -o /boot/grub/grub.cfg
}