Files
FWS-ISO/configs/releng/airootfs/usr/local/bin/fws-setup-hardware
T
nocode 95eb6c15e0 fix(fws-setup-hardware): add blueman bluetooth manager support for i3 desktop
Include blueman in the base packages for i3 desktop environment, alongside hyprland and xfce, to provide graphical bluetooth management and pairing assistant for i3 users.
2026-07-04 03:30:12 +02:00

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|i3) 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