95eb6c15e0
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.
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|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
|