0ab90857e5
Add brightnessctl for brightness control without root via logind, consumed by XF86MonBrightness* keys and waybar backlight module. Add blueman as graphical Bluetooth manager for desktop environments that don't provide their own (KDE and GNOME have built-in managers). Blueman provides system tray integration and pairing assistant. Update comments to clarify the purpose of these new packages.
83 lines
4.4 KiB
Bash
Executable File
83 lines
4.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# ============================================================================
|
|
# FWS — détection matérielle + drivers + stack « remplacement de Windows ».
|
|
#
|
|
# Appelé par le %post du kickstart : fws-setup-hardware <bureau>
|
|
# (<bureau> = cli|gnome|kde|xfce|hyprland). Réseau requis ; CHAQUE étape est
|
|
# NON bloquante (pas de set -e) : un paquet manquant ou pas de réseau ne casse
|
|
# pas l'installation.
|
|
#
|
|
# Installe :
|
|
# - les drivers GPU détectés via lspci (Intel / AMD / NVIDIA) + Mesa/Vulkan,
|
|
# - les outils invité selon l'hyperviseur (VMware/VirtualBox/QEMU/Hyper-V),
|
|
# - le son/micro/casque (PipeWire), le Bluetooth (BlueZ), les conteneurs
|
|
# (Podman),
|
|
# - et — si un bureau est choisi — la stack « comme Windows » : Steam, Wine,
|
|
# VR (Monado/OpenXR → SteamVR pour HTC Vive / Valve Index ; Oculus n'a pas
|
|
# de support Linux officiel), winboat-bin (apps Windows).
|
|
# ============================================================================
|
|
DESK="${1:-cli}"
|
|
log() { echo "[FWS-hw] $*"; }
|
|
|
|
# ── 1) Drivers GPU (détection lspci) ─────────────────────────────────────────
|
|
DRIVERS="mesa"
|
|
GPU="$(lspci 2>/dev/null | grep -iE 'VGA compatible controller|3D controller|Display controller')"
|
|
case "$GPU" in
|
|
*NVIDIA*|*GeForce*) DRIVERS="$DRIVERS nvidia-dkms nvidia-utils linux-headers dkms" ;;
|
|
*AMD*|*ATI*|*Radeon*) DRIVERS="$DRIVERS vulkan-radeon libva-mesa-driver" ;;
|
|
*Intel*) DRIVERS="$DRIVERS vulkan-intel intel-media-driver" ;;
|
|
esac
|
|
|
|
# ── 2) Outils invité selon l'hyperviseur ─────────────────────────────────────
|
|
VMSVC=""
|
|
case "$(systemd-detect-virt 2>/dev/null)" in
|
|
vmware) DRIVERS="$DRIVERS open-vm-tools"; VMSVC="vmtoolsd vmware-vmblock-fuse" ;;
|
|
oracle) DRIVERS="$DRIVERS virtualbox-guest-utils"; VMSVC="vboxservice" ;;
|
|
qemu|kvm) DRIVERS="$DRIVERS qemu-guest-agent spice-vdagent"; VMSVC="qemu-guest-agent spice-vdagentd" ;;
|
|
microsoft) DRIVERS="$DRIVERS hyperv"; VMSVC="hv_fcopy_daemon hv_kvp_daemon hv_vss_daemon" ;;
|
|
esac
|
|
|
|
# ── 3) Stack de base : son / micro / casque, Bluetooth, luminosité, conteneurs
|
|
# brightnessctl : réglage de luminosité sans root (via logind) — consommé par
|
|
# les touches XF86MonBrightness* et la molette du module backlight de waybar.
|
|
BASE="pipewire pipewire-alsa pipewire-pulse pipewire-jack wireplumber \
|
|
pavucontrol bluez bluez-utils brightnessctl podman"
|
|
# Gestionnaire Bluetooth graphique : KDE et GNOME ont le leur ; blueman pour
|
|
# les bureaux qui n'en fournissent pas (tray + assistant d'appairage).
|
|
case "$DESK" in
|
|
hyprland|xfce) BASE="$BASE blueman" ;;
|
|
esac
|
|
|
|
# ── 4) Stack desktop : jeux, Windows-compat, VR (si un bureau est choisi) ────
|
|
DESKTOP=""
|
|
if [ "$DESK" != "cli" ]; then
|
|
# multilib requis (Steam / Wine 32 bits).
|
|
grep -qE '^\[multilib\]' /etc/pacman.conf \
|
|
|| printf '\n[multilib]\nInclude = /etc/pacman.d/mirrorlist\n' >> /etc/pacman.conf
|
|
DESKTOP="steam wine winetricks wine-mono wine-gecko \
|
|
lib32-mesa lib32-pipewire monado gamemode \
|
|
noto-fonts ttf-liberation"
|
|
fi
|
|
|
|
# ── Sync + filtre aux paquets RÉELLEMENT existants ───────────────────────────
|
|
# (un nom de paquet manquant/renommé ne doit pas faire échouer tout le reste).
|
|
pacman -Sy --noconfirm || log "synchro pacman échouée (réseau ?)"
|
|
VALID=""
|
|
for p in $DRIVERS $BASE $DESKTOP; do
|
|
pacman -Si "$p" >/dev/null 2>&1 && VALID="$VALID $p"
|
|
done
|
|
if [ -n "$VALID" ]; then
|
|
log "installation :$VALID"
|
|
pacman -S --noconfirm --needed $VALID || log "certains paquets non installés"
|
|
fi
|
|
|
|
# NB : winboat-bin (AUR) n'est PAS installé ici (fws-local n'existe pas sur la
|
|
# cible) : il est intégré à l'image FWS via packages.x86_64 et recopié par le
|
|
# payload LiveOS d'Anaconda → déjà présent sur le système installé.
|
|
|
|
# ── Services matériels ───────────────────────────────────────────────────────
|
|
[ -n "$VMSVC" ] && systemctl enable $VMSVC 2>/dev/null
|
|
systemctl enable bluetooth.service 2>/dev/null
|
|
systemctl enable podman.socket 2>/dev/null
|
|
exit 0
|