#!/usr/bin/env bash # Paquetes comunes a GNOME y KDE. Lo sourcea cada /setup.sh. # AUR-first: lo que está en repos oficiales va por pacman, el resto por paru. # --- Repos oficiales (pacman) --------------------------------------------- PACMAN_COMMON=( # base / shell / CLI moderno zsh starship fzf ripgrep bat eza btop zoxide fd tldr # dev toolchain (Podman en vez de Docker + capa de compat) git base-devel podman podman-docker buildah nodejs npm python python-pip rustup # apps de escritorio que SÍ están en extra bitwarden dbeaver obsidian gimp syncthing remmina freerdp apostrophe # fuentes / iconos compartidos ttf-jetbrains-mono-nerd ttf-firacode-nerd noto-fonts noto-fonts-emoji papirus-icon-theme # red / utilidades base networkmanager flatpak openssh ) # --- AUR (paru) ------------------------------------------------------------ # helpwire: es un .deb; no hay paquete AUR estable -> se convierte con debtap # (lo gestiona aparte la función install_helpwire de setup.sh). AUR_COMMON=( zen-browser-bin visual-studio-code-bin davmail betterbird-bin onlyoffice-bin spotify ungoogled-chromium-bin input-remapper-git ) # --- helpers usados por los setup.sh -------------------------------------- install_pacman() { pacman -S --needed --noconfirm "$@"; } # paru se construye como usuario normal (makepkg no corre como root) as_user() { sudo -u "$INSTALL_USER" bash -lc "$*"; } bootstrap_paru() { command -v paru &>/dev/null && return 0 install_pacman git base-devel # rustup sin toolchain por defecto no expone cargo y rompe el build de paru as_user 'rustup default stable' # paru (fuente, no paru-bin): el binario de paru-bin enlaza contra una # libalpm.so concreta y rompe si la del sistema nuevo difiere; compilar de # fuente enlaza contra la libalpm instalada. as_user 'cd /tmp && rm -rf paru && \ git clone https://aur.archlinux.org/paru.git && \ cd paru && makepkg -si --noconfirm' } install_aur() { # ponytail: paru en una sola llamada; si un PKGBUILD falla, falla el lote. # upgrade path: instalar uno a uno con un bucle si necesitas tolerancia a fallos. as_user "paru -S --needed --noconfirm $*" } # archinstall 4.3 instala el paquete grub pero NO ejecuta grub-install con # nuestro esquema (/boot ext4 separado + ESP): el sistema queda sin bootloader. # Lo hacemos aquí (root, dentro del chroot). Idempotente. install_bootloader() { install_pacman grub efibootmgr grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB --recheck grub-mkconfig -o /boot/grub/grub.cfg } # HelpWire no tiene AUR: descargar .deb, convertir con debtap, instalar. install_helpwire() { local url="https://www.helpwire.app/downloads/operator/linux/helpwire-operator.deb" install_aur debtap as_user "sudo debtap -u || true" # debtap nombra el paquete por el campo Package del .deb ('helpwire', no # 'helpwire-operator'): convertir en un dir limpio e instalar el único .zst, # sin depender del nombre exacto. as_user "d=\$(mktemp -d) && cd \"\$d\" && curl -fsSL -o hw.deb '$url' && \ yes '' | sudo debtap -Q hw.deb && \ sudo pacman -U --noconfirm \"\$d\"/*.pkg.tar.zst && rm -rf \"\$d\"" }