From 9f0d0f11792a18dea9fb24b995b852e80963050e Mon Sep 17 00:00:00 2001 From: Josevi Date: Tue, 18 Aug 2026 11:35:35 +0200 Subject: [PATCH] =?UTF-8?q?Quita=20la=20variante=20GNOME:=20KDE=20Plasma?= =?UTF-8?q?=20es=20el=20=C3=BAnico=20escritorio=20que=20se=20usa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit En el uso real nunca se ha instalado GNOME en ninguna de las dos máquinas. Elimina gnome/ entero (archinstall-config.json + setup.sh) y limpia todas las referencias en README.md, INSTALL.md, packages-common.sh y pkgsync.sh (comentarios "/setup.sh" genéricos, comparaciones GNOME/KDE, la variable DE ya inútil en kde/setup.sh). Sigue disponible en el historial de git si algún día hiciera falta. --- INSTALL.md | 10 +-- README.md | 35 ++++---- gnome/archinstall-config.json | 36 -------- gnome/setup.sh | 157 ---------------------------------- kde/setup.sh | 8 +- pkgsync/pkgsync.sh | 2 +- shared/packages-common.sh | 11 +-- 7 files changed, 33 insertions(+), 226 deletions(-) delete mode 100644 gnome/archinstall-config.json delete mode 100644 gnome/setup.sh diff --git a/INSTALL.md b/INSTALL.md index bde13c2..defcc78 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,7 +1,7 @@ # Procedimiento de instalación Pasos para instalar Arch en las dos máquinas (NVMe 250G + SSD SATA 1TB) desde el -USB live, en un comando. Variantes: GNOME o KDE. +USB live, en un comando. Escritorio: KDE Plasma. ## 0. Una vez (preparación de repos) @@ -41,7 +41,7 @@ como `sda`. Confirma con `lsblk` que solo tus discos reales tienen `RM` a `0`. E pacman -Sy --noconfirm git git clone https://gitea.josevi.ovh/josevi/arch-setup cd arch-setup -./gnome/setup.sh # o ./kde/setup.sh +./kde/setup.sh ``` ## 5. Responder los prompts @@ -60,9 +60,9 @@ y **email** de git, y la **contraseña** del usuario. A partir de ahí va solo: reboot ``` -Quita el USB. En el **primer login gráfico** se aplica el tema Catppuccin, -iconos, fuentes, dock (GNOME) y el teclado `us-intl`. Ese oneshot se -autodestruye; el segundo login arranca limpio. +Quita el USB. El tema (Layan + iconos Tela + cursores Layan-white) y el resto +del look ya vienen aplicados por `kde/setup.sh` y chezmoi; solo falta el +primer login gráfico normal. ## 7. Segunda máquina diff --git a/README.md b/README.md index 16a341d..03ee00e 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,12 @@ Instalación automatizada de Arch Linux para mis dos máquinas (hardware idéntico), en **un único comando** desde el USB live, sin reiniciar entre la base y la config. -Dos variantes de escritorio: **GNOME** y **KDE Plasma**. +Escritorio: **KDE Plasma** (único, sin GNOME — ver "Decisiones"). ``` arch-setup/ -├── gnome/ archinstall-config.json + setup.sh (GNOME, gdm) ├── kde/ archinstall-config.json + setup.sh (KDE Plasma, sddm) -├── shared/ packages-common.sh (paquetes comunes a ambos) +├── shared/ packages-common.sh (paquetes base) ├── pkgsync/ pkgsync.sh + systemd/ (sync de paquetes entre máquinas) └── README.md ``` @@ -21,14 +20,14 @@ arch-setup/ pacman -Sy --noconfirm git git clone https://gitea.josevi.ovh/josevi/arch-setup cd arch-setup -./gnome/setup.sh # o ./kde/setup.sh +./kde/setup.sh ``` El script te pide: usuario a crear, token de Gitea (para el repo `arch-configs` privado), nombre y email de git. Después, sin más intervención: -1. `archinstall --silent` con el JSON de la variante → instala base + escritorio - en `/mnt`. +1. `archinstall --silent` con `kde/archinstall-config.json` → instala base + + KDE Plasma en `/mnt`. 2. Se copia a sí mismo a `/mnt` y entra en `arch-chroot`. 3. Dentro del chroot: crea el usuario, instala paquetes (pacman + AUR vía `paru`), aplica el aspecto y ejecuta `chezmoi init --apply` apuntando a @@ -41,12 +40,12 @@ privado), nombre y email de git. Después, sin más intervención: `paru` (se bootstrapea solo). Sin Flatpak salvo que lo añadas. - **Contenedores**: Podman + `podman-docker` (capa de compat), no Docker. - **Navegador**: Zen Browser. También ungoogled-chromium. -- **Aspecto**: JetBrains Mono Nerd en ambos escritorios; el resto diverge por DE. - GNOME: Catppuccin Mocha + iconos Papirus-Dark + Dash-to-Dock y extensiones - (AppIndicator, Blur my Shell, Caffeine, Clipboard Indicator, Vitals). KDE: tema - global Layan + iconos Tela + cursores Layan-white (paquetes AUR, ver - `kde/setup.sh`) + splash Animated-Abstract-Cube; look capturado del portátil - con `shared/capture-kde.sh` y aplicado vía chezmoi. +- **Aspecto**: JetBrains Mono Nerd + tema global Layan + iconos Tela + cursores + Layan-white (paquetes AUR, ver `kde/setup.sh`) + splash Animated-Abstract-Cube; + look capturado del portátil con `shared/capture-kde.sh` y aplicado vía chezmoi. +- **Solo KDE Plasma, sin GNOME**: hubo variante GNOME en su día; se retiró + porque en el uso real KDE es lo único que se usa. Si algún día hiciera falta + recuperarla, está en el historial de git (commit anterior a la retirada). - **Dotfiles en repo separado, paquetes en este mismo**: no es arbitrario. `arch-configs` (dotfiles, vía `chezmoi`) es datos personales sin relación con "cómo se instala nada" — cambian solos a su ritmo, generan un historial @@ -54,7 +53,7 @@ privado), nombre y email de git. Después, sin más intervención: **último** paso, con el sistema ya funcionando; si `chezmoi init --apply` fallara entero, igualmente tendrías un Arch+KDE arrancable, solo que sin tu toque personal. `shared/packages-common.sh` en cambio *es* el instalador, - no datos sobre el instalador: `/setup.sh` hace `source` de ese fichero + no datos sobre el instalador: `kde/setup.sh` hace `source` de ese fichero y pasa sus arrays directamente a `install_pacman`/`install_aur` — el array es el input directo de la lógica de instalación, en el mismo repo que arranca todo el proceso. Meterlo en un repo aparte obligaría a `setup.sh` a @@ -92,8 +91,8 @@ Comunes (`shared/packages-common.sh`): zsh+starship+CLI moderno, git+base-devel, Podman, nodejs/python/rustup, Bitwarden, DBeaver, Obsidian, GIMP, Syncthing, Remmina+FreeRDP, Apostrophe, guvcview, KVIrc, Zen Browser, VSCode, Betterbird, OnlyOffice, Spotify, ungoogled-chromium, Karere, HelpWire (vía -`.deb`→`debtap`). GNOME añade gnome-calculator/tweaks; KDE añade -kcalc/ark/spectacle/kdeconnect/kinfocenter. +`.deb`→`debtap`). KDE añade kcalc/ark/spectacle/kdeconnect/kinfocenter +(inline en `kde/setup.sh`, ver "Decisiones"). ## pkgsync — sincronización de paquetes entre las dos máquinas @@ -143,7 +142,7 @@ pkgsync/ (`git log` sobre `shared/packages-common.sh`). - **`pkgsync audit`**: paquetes instalados localmente que no están declarados en ningún array ni en el override local — drift no capturado. Nota: los - paquetes específicos de KDE/GNOME hardcodeados en `/setup.sh` + paquetes específicos de KDE hardcodeados en `kde/setup.sh` (`plasma-desktop`, `sddm`, temas AUR, etc.) siempre van a aparecer aquí — no viven en los arrays por diseño, no es drift real. @@ -171,10 +170,10 @@ ni lo sobreescribe. `bootstrap` deja un scaffold comentado si no existe. ### Instalación **Máquinas nuevas**: automático, `install_pkgsync()` (en -`packages-common.sh`) se llama desde `/setup.sh` justo después de +`packages-common.sh`) se llama desde `kde/setup.sh` justo después de `chezmoi init --apply`. -**Las dos máquinas ya instaladas** (retrofit, sin reinstalar): +**Máquinas ya instaladas** (retrofit, sin reinstalar): ```bash mkdir -p ~/.local/bin ~/.config/systemd/user diff --git a/gnome/archinstall-config.json b/gnome/archinstall-config.json deleted file mode 100644 index b2ae425..0000000 --- a/gnome/archinstall-config.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "config_version": "3.0.0", - "archinstall-language": "Spanish", - "bootloader": "Grub", - "hostname": "arch-gnome", - "kernels": [ - "linux", - "linux-lts" - ], - "ntp": true, - "swap": true, - "timezone": "Europe/Madrid", - "locale_config": { - "kb_layout": "us-acentos", - "sys_enc": "UTF-8", - "sys_lang": "es_ES.UTF-8" - }, - "mirror_config": { - "mirror_regions": { - "Spain": [] - } - }, - "network_config": { - "type": "nm" - }, - "audio_config": { - "audio": "pipewire" - }, - "packages": [ - "networkmanager", - "git", - "sudo", - "vim", - "curl" - ] -} \ No newline at end of file diff --git a/gnome/setup.sh b/gnome/setup.sh deleted file mode 100644 index b462cb4..0000000 --- a/gnome/setup.sh +++ /dev/null @@ -1,157 +0,0 @@ -#!/usr/bin/env bash -# Instalación + configuración de Arch con GNOME en UN comando desde el USB live. -# -# ./gnome/setup.sh -# -# Dos fases en el mismo fichero (ponytail: una sola fuente de verdad por DE, -# en vez de duplicar la lógica en un bootstrap + un post-install): -# - SETUP_PHASE=host -> corre archinstall y se re-lanza dentro del chroot -# - SETUP_PHASE=chroot -> instala paquetes/tema/chezmoi en el sistema nuevo -set -euo pipefail - -REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" -DE="gnome" -SETUP_PHASE="${SETUP_PHASE:-host}" -GITEA="https://gitea.josevi.ovh/josevi" - -# --------------------------------------------------------------------------- -# FASE 1 (USB live): archinstall + chroot -# --------------------------------------------------------------------------- -if [[ "$SETUP_PHASE" == "host" ]]; then - [[ $EUID -eq 0 ]] || { echo "Ejecuta como root desde el live ISO."; exit 1; } - - read -rp "Usuario a crear: " INSTALL_USER - read -rsp "Token de Gitea (repo arch-configs privado, Enter si es público): " GITEA_TOKEN; echo - read -rp "Nombre para git [$INSTALL_USER]: " GIT_NAME; GIT_NAME="${GIT_NAME:-$INSTALL_USER}" - read -rp "Email para git [josevisw@gmail.com]: " GIT_EMAIL; GIT_EMAIL="${GIT_EMAIL:-josevisw@gmail.com}" - - echo ">> Generando disk_config dimensionado a los discos reales..." - # archinstall 4.x quitó "Percent": el layout se calcula aquí (ver shared/gen-disk-config.py) - python3 "$REPO_DIR/shared/gen-disk-config.py" "$REPO_DIR/$DE/archinstall-config.json" >/tmp/archinstall-merged.json - - echo ">> Lanzando archinstall (instala base + GNOME en /mnt)..." - archinstall --config /tmp/archinstall-merged.json --silent - - echo ">> Copiando arch-setup al sistema nuevo y entrando en chroot..." - cp -r "$REPO_DIR" /mnt/root/arch-setup - arch-chroot /mnt env \ - SETUP_PHASE=chroot INSTALL_USER="$INSTALL_USER" GITEA_TOKEN="$GITEA_TOKEN" \ - GIT_NAME="$GIT_NAME" GIT_EMAIL="$GIT_EMAIL" \ - bash "/root/arch-setup/$DE/setup.sh" - - echo ">> Listo. Quita el USB y reinicia: reboot" - exit 0 -fi - -# --------------------------------------------------------------------------- -# FASE 2 (dentro del chroot) -# --------------------------------------------------------------------------- -: "${INSTALL_USER:?falta INSTALL_USER}" -source "$(dirname "${BASH_SOURCE[0]}")/../shared/packages-common.sh" - -echo ">> Creando usuario $INSTALL_USER..." -id "$INSTALL_USER" &>/dev/null || useradd -m -G wheel -s /bin/zsh "$INSTALL_USER" -echo "Contraseña para $INSTALL_USER:"; passwd "$INSTALL_USER" -# wheel con sudo; NOPASSWD temporal para que paru/makepkg no se cuelguen -echo '%wheel ALL=(ALL:ALL) ALL' >/etc/sudoers.d/10-wheel -echo "$INSTALL_USER ALL=(ALL) NOPASSWD: ALL" >/etc/sudoers.d/99-setup-nopasswd - -echo ">> GNOME mínimo + apps oficiales (pacman)..." -# GNOME curado en vez del grupo 'gnome' completo (que mete Maps, Weather, Music, -# Tour, Web/Epiphany, Contacts, Rygel...). archinstall solo instala la base; -# el escritorio y los drivers gráficos open-source los ponemos aquí. -install_pacman "${PACMAN_COMMON[@]}" \ - gnome-shell gdm gnome-control-center gnome-session gnome-keyring \ - xdg-desktop-portal-gnome xdg-user-dirs-gtk gvfs \ - nautilus gnome-console gnome-text-editor gnome-calculator loupe \ - gnome-tweaks gnome-themes-extra gnome-shell-extension-appindicator \ - gnome-backgrounds power-profiles-daemon - -echo ">> Bootloader (GRUB)..." -install_bootloader - -echo ">> Configurando rollback de actualizaciones (snapper)..." -configure_btrfs_rollback - -echo ">> Bootstrapeando paru y paquetes AUR..." -bootstrap_paru -install_aur "${AUR_COMMON[@]}" \ - catppuccin-gtk-theme-mocha \ - gnome-shell-extension-dash-to-dock \ - gnome-shell-extension-caffeine \ - gnome-shell-extension-blur-my-shell \ - gnome-shell-extension-clipboard-indicator \ - gnome-shell-extension-vitals -install_helpwire -install_claude_code - -echo ">> Instalando Flatpaks comunes..." -install_flatpaks "${FLATPAK_COMMON[@]}" - -echo ">> Servicios..." -systemctl enable gdm -systemctl enable NetworkManager -systemctl enable bluetooth -systemctl enable "syncthing@$INSTALL_USER.service" -systemctl enable tailscaled -systemctl enable power-profiles-daemon -systemctl enable cpupower - -# --- Aspecto: se aplica en el PRIMER login gráfico ------------------------ -# ponytail: dconf/gsettings necesitan sesión D-Bus, que no existe en chroot. -# Un oneshot de autostart lo aplica al primer login y se autodesactiva. -USER_HOME="/home/$INSTALL_USER" -install -d -o "$INSTALL_USER" -g "$INSTALL_USER" "$USER_HOME/.local/bin" "$USER_HOME/.config/autostart" - -cat >"$USER_HOME/.local/bin/firstboot-theme.sh" <<'EOS' -#!/usr/bin/env bash -set -e -# Teclado: US internacional con teclas muertas -gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us+intl')]" -gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' -gsettings set org.gnome.desktop.interface gtk-theme 'catppuccin-mocha-blue-standard+default' -gsettings set org.gnome.desktop.interface icon-theme 'Papirus-Dark' -gsettings set org.gnome.desktop.interface font-name 'JetBrainsMono Nerd Font 11' -gsettings set org.gnome.desktop.interface monospace-font-name 'JetBrainsMono Nerd Font Mono 12' -for e in \ - dash-to-dock@micxgx.gmail.com \ - appindicatorsupport@rgcjonas.gmail.com \ - blur-my-shell@aunetx \ - caffeine@patapon.info \ - clipboard-indicator@tudmotu.com \ - Vitals@CoreCoding.com ; do - gnome-extensions enable "$e" 2>/dev/null || true -done -# Dock estilo macOS abajo -D=org.gnome.shell.extensions.dash-to-dock -gsettings set $D dock-position 'BOTTOM' 2>/dev/null || true -gsettings set $D extend-height false 2>/dev/null || true -gsettings set $D dock-fixed false 2>/dev/null || true -# autodesactivarse -rm -f "$HOME/.config/autostart/firstboot-theme.desktop" -EOS -chmod +x "$USER_HOME/.local/bin/firstboot-theme.sh" - -cat >"$USER_HOME/.config/autostart/firstboot-theme.desktop" <> chezmoi init --apply (repo arch-configs)..." -REMOTE="$GITEA/arch-configs.git" -[[ -n "${GITEA_TOKEN:-}" ]] && REMOTE="https://$INSTALL_USER:$GITEA_TOKEN@gitea.josevi.ovh/josevi/arch-configs.git" -as_user "export GIT_NAME='$GIT_NAME' GIT_EMAIL='$GIT_EMAIL'; \ - chezmoi init --apply '$REMOTE'" - -# --- pkgsync: sincronización de paquetes (repo arch-setup) ----------------- -install_pkgsync - -# quitar el NOPASSWD temporal -rm -f /etc/sudoers.d/99-setup-nopasswd -echo ">> Configuración de GNOME completada." diff --git a/kde/setup.sh b/kde/setup.sh index ea04cfd..2a23425 100644 --- a/kde/setup.sh +++ b/kde/setup.sh @@ -3,11 +3,11 @@ # # ./kde/setup.sh # -# Misma estructura de 2 fases que gnome/setup.sh (ver ese fichero para detalle). +# Dos fases en el mismo fichero: SETUP_PHASE=host (USB live) lanza archinstall +# y se relanza dentro del chroot; SETUP_PHASE=chroot instala paquetes/tema/chezmoi. set -euo pipefail REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" -DE="kde" SETUP_PHASE="${SETUP_PHASE:-host}" GITEA="https://gitea.josevi.ovh/josevi" @@ -24,7 +24,7 @@ if [[ "$SETUP_PHASE" == "host" ]]; then echo ">> Generando disk_config dimensionado a los discos reales..." # archinstall 4.x quitó "Percent": el layout se calcula aquí (ver shared/gen-disk-config.py) - python3 "$REPO_DIR/shared/gen-disk-config.py" "$REPO_DIR/$DE/archinstall-config.json" >/tmp/archinstall-merged.json + python3 "$REPO_DIR/shared/gen-disk-config.py" "$REPO_DIR/kde/archinstall-config.json" >/tmp/archinstall-merged.json echo ">> Lanzando archinstall (instala base + KDE en /mnt)..." archinstall --config /tmp/archinstall-merged.json --silent @@ -34,7 +34,7 @@ if [[ "$SETUP_PHASE" == "host" ]]; then arch-chroot /mnt env \ SETUP_PHASE=chroot INSTALL_USER="$INSTALL_USER" GITEA_TOKEN="$GITEA_TOKEN" \ GIT_NAME="$GIT_NAME" GIT_EMAIL="$GIT_EMAIL" \ - bash "/root/arch-setup/$DE/setup.sh" + bash "/root/arch-setup/kde/setup.sh" echo ">> Listo. Quita el USB y reinicia: reboot" exit 0 diff --git a/pkgsync/pkgsync.sh b/pkgsync/pkgsync.sh index f97f5ec..9d888dc 100644 --- a/pkgsync/pkgsync.sh +++ b/pkgsync/pkgsync.sh @@ -431,7 +431,7 @@ cmd_audit() { echo "== flatpaks instalados, no declarados ==" comm -23 "$work/inst_flatpak" "$work/declared_flatpak" echo - echo "(nota: los paquetes específicos de KDE/GNOME hardcodeados en /setup.sh" + echo "(nota: los paquetes específicos de KDE hardcodeados en kde/setup.sh" echo " -- plasma-desktop, sddm, temas AUR, etc. -- siempre van a salir aquí: no" echo " viven en los arrays de packages-common.sh por diseño, no es drift real)" diff --git a/shared/packages-common.sh b/shared/packages-common.sh index 849381e..85e220b 100644 --- a/shared/packages-common.sh +++ b/shared/packages-common.sh @@ -1,5 +1,6 @@ #!/usr/bin/env bash -# Paquetes comunes a GNOME y KDE. Lo sourcea cada /setup.sh. +# Paquetes base, sourceados por kde/setup.sh (KDE Plasma es el único DE que +# instala este repo -- ver README "Decisiones"). # AUR-first: lo que está en repos oficiales va por pacman, el resto por paru. # --- Repos oficiales (pacman) --------------------------------------------- @@ -25,8 +26,8 @@ PACMAN_COMMON=( # audio (PipeWire reemplaza a PulseAudio) pipewire pipewire-alsa pipewire-jack pipewire-pulse wireplumber libpulse 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 - # gnome-control-center; KDE la instala explícito en kde/setup.sh. + # bluetooth: stack + daemon comunes; la UI (bluedevil) se instala explícito + # en kde/setup.sh. bluez bluez-utils # hardware: mismo par de máquinas físicas (ver PROJECT_CONTEXT.md) amd-ucode sof-firmware btrfs-progs zram-generator cpupower power-profiles-daemon @@ -41,11 +42,11 @@ PACMAN_COMMON=( # con exit code 1 y el menú de GRUB nunca ve los snapshots (visto en real # en Vampire-HM80: paquetes instalados pero grub-btrfsd en 'failed'). snapper snap-pac grub-btrfs inotify-tools - # bootloader (antes hardcodeado en cada /setup.sh, install_bootloader() + # bootloader (antes hardcodeado en kde/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 /setup.sh; + # drivers gráficos open-source (antes hardcodeados en kde/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 # --- pkgsync: nuevos detectados (revisa y reorganiza a mano) ---