first commit

This commit is contained in:
2026-06-23 07:55:28 +02:00
commit acfe399c86
7 changed files with 611 additions and 0 deletions
+79
View File
@@ -0,0 +1,79 @@
{
"config_version": "3.0.0",
"archinstall-language": "Spanish",
"bootloader": "Grub",
"hostname": "arch-kde",
"kernels": ["linux"],
"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" },
"profile_config": {
"gfx_driver": "All open-source",
"greeter": "sddm",
"profile": { "main": "Desktop", "details": ["KDE Plasma"] }
},
"packages": ["networkmanager", "git", "sudo", "vim", "curl"],
"disk_config": {
"config_type": "manual_partitioning",
"device_modifications": [
{
"device": "/dev/nvme0n1",
"wipe": true,
"partitions": [
{
"type": "primary",
"status": "create",
"fs_type": "fat32",
"mountpoint": "/boot/efi",
"start": { "unit": "MiB", "value": 1 },
"size": { "unit": "MiB", "value": 512 },
"flags": ["boot", "esp"]
},
{
"type": "primary",
"status": "create",
"fs_type": "ext4",
"mountpoint": "/boot",
"start": { "unit": "MiB", "value": 513 },
"size": { "unit": "GiB", "value": 1 },
"flags": []
},
{
"type": "primary",
"status": "create",
"fs_type": "btrfs",
"mountpoint": "/",
"start": { "unit": "GiB", "value": 2 },
"size": { "unit": "Percent", "value": 100 },
"flags": []
}
]
},
{
"device": "/dev/sda",
"wipe": true,
"partitions": [
{
"type": "primary",
"status": "create",
"fs_type": "ext4",
"mountpoint": "/home",
"start": { "unit": "MiB", "value": 1 },
"size": { "unit": "Percent", "value": 100 },
"flags": []
}
]
}
]
}
}
Executable
+112
View File
@@ -0,0 +1,112 @@
#!/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 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 ">> Lanzando archinstall (instala base + KDE en /mnt)..."
archinstall --config "$REPO_DIR/$DE/archinstall-config.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 ">> Paquetes oficiales (pacman)..."
install_pacman "${PACMAN_COMMON[@]}" \
kcalc ark spectacle
echo ">> Bootstrapeando paru y paquetes AUR..."
bootstrap_paru
install_aur "${AUR_COMMON[@]}"
install_helpwire
echo ">> Servicios..."
systemctl enable NetworkManager
systemctl enable --global syncthing.service 2>/dev/null || true
# --- 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"
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 (KDE)
Exec=$USER_HOME/.local/bin/firstboot-theme.sh
EOS
chown -R "$INSTALL_USER:$INSTALL_USER" "$USER_HOME/.local" "$USER_HOME/.config"
# --- chezmoi: dotfiles personales (repo configs) --------------------------
echo ">> chezmoi init --apply (repo configs)..."
install_aur chezmoi
REMOTE="$GITEA/configs.git"
[[ -n "${GITEA_TOKEN:-}" ]] && REMOTE="https://$INSTALL_USER:$GITEA_TOKEN@gitea.josevi.ovh/josevi/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."