claudeusageswitcher y tt.launchpadPlasma ya no están en ningún panel real (auditoría de plasmoides instalados vs. usados) y se quitaron del tracking de chezmoi en arch-configs. commandoutput y codexbar sí están en uso pero no viajaban -- añadidos al tracking. Refleja ambos cambios aquí para que el comentario no mienta sobre qué plasmoides trae chezmoi. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
150 lines
7.2 KiB
Bash
Executable File
150 lines
7.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Instalación + configuración de Arch con KDE Plasma en UN comando desde el live.
|
|
#
|
|
# ./kde/setup.sh
|
|
#
|
|
# 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)"
|
|
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/kde/archinstall-config.json" >/tmp/archinstall-merged.json
|
|
|
|
echo ">> Lanzando archinstall (instala base + KDE 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/kde/setup.sh"
|
|
|
|
echo ">> Listo. Quita el USB y reinicia: reboot"
|
|
exit 0
|
|
fi
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# FASE 2 (dentro del chroot)
|
|
# ---------------------------------------------------------------------------
|
|
: "${INSTALL_USER:?falta INSTALL_USER}"
|
|
# Log de toda la fase chroot (pacman/paru/chezmoi) dentro del sistema nuevo, así
|
|
# sobrevive al reinicio. archinstall ya tiene su propio log aparte.
|
|
exec > >(tee -a /var/log/arch-setup.log) 2>&1
|
|
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"
|
|
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 ">> KDE Plasma mínimo + apps oficiales (pacman)..."
|
|
# Plasma curado en vez del grupo 'plasma' completo (que mete discover, kwrited,
|
|
# khelpcenter, drkonqi, juegos kde, etc.). archinstall solo instala la base;
|
|
# el escritorio y los drivers gráficos open-source van aquí.
|
|
# plasma-systemmonitor SÍ se instala explícito (se usa a diario), pese a que el
|
|
# grupo 'plasma' completo se evita por el resto del bloat.
|
|
install_pacman "${PACMAN_COMMON[@]}" \
|
|
plasma-desktop sddm sddm-kcm plasma-pa plasma-nm bluedevil powerdevil kscreen systemsettings kinfocenter \
|
|
kwallet-pam ksshaskpass xdg-desktop-portal-kde breeze-gtk kde-gtk-config kvantum appmenu-gtk-module \
|
|
konsole dolphin kate ark spectacle kcalc gwenview okular kdeconnect kdegraphics-thumbnailers \
|
|
plasma-systemmonitor \
|
|
adwaita-fonts \
|
|
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)..."
|
|
install_bootloader
|
|
|
|
echo ">> Bootstrapeando paru y paquetes AUR..."
|
|
bootstrap_paru
|
|
# Solo plasmoides que EXISTEN en AUR. Los de KDE Store/GitHub (gnome-pager, kMenu,
|
|
# kvitals, windowtitlereborn, commandoutput, codexbar) NO están en AUR: viajan
|
|
# como dotfiles vía chezmoi (~/.local/share/plasma/plasmoids), capturados con
|
|
# shared/capture-kde.sh. No los añadas aquí. (claudeusageswitcher y
|
|
# tt.launchpadPlasma viajaron así hasta que se quitaron por no usarse en
|
|
# ningún panel real -- auditoría 2026-09-20.)
|
|
install_aur "${AUR_COMMON[@]}" \
|
|
kwin-effects-glass-git tela-icon-theme \
|
|
plasma6-applets-appgrid plasma6-wallpapers-smart-video-wallpaper-reborn pamac-tray-plasma-git \
|
|
yin-yang kwin-decoration-sierra-breeze-enhanced-git
|
|
run_optional "install_helpwire" install_helpwire
|
|
run_optional "install_claude_code" install_claude_code
|
|
|
|
run_optional "install_flatpaks" install_flatpaks "${FLATPAK_COMMON[@]}"
|
|
|
|
enable_services() {
|
|
systemctl enable sddm
|
|
systemctl enable NetworkManager
|
|
systemctl enable bluetooth
|
|
systemctl enable "syncthing@$INSTALL_USER.service"
|
|
systemctl enable tailscaled
|
|
systemctl enable power-profiles-daemon
|
|
systemctl enable cpupower
|
|
}
|
|
run_optional "enable_services" enable_services
|
|
|
|
# Tema: look-and-feel propios Vampire-Light/Vampire-dark (ver PROJECT_CONTEXT.md)
|
|
# + iconos Tela (tela-icon-theme de arriba) + cursores Bibata-Modern-Classic
|
|
# (bibata-cursor-theme-bin en AUR_COMMON), vía AUR, instalan en /usr/share, sin
|
|
# copiar binarios en dotfiles. El resto de la personalización (rc files,
|
|
# layout de paneles, splash Animated-Abstract-Cube, los propios paquetes
|
|
# look-and-feel Vampire-*) se captura del portátil con shared/capture-kde.sh
|
|
# y se replica vía chezmoi. Single-monitor como base.
|
|
|
|
# --- 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"
|
|
chezmoi_init_apply() {
|
|
as_user "export GIT_NAME='$GIT_NAME' GIT_EMAIL='$GIT_EMAIL'; \
|
|
chezmoi init --apply '$REMOTE'"
|
|
}
|
|
run_optional "chezmoi init --apply" chezmoi_init_apply
|
|
|
|
# --- pkgsync: sincronización de paquetes (repo arch-setup) -----------------
|
|
run_optional "install_pkgsync" install_pkgsync
|
|
|
|
# Snapper AL FINAL, no tras install_bootloader: snap-pac crea un snapshot
|
|
# pre+post por cada transacción de pacman/paru en cuanto existe el config de
|
|
# snapper, y dentro del chroot no hay systemd corriendo para que el timer de
|
|
# cleanup limite NUMBER_LIMIT -- ninguna limpieza puede correr hasta el primer
|
|
# arranque real. Con snapper configurado antes de las ~30 instalaciones AUR
|
|
# (cada una su propia transacción), se acumulan decenas de snapshots sin poda
|
|
# posible; en una VM de prueba con disco pequeño esto llenó el disco entero
|
|
# (visto en real). Configurándolo al final, ya con el sistema instalado, no se
|
|
# snapshotea la propia instalación -- el primer snapshot legítimo será el de
|
|
# un 'pacman -Syu' real ya con el sistema arrancado, que es para lo que existe
|
|
# el rollback.
|
|
echo ">> Configurando rollback de actualizaciones (snapper)..."
|
|
run_optional "configure_btrfs_rollback" configure_btrfs_rollback
|
|
|
|
rm -f /etc/sudoers.d/99-setup-nopasswd
|
|
|
|
if ((${#FAILED_STEPS[@]})); then
|
|
echo
|
|
echo "⚠️ Instalación completada con avisos. Pasos que fallaron y necesitan revisión manual:"
|
|
printf ' - %s\n' "${FAILED_STEPS[@]}"
|
|
fi
|
|
|
|
echo ">> Configuración de KDE completada."
|