#!/usr/bin/env bash # Instalación + configuración de Arch con KDE Plasma en UN comando desde el live. # # ./kde/setup.sh # # Misma estructura de 2 fases que gnome/setup.sh (ver ese fichero para detalle). set -euo pipefail REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" DE="kde" 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 + 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/$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" 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, plasma-systemmonitor, drkonqi, juegos kde, etc.). archinstall solo # instala la base; el escritorio y los drivers gráficos open-source van aquí. install_pacman "${PACMAN_COMMON[@]}" \ plasma-desktop sddm plasma-pa plasma-nm powerdevil kscreen systemsettings \ kwallet-pam xdg-desktop-portal-kde breeze-gtk kde-gtk-config \ konsole dolphin kate ark spectacle kcalc gwenview okular \ mesa vulkan-icd-loader vulkan-radeon vulkan-intel intel-media-driver echo ">> Bootloader (GRUB)..." install_bootloader echo ">> Bootstrapeando paru y paquetes AUR..." bootstrap_paru install_aur "${AUR_COMMON[@]}" install_helpwire echo ">> Servicios..." systemctl enable sddm systemctl enable NetworkManager systemctl enable "syncthing@$INSTALL_USER.service" # --- Aspecto: se aplica en el PRIMER login gráfico ------------------------ # ponytail: el global theme de Plasma necesita sesión; lo aplica un oneshot # de autostart. Base Breeze Dark + esquema de color Catppuccin Mocha + Papirus. # upgrade path: layer del look-and-feel completo de catppuccin/kde si lo quieres. USER_HOME="/home/$INSTALL_USER" install -d -o "$INSTALL_USER" -g "$INSTALL_USER" \ "$USER_HOME/.local/bin" "$USER_HOME/.config/autostart" \ "$USER_HOME/.local/share/color-schemes" cat >"$USER_HOME/.local/bin/firstboot-theme.sh" <<'EOS' #!/usr/bin/env bash set -e CS="$HOME/.local/share/color-schemes/CatppuccinMochaBlue.colors" if [[ ! -f "$CS" ]]; then curl -fsSL -o "$CS" \ "https://raw.githubusercontent.com/catppuccin/kde/main/Mocha/color-schemes/CatppuccinMochaBlue.colors" || true fi # Teclado: US internacional con teclas muertas kwriteconfig6 --file kxkbrc --group Layout --key LayoutList "us" kwriteconfig6 --file kxkbrc --group Layout --key VariantList "intl" kwriteconfig6 --file kxkbrc --group Layout --key Use "true" plasma-apply-colorscheme CatppuccinMochaBlue 2>/dev/null || true plasma-apply-desktoptheme breeze-dark 2>/dev/null || true plasma-changeicons Papirus-Dark 2>/dev/null || true # Fuentes kwriteconfig6 --file kdeglobals --group General --key font "JetBrains Mono Nerd Font,11,-1,5,50,0,0,0,0,0" kwriteconfig6 --file kdeglobals --group General --key fixed "JetBrains Mono Nerd Font Mono,12,-1,5,50,0,0,0,0,0" # El panel por defecto de Plasma clava Discover (no instalado en el setup mínimo) # -> icono en blanco que da error. Fijamos lanzadores limpios en el gestor de tareas. A="$HOME/.config/plasma-org.kde.plasma.desktop-appletsrc" grp=$(grep -B6 "plugin=org.kde.plasma.icontasks" "$A" 2>/dev/null | grep -oE "Containments\]\[[0-9]+\]\[Applets\]\[[0-9]+" | tail -1) || true if [[ -n "$grp" ]]; then c=$(grep -oE "Containments\]\[[0-9]+" <<<"$grp" | grep -oE "[0-9]+") a=$(grep -oE "Applets\]\[[0-9]+" <<<"$grp" | grep -oE "[0-9]+") kwriteconfig6 --file plasma-org.kde.plasma.desktop-appletsrc \ --group Containments --group "$c" --group Applets --group "$a" \ --group Configuration --group General \ --key launchers "applications:org.kde.dolphin.desktop,applications:org.kde.konsole.desktop" fi 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)..." install_aur chezmoi 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'" rm -f /etc/sudoers.d/99-setup-nopasswd echo ">> Configuración de KDE completada."