Se había dejado fuera por contradecir el "AUR-first, resto por paru" de los comentarios, pero esta máquina es la fuente de verdad: si está instalado y funcionando aquí, se replica tal cual.
118 lines
4.9 KiB
Bash
118 lines
4.9 KiB
Bash
#!/usr/bin/env bash
|
|
# Paquetes comunes a GNOME y KDE. Lo sourcea cada <de>/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 fastfetch 7zip
|
|
# 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 guvcview kvirc vlc vlc-plugin-ffmpeg
|
|
# diccionarios (corrector ortográfico en apps GTK/Qt)
|
|
hunspell-en_us hunspell-es_es
|
|
# fuentes / iconos compartidos
|
|
ttf-jetbrains-mono-nerd ttf-firacode-nerd noto-fonts noto-fonts-emoji
|
|
papirus-icon-theme
|
|
# red / utilidades base
|
|
networkmanager flatpak openssh networkmanager-openvpn openvpn tailscale wpa_supplicant
|
|
# 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 (depende de gnome-bluetooth); KDE NO, porque usamos un
|
|
# Plasma curado, así que 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
|
|
ibus wl-clipboard wmctrl
|
|
)
|
|
|
|
# --- 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
|
|
vscodium-bin
|
|
davmail
|
|
betterbird-bin
|
|
onlyoffice-bin
|
|
spotify
|
|
ungoogled-chromium-bin
|
|
karere
|
|
claude-code
|
|
ventoy-bin
|
|
woeusb-ng
|
|
bibata-cursor-theme-bin
|
|
googledot-cursor-theme
|
|
pamac-all
|
|
yay
|
|
)
|
|
|
|
# --- helpers usados por los setup.sh --------------------------------------
|
|
install_pacman() { pacman -S --needed --noconfirm "$@"; }
|
|
|
|
# paru se construye como usuario normal (makepkg no corre como root).
|
|
# RUSTUP_HOME/CARGO_HOME explícitos: bajo el fakeroot de makepkg, HOME pasa a
|
|
# /root y rustup intenta crear /root/.rustup (permission denied, uid real != root).
|
|
# rustup respeta RUSTUP_HOME antes que HOME, así que apuntarlo al home del usuario
|
|
# arregla los paquetes Rust (p.ej. karere).
|
|
as_user() {
|
|
sudo -u "$INSTALL_USER" bash -lc \
|
|
"export RUSTUP_HOME=\$HOME/.rustup CARGO_HOME=\$HOME/.cargo; $*"
|
|
}
|
|
|
|
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() {
|
|
# Uno a uno: que un PKGBUILD roto (p.ej. karere) no se lleve por delante el
|
|
# resto del lote ni el chezmoi init posterior. Avisa de los que fallen.
|
|
local p failed=()
|
|
for p in "$@"; do
|
|
as_user "paru -S --needed --noconfirm $p" || failed+=("$p")
|
|
done
|
|
((${#failed[@]})) && echo "!! AUR falló (revisa a mano): ${failed[*]}" >&2
|
|
return 0
|
|
}
|
|
|
|
# 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\""
|
|
# debtap deja el .desktop y el icono dentro de /opt y su scriptlet (roto) no
|
|
# los registra, así que HelpWire no sale en el menú: lo hacemos a mano.
|
|
local hw=/opt/HelpWire/Operator/desktop
|
|
install -Dm644 "$hw/helpwire-operator.desktop" /usr/share/applications/helpwire-operator.desktop
|
|
install -Dm644 "$hw/helpwire-operator_128.png" /usr/share/icons/hicolor/128x128/apps/helpwire-operator.png
|
|
}
|