Quita la variante GNOME: KDE Plasma es el único escritorio que se usa

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 "<de>/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.
This commit is contained in:
Josevi
2026-08-18 11:35:35 +02:00
parent 8d1a839578
commit 9f0d0f1179
7 changed files with 33 additions and 226 deletions
+5 -5
View File
@@ -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
+17 -18
View File
@@ -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: `<de>/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 `<de>/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 `<de>/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
-36
View File
@@ -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"
]
}
-157
View File
@@ -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" <<EOS
[Desktop Entry]
Type=Application
Name=First boot theme (GNOME)
Exec=$USER_HOME/.local/bin/firstboot-theme.sh
X-GNOME-Autostart-enabled=true
EOS
chown -R "$INSTALL_USER:$INSTALL_USER" "$USER_HOME/.local" "$USER_HOME/.config"
# --- chezmoi: dotfiles personales (repo arch-configs) --------------------------
# chezmoi ya se instaló arriba (PACMAN_COMMON, repos oficiales desde 2.x).
echo ">> 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."
+4 -4
View File
@@ -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
+1 -1
View File
@@ -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 <de>/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)"
+6 -5
View File
@@ -1,5 +1,6 @@
#!/usr/bin/env bash
# Paquetes comunes a GNOME y KDE. Lo sourcea cada <de>/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 <de>/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 <de>/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) ---