fix(Installer ─ Multi-Desktop): Fix Multi Desktop
This commit is contained in:
@@ -1,166 +1,94 @@
|
|||||||
# FWS Linux
|
# FWS
|
||||||
|
|
||||||
**FWS Linux** est une distribution live/installable basée sur **Arch Linux**, livrée sous forme d'ISO bootable BIOS/UEFI avec l'installeur graphique **Calamares**.
|
**FWS** est une distribution Linux live/installable basée sur **Arch Linux**, livrée sous forme d'ISO bootable BIOS/UEFI avec l'installeur graphique **Calamares** lancé automatiquement au démarrage.
|
||||||
|
|
||||||
Le projet se construit depuis **Windows via WSL** (ou directement depuis Arch Linux) avec `mkarchiso`.
|
Le projet est construit avec une chaîne `mkarchiso` adaptée pour fonctionner **depuis Windows via WSL** (Git Bash → WSL Arch), sans nécessiter de machine Linux dédiée.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Aperçu
|
## Aperçu
|
||||||
|
|
||||||
| | |
|
- **Base** : Arch Linux (rolling release)
|
||||||
|---|---|
|
- **Installeur** : Calamares (compilé depuis l'AUR, servi via un repo local pacman)
|
||||||
| **Base** | Arch Linux (rolling release) |
|
- **Affichage live** : Xorg + Openbox, lancement automatique de Calamares
|
||||||
| **Installeur** | Calamares (compilé depuis l'AUR) |
|
- **Bureau installé** : XFCE + LightDM avec autologin du premier compte créé
|
||||||
| **Environnement live** | Xorg + Openbox — Calamares se lance automatiquement |
|
- **Boot** : BIOS (syslinux) + UEFI (systemd-boot)
|
||||||
| **Bureaux installables** | XFCE, KDE Plasma, GNOME, Hyprland, CLI |
|
- **Compression** : squashfs (xz)
|
||||||
| **Boot** | BIOS (syslinux) + UEFI (systemd-boot) |
|
- **Build** : Windows + WSL (Arch) ou directement depuis Arch
|
||||||
| **Compression** | squashfs (xz) |
|
|
||||||
| **Build** | Windows + WSL (Arch) ou Arch Linux natif |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Prérequis
|
## Prérequis
|
||||||
|
|
||||||
### Depuis Windows
|
### Côté Windows
|
||||||
- Windows 10/11 avec **WSL 2**
|
- Windows 10/11
|
||||||
- Une distribution **Arch Linux** dans WSL (`Arch`, `ArchLinux`, `ArchWSL`…)
|
- WSL 2 avec une distribution **Arch Linux** installée (`Arch`, `ArchLinux`, `ArchWSL`…)
|
||||||
- **Git Bash** pour lancer les scripts
|
- Git Bash (pour exécuter les scripts depuis Windows)
|
||||||
|
|
||||||
### Depuis Arch Linux (WSL ou natif)
|
### Côté Arch (WSL ou natif)
|
||||||
Les scripts installent automatiquement les paquets nécessaires (`archiso`, `base-devel`, `git`, `reflector`, `dos2unix`).
|
Les scripts installent automatiquement les paquets nécessaires (`archiso`, `base-devel`, `git`, `reflector`, `dos2unix`).
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Démarrage rapide
|
## Démarrage rapide
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Étape 1 — Build des paquets AUR (calamares, winboat-bin) et création du repo local
|
# 1. Préparation : compile Calamares depuis l'AUR, crée le repo local,
|
||||||
|
# patche pacman.conf et configure les services systemd (Xorg + autostart).
|
||||||
./setup-calamares.sh
|
./setup-calamares.sh
|
||||||
|
|
||||||
# Étape 2 — Build de l'ISO
|
# 2. Build de l'ISO via mkarchiso (fusionne configs/releng + configs/baseline)
|
||||||
./build.sh
|
./build.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
L'ISO finale est générée dans `./out/`.
|
L'ISO finale est générée dans `./out/`.
|
||||||
|
|
||||||
Les deux scripts détectent automatiquement s'ils tournent depuis **Git Bash** (bascule automatique dans WSL en root) ou directement depuis **WSL/Arch**.
|
Les deux scripts détectent automatiquement s'ils sont lancés depuis **Git Bash** (et basculent dans WSL en root) ou directement depuis **WSL/Arch**.
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Structure du projet
|
## Structure du projet
|
||||||
|
|
||||||
```
|
| Chemin | Rôle |
|
||||||
FWS/
|
|--------|------|
|
||||||
├── build.sh # Build de l'ISO via mkarchiso
|
| `setup-calamares.sh` | Préparation one-shot : build Calamares (AUR), repo local, services systemd, autostart Xorg + Calamares |
|
||||||
├── setup-calamares.sh # Build des paquets AUR + création du repo local
|
| `build.sh` | Build de l'ISO via `mkarchiso` (utilisable depuis Git Bash ou WSL) |
|
||||||
├── configs/
|
| `configs/releng/` | Profil principal (base ArchISO releng) |
|
||||||
│ ├── releng/ # Profil principal (base ArchISO releng)
|
| `configs/baseline/` | Overlay FWS appliqué par-dessus `releng` (prioritaire) |
|
||||||
│ │ ├── profiledef.sh # Métadonnées ISO (nom, label, bootmodes…)
|
| `local-repo/` | Repo pacman local généré (Calamares + dépendances AUR) |
|
||||||
│ │ ├── packages.x86_64 # Liste des paquets du live
|
| `out/` | ISOs générées |
|
||||||
│ │ ├── pacman.conf # Config pacman pour le build
|
| `fws/mkarchiso` | Binaire `mkarchiso` embarqué (fork) |
|
||||||
│ │ └── airootfs/ # Overlay rootfs du profil releng
|
|
||||||
│ │ ├── etc/calamares/ # Config et modules Calamares
|
|
||||||
│ │ └── usr/local/bin/ # Scripts fws-desktop-init-*
|
|
||||||
│ └── baseline/ # Overlay FWS appliqué par-dessus releng (prioritaire)
|
|
||||||
│ └── airootfs/etc/calamares/ # Branding et modules surchargés
|
|
||||||
├── local-repo/ # Repo pacman local généré (calamares, winboat-bin)
|
|
||||||
├── out/ # ISOs générées
|
|
||||||
└── scripts/
|
|
||||||
└── run_archiso.sh # Test rapide en QEMU
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
## Séquence de boot de l'ISO
|
||||||
|
|
||||||
## Environnements de bureau
|
1. Démarrage de l'ISO FWS (BIOS ou UEFI)
|
||||||
|
|
||||||
Calamares propose le choix du bureau à l'installation. Chaque option est gérée par un script `fws-desktop-init-*` qui installe les paquets, configure le display manager et supprime ce qui ne sert pas.
|
|
||||||
|
|
||||||
| Bureau | Display Manager | Script |
|
|
||||||
|--------|-----------------|--------|
|
|
||||||
| **XFCE** | LightDM | `fws-desktop-init-xfce` |
|
|
||||||
| **KDE Plasma** | SDDM | `fws-desktop-init-kde` |
|
|
||||||
| **GNOME** | GDM | `fws-desktop-init-gnome` |
|
|
||||||
| **Hyprland** | SDDM | `fws-desktop-init-hyprland` |
|
|
||||||
| **CLI** | — | `fws-desktop-init-cli` |
|
|
||||||
|
|
||||||
Tous les bureaux installent un socle commun : **Firefox**, **LibreOffice**, **MariaDB**, **Wine**, **Podman** et **WinBoat** (avec support KVM).
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Séquence de boot de l'ISO live
|
|
||||||
|
|
||||||
1. Démarrage (BIOS ou UEFI)
|
|
||||||
2. `systemd` → autologin root sur `tty1`
|
2. `systemd` → autologin root sur `tty1`
|
||||||
3. `xorg-start.service` → `Xorg :0`
|
3. `xorg-start.service` → `Xorg :0`
|
||||||
4. `calamares.service` → `DISPLAY=:0 calamares`
|
4. `calamares.service` → `DISPLAY=:0 calamares`
|
||||||
5. **Fallback** : si les services échouent, `.zprofile` relance Xorg + Openbox + Calamares manuellement
|
5. **Fallback** : si les services échouent, `.zprofile` relance Xorg + Openbox + Calamares manuellement
|
||||||
|
6. Après installation, le système démarre sur LightDM puis ouvre automatiquement la session XFCE du compte installé
|
||||||
|
|
||||||
---
|
## Test rapide en QEMU
|
||||||
|
|
||||||
## Séquence Calamares
|
|
||||||
|
|
||||||
```
|
|
||||||
welcome → locale → keyboard → partition → users → desktop environement → summary
|
|
||||||
→ [installation] →
|
|
||||||
partition · mount · unpackfs · machineid · fstab · locale ·
|
|
||||||
keyboard · localecfg · users · networkcfg · hwclock ·
|
|
||||||
services-systemd · packages · initcpiocfg · initcpio · desktop environement ·
|
|
||||||
grubcfg · bootloader · umount
|
|
||||||
→ finished
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Test en QEMU
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./scripts/run_archiso.sh -i out/fws-*.iso # BIOS
|
./scripts/run_archiso.sh -i out/fws-*.iso # BIOS
|
||||||
./scripts/run_archiso.sh -u -i out/fws-*.iso # UEFI
|
./scripts/run_archiso.sh -u -i out/fws-*.iso # UEFI
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Personnalisation
|
## Personnalisation
|
||||||
|
|
||||||
| Quoi | Où |
|
- **Paquets** : éditer `configs/releng/packages.x86_64`
|
||||||
|------|----|
|
- **Overlay rootfs** : déposer les fichiers dans `configs/releng/airootfs/` ou `configs/baseline/airootfs/`
|
||||||
| Paquets du live | `configs/releng/packages.x86_64` |
|
- **Modules / séquence Calamares** : `configs/baseline/airootfs/etc/calamares/`
|
||||||
| Overlay rootfs | `configs/releng/airootfs/` ou `configs/baseline/airootfs/` |
|
- **Branding ISO** : `configs/releng/profiledef.sh` (`iso_name`, `iso_label`, `iso_publisher`…)
|
||||||
| Modules Calamares | `configs/baseline/airootfs/etc/calamares/modules/` |
|
|
||||||
| Séquence Calamares | `configs/releng/airootfs/etc/calamares/settings.conf` |
|
|
||||||
| Branding ISO | `configs/releng/profiledef.sh` (`iso_name`, `iso_label`…) |
|
|
||||||
| Branding Calamares | `configs/releng/airootfs/etc/calamares/branding/fws/branding.desc` |
|
|
||||||
| Paquets installés | `configs/releng/airootfs/etc/calamares/modules/packages.conf` |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Dépannage
|
## Dépannage
|
||||||
|
|
||||||
**`pacman.conf` introuvable**
|
- **`pacman.conf introuvable`** : vérifier que `configs/releng/pacman.conf` existe.
|
||||||
: Vérifier que `configs/releng/pacman.conf` existe.
|
- **Calamares ne démarre pas dans l'ISO** : se logger en tty (autologin root) et lancer `journalctl -u xorg-start -u calamares`.
|
||||||
|
- **Erreurs de retours à la ligne** : `build.sh` lance `dos2unix` sur l'arborescence ; si vous éditez des fichiers depuis Windows, ce n'est pas un problème.
|
||||||
**Calamares ne démarre pas dans l'ISO**
|
- **`mkarchiso` échoue sur un paquet AUR** : relancer `./setup-calamares.sh` pour reconstruire le repo local.
|
||||||
: Se logger sur tty (autologin root) et consulter :
|
|
||||||
```bash
|
|
||||||
journalctl -u xorg-start -u calamares
|
|
||||||
```
|
|
||||||
|
|
||||||
**Erreurs de retours à la ligne (CRLF)**
|
|
||||||
: `build.sh` exécute `dos2unix` automatiquement sur tout le profil. Éditer depuis Windows ne pose pas de problème.
|
|
||||||
|
|
||||||
**`mkarchiso` échoue sur un paquet AUR**
|
|
||||||
: Relancer `./setup-calamares.sh` pour reconstruire le repo local.
|
|
||||||
|
|
||||||
**WSL — `DisableSandbox` manquant**
|
|
||||||
: `setup-calamares.sh` l'ajoute automatiquement à `/etc/pacman.conf` si WSL est détecté (pacman ≥ 7 utilise landlock, non supporté par le kernel WSL).
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Licence
|
## Licence & origine
|
||||||
|
|
||||||
FWS est un fork d'**[archiso](https://gitlab.archlinux.org/archlinux/archiso)** (Arch Linux), redistribué sous **GPL-3.0-or-later**.
|
FWS est un fork de **[archiso](https://gitlab.archlinux.org/archlinux/archiso)** (Arch Linux), redistribué sous les termes de la **GPL-3.0-or-later**.
|
||||||
|
|
||||||
Voir [LICENSE](LICENSE) pour le texte complet et [AUTHORS.rst](AUTHORS.rst) pour les auteurs originaux d'archiso.
|
Voir [LICENSE](LICENSE) pour le texte complet, et [AUTHORS.rst](AUTHORS.rst) pour la liste des auteurs originaux d'archiso.
|
||||||
|
|
||||||
Les ajouts spécifiques à FWS (`build.sh`, `setup-calamares.sh`, `configs/baseline/`, scripts `fws-desktop-init-*`, intégration Calamares + WinBoat, chaîne WSL) sont également distribués sous GPL-3.0-or-later.
|
Les modifications spécifiques à FWS (scripts `build.sh`, `setup-calamares.sh`, overlay `configs/baseline/`, intégration Calamares + Xorg autostart, chaîne de build WSL) sont également distribuées sous GPL-3.0-or-later.
|
||||||
|
|||||||
@@ -5,16 +5,7 @@ export MSYS_NO_PATHCONV=1
|
|||||||
set -e
|
set -e
|
||||||
trap 'echo -e "\e[31mErreur lors de l execution (build.sh).\e[0m"; exit 1' ERR
|
trap 'echo -e "\e[31mErreur lors de l execution (build.sh).\e[0m"; exit 1' ERR
|
||||||
|
|
||||||
DISTRO_NAME="${ARCH_WSL_DISTRO:-Arch}"
|
DISTRO_NAME="Arch"
|
||||||
|
|
||||||
# Auto-détection si la distro par défaut est inaccessible
|
|
||||||
if [ -z "$IN_WSL" ] && ! wsl.exe -d "$DISTRO_NAME" -u root -- echo ok >/dev/null 2>&1; then
|
|
||||||
for _name in "Arch" "ArchLinux" "archlinux" "arch" "ArchWSL"; do
|
|
||||||
if wsl.exe -d "$_name" -u root -- echo ok >/dev/null 2>&1; then
|
|
||||||
DISTRO_NAME="$_name"; break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$WSL_DISTRO_NAME" ]; then
|
if [ -n "$WSL_DISTRO_NAME" ]; then
|
||||||
echo -e "\e[36mBuild exécuté depuis WSL ($WSL_DISTRO_NAME) en tant que root...\e[0m"
|
echo -e "\e[36mBuild exécuté depuis WSL ($WSL_DISTRO_NAME) en tant que root...\e[0m"
|
||||||
@@ -37,9 +28,9 @@ WORK_DIR="${WORK_DIR_WSL}"
|
|||||||
echo "==> Dossier de travail : \$WORK_DIR"
|
echo "==> Dossier de travail : \$WORK_DIR"
|
||||||
|
|
||||||
echo "==> Mise à jour des miroirs et installation de archiso..."
|
echo "==> Mise à jour des miroirs et installation de archiso..."
|
||||||
pacman -Syu --noconfirm reflector || true
|
pacman -Sy --noconfirm reflector || true
|
||||||
reflector --verbose --latest 10 --sort rate --save /etc/pacman.d/mirrorlist || true
|
reflector --verbose --latest 10 --sort rate --save /etc/pacman.d/mirrorlist || true
|
||||||
pacman -Syu --noconfirm archiso
|
pacman -Sy --noconfirm archiso
|
||||||
|
|
||||||
echo "==> Préparation de l'environnement de build..."
|
echo "==> Préparation de l'environnement de build..."
|
||||||
rm -rf /tmp/fws-build
|
rm -rf /tmp/fws-build
|
||||||
|
|||||||
@@ -1,65 +1,8 @@
|
|||||||
---
|
---
|
||||||
# Module packagechooser : sélection d'environnement de bureau
|
# Minimal Calamares view module config for desktop selection
|
||||||
# Un seul choix possible (boutons radio)
|
# This tells Calamares to use our QML page from the branding folder.
|
||||||
|
module: view
|
||||||
mode: required
|
name: desktop
|
||||||
id: desktop
|
qml: "branding/fws/desktop.qml"
|
||||||
|
title: "Choix de l'environnement"
|
||||||
items:
|
description: "Sélectionne le bureau à installer"
|
||||||
- id: xfce
|
|
||||||
packages: []
|
|
||||||
name:
|
|
||||||
- locale: ""
|
|
||||||
value: "Xfce (Recommandé)"
|
|
||||||
description:
|
|
||||||
- locale: ""
|
|
||||||
value: "Léger, rapide et stable — déjà inclus dans l'ISO, aucun téléchargement."
|
|
||||||
|
|
||||||
- id: kde
|
|
||||||
packages:
|
|
||||||
- plasma-meta
|
|
||||||
- konsole
|
|
||||||
- dolphin
|
|
||||||
- sddm
|
|
||||||
name:
|
|
||||||
- locale: ""
|
|
||||||
value: "KDE Plasma"
|
|
||||||
description:
|
|
||||||
- locale: ""
|
|
||||||
value: "Bureau moderne, riche en fonctionnalités et très personnalisable."
|
|
||||||
|
|
||||||
- id: gnome
|
|
||||||
packages:
|
|
||||||
- gnome
|
|
||||||
- gdm
|
|
||||||
name:
|
|
||||||
- locale: ""
|
|
||||||
value: "GNOME"
|
|
||||||
description:
|
|
||||||
- locale: ""
|
|
||||||
value: "Interface épurée centrée sur la productivité."
|
|
||||||
|
|
||||||
- id: hyprland
|
|
||||||
packages:
|
|
||||||
- hyprland
|
|
||||||
- xdg-desktop-portal-hyprland
|
|
||||||
- xdg-desktop-portal-gtk
|
|
||||||
- waybar
|
|
||||||
- wofi
|
|
||||||
- kitty
|
|
||||||
- swaybg
|
|
||||||
- swayidle
|
|
||||||
- swaylock
|
|
||||||
- xorg-xwayland
|
|
||||||
- wl-clipboard
|
|
||||||
- grim
|
|
||||||
- slurp
|
|
||||||
- qt5-wayland
|
|
||||||
- qt6-wayland
|
|
||||||
- sddm
|
|
||||||
name:
|
|
||||||
- locale: ""
|
|
||||||
value: "Hyprland"
|
|
||||||
description:
|
|
||||||
- locale: ""
|
|
||||||
value: "Compositeur Wayland dynamique — tiling Wayland (utilisateurs avancés)."
|
|
||||||
|
|||||||
@@ -1,43 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
"""
|
|
||||||
Calamares job : lit le choix de bureau depuis GlobalStorage
|
|
||||||
(packagechooser_desktop) et l'écrit dans /run/fws-desktop pour
|
|
||||||
que shellprocess puisse appeler le bon fws-desktop-init-*.
|
|
||||||
"""
|
|
||||||
import libcalamares
|
|
||||||
|
|
||||||
VALID_DESKTOPS = {"xfce", "kde", "gnome", "hyprland"}
|
|
||||||
FALLBACK = "xfce"
|
|
||||||
|
|
||||||
|
|
||||||
def pretty_name():
|
|
||||||
return "Sauvegarde du choix d'environnement de bureau"
|
|
||||||
|
|
||||||
|
|
||||||
def run():
|
|
||||||
gs = libcalamares.globalstorage
|
|
||||||
|
|
||||||
raw = gs.value("packagechooser_desktop")
|
|
||||||
|
|
||||||
# packagechooser peut renvoyer une str ou une liste selon la version
|
|
||||||
if isinstance(raw, list):
|
|
||||||
choice = raw[0] if raw else FALLBACK
|
|
||||||
elif isinstance(raw, str):
|
|
||||||
choice = raw.strip()
|
|
||||||
else:
|
|
||||||
choice = FALLBACK
|
|
||||||
|
|
||||||
if choice not in VALID_DESKTOPS:
|
|
||||||
choice = FALLBACK
|
|
||||||
|
|
||||||
try:
|
|
||||||
with open("/run/fws-desktop", "w") as fh:
|
|
||||||
fh.write(choice)
|
|
||||||
except OSError as exc:
|
|
||||||
return (
|
|
||||||
"Impossible d'écrire /run/fws-desktop",
|
|
||||||
f"{exc}\nLe bureau sera xfce par défaut.",
|
|
||||||
)
|
|
||||||
|
|
||||||
libcalamares.utils.debug(f"fws-desktop-choice : bureau sélectionné = {choice}")
|
|
||||||
return None
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
type: "job"
|
|
||||||
name: "fws-desktop-choice"
|
|
||||||
interface: "python"
|
|
||||||
script: "main.py"
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
---
|
|
||||||
# packagechooser — un seul choix (radio buttons)
|
|
||||||
# method: legacy → stocke l'id dans GlobalStorage["packagechooser_packagechooser"]
|
|
||||||
# Les scripts fws-desktop-init-* gèrent l'installation réelle.
|
|
||||||
|
|
||||||
mode: required
|
|
||||||
method: legacy
|
|
||||||
|
|
||||||
items:
|
|
||||||
- id: cli
|
|
||||||
packages: []
|
|
||||||
name: "CLI uniquement"
|
|
||||||
description: "Installation minimale en ligne de commande, sans interface graphique."
|
|
||||||
|
|
||||||
- id: kde
|
|
||||||
packages: []
|
|
||||||
name: "KDE Plasma"
|
|
||||||
description: "Bureau moderne, hautement personnalisable et riche en fonctionnalités."
|
|
||||||
|
|
||||||
- id: gnome
|
|
||||||
packages: []
|
|
||||||
name: "GNOME"
|
|
||||||
description: "Interface épurée et intuitive, centrée sur la productivité."
|
|
||||||
|
|
||||||
- id: xfce
|
|
||||||
packages: []
|
|
||||||
name: "Xfce"
|
|
||||||
description: "Léger, rapide et stable. Idéal pour tous les systèmes, y compris les machines plus anciennes."
|
|
||||||
|
|
||||||
- id: hyprland
|
|
||||||
packages: []
|
|
||||||
name: "Hyprland"
|
|
||||||
description: "Compositeur Wayland dynamique avec tiling automatique (utilisateurs avancés)."
|
|
||||||
@@ -1,6 +1,10 @@
|
|||||||
---
|
---
|
||||||
|
# Étape post-unpackfs : retire les paquets live-only.
|
||||||
|
# Tous les paquets utiles sont déjà dans le squashfs.
|
||||||
|
# Pas besoin d'installer quoi que ce soit depuis internet.
|
||||||
|
|
||||||
backend: pacman
|
backend: pacman
|
||||||
update_db: true
|
update_db: false
|
||||||
update_system: false
|
update_system: false
|
||||||
|
|
||||||
operations:
|
operations:
|
||||||
|
|||||||
@@ -1,33 +1,21 @@
|
|||||||
---
|
---
|
||||||
# dontChroot: true = exécuté dans le live system.
|
# Exécuté HORS chroot (live system) pour accéder à l'ISO montée.
|
||||||
# ${ROOT} → substitué par Calamares (GlobalStorage "rootMountPoint").
|
# But : restaurer le kernel (retiré du squashfs par mkarchiso) et
|
||||||
# $(cat ...) → substitution bash pure, Calamares ne la touche PAS.
|
# corriger les fichiers mkinitcpio archiso-spécifiques.
|
||||||
|
|
||||||
dontChroot: true
|
dontChroot: true
|
||||||
timeout: 7200
|
|
||||||
|
|
||||||
script:
|
script:
|
||||||
# Copie le kernel depuis l'ISO vers /boot du système cible
|
# Copie le kernel depuis l'ISO vers /boot du système cible
|
||||||
- 'cp "$(find /run/archiso/bootmnt -name vmlinuz-linux 2>/dev/null | head -1)" "${ROOT}/boot/vmlinuz-linux"'
|
- 'cp "$(find /run/archiso/bootmnt -name vmlinuz-linux 2>/dev/null | head -1)" "${ROOT}/boot/vmlinuz-linux"'
|
||||||
|
- 'DESKTOP="$(cat /run/fws-desktop 2>/dev/null || printf xfce)"'
|
||||||
|
- 'if [ -z "$DESKTOP" ]; then DESKTOP="xfce"; fi'
|
||||||
|
- 'if [ ! -f "${ROOT}/usr/local/bin/fws-desktop-init-$DESKTOP" ]; then echo "Script bureau introuvable: $DESKTOP" >&2; exit 1; fi'
|
||||||
|
- 'chroot "${ROOT}" /bin/bash "/usr/local/bin/fws-desktop-init-$DESKTOP"'
|
||||||
|
|
||||||
# DNS : copie le vrai fichier resolv.conf (résout le symlink cassé dans le chroot)
|
# Supprime le drop-in archiso (surcharge HOOKS avec des hooks inexistants post-install)
|
||||||
- 'cp --remove-destination "$(readlink -f /etc/resolv.conf)" "${ROOT}/etc/resolv.conf"'
|
|
||||||
|
|
||||||
# Bypass temporaire du keyring pacman (vide dans le chroot fraîchement installé)
|
|
||||||
# Empêche "error: keyring is not writable" lors du pacman -Sy dans le chroot.
|
|
||||||
- 'sed -i "s/^SigLevel[[:space:]]*=.*/SigLevel = Never/" "${ROOT}/etc/pacman.conf" || true'
|
|
||||||
|
|
||||||
# Lance le script d'init du bureau choisi
|
|
||||||
- 'chroot "${ROOT}" /bin/bash "/usr/local/bin/fws-desktop-init-$(cat /run/fws-desktop 2>/dev/null || echo xfce)"'
|
|
||||||
|
|
||||||
# Restaure SigLevel correct pour l'utilisateur final
|
|
||||||
- 'sed -i "s/^SigLevel[[:space:]]*=.*/SigLevel = Required DatabaseOptional/" "${ROOT}/etc/pacman.conf" || true'
|
|
||||||
|
|
||||||
# Copie le keyring du live system → le système installé aura un keyring fonctionnel
|
|
||||||
- 'mkdir -p "${ROOT}/etc/pacman.d/gnupg" && chmod 700 "${ROOT}/etc/pacman.d/gnupg" && cp -a /etc/pacman.d/gnupg/. "${ROOT}/etc/pacman.d/gnupg/"'
|
|
||||||
|
|
||||||
# Supprime le drop-in archiso (surcharge HOOKS inexistants post-install)
|
|
||||||
- 'rm -f "${ROOT}/etc/mkinitcpio.conf.d/archiso.conf"'
|
- 'rm -f "${ROOT}/etc/mkinitcpio.conf.d/archiso.conf"'
|
||||||
|
|
||||||
# Remplace le linux.preset archiso par le preset standard (default + fallback)
|
# Remplace le linux.preset archiso par le preset standard (default + fallback)
|
||||||
|
# \x27 = ' et \x22 = " pour éviter les conflits de quotes dans YAML/bash
|
||||||
- 'printf "PRESETS=(\x27default\x27 \x27fallback\x27)\nALL_kver=\x22/boot/vmlinuz-linux\x22\nALL_config=\x22/etc/mkinitcpio.conf\x22\nALL_microcode=(/boot/*-ucode.img)\ndefault_image=\x22/boot/initramfs-linux.img\x22\nfallback_image=\x22/boot/initramfs-linux-fallback.img\x22\nfallback_options=\x22-S autodetect\x22\n" > "${ROOT}/etc/mkinitcpio.d/linux.preset"'
|
- 'printf "PRESETS=(\x27default\x27 \x27fallback\x27)\nALL_kver=\x22/boot/vmlinuz-linux\x22\nALL_config=\x22/etc/mkinitcpio.conf\x22\nALL_microcode=(/boot/*-ucode.img)\ndefault_image=\x22/boot/initramfs-linux.img\x22\nfallback_image=\x22/boot/initramfs-linux-fallback.img\x22\nfallback_options=\x22-S autodetect\x22\n" > "${ROOT}/etc/mkinitcpio.d/linux.preset"'
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ sequence:
|
|||||||
- keyboard
|
- keyboard
|
||||||
- partition
|
- partition
|
||||||
- users
|
- users
|
||||||
- packagechooser
|
- desktop
|
||||||
- summary
|
- summary
|
||||||
- exec:
|
- exec:
|
||||||
- partition
|
- partition
|
||||||
@@ -27,7 +27,6 @@ sequence:
|
|||||||
- hwclock
|
- hwclock
|
||||||
- networkcfg
|
- networkcfg
|
||||||
- packages
|
- packages
|
||||||
- fws-desktop-choice
|
|
||||||
- shellprocess
|
- shellprocess
|
||||||
- initcpiocfg
|
- initcpiocfg
|
||||||
- initcpio
|
- initcpio
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=FWS Installer (Calamares)
|
|
||||||
After=graphical.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
ExecStart=/usr/bin/calamares
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=graphical.target
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# Sélection de l'environnement de bureau AVANT le démarrage de Calamares.
|
|
||||||
# Les services systemd n'héritent pas de $DISPLAY — on force :0 (session Xorg live).
|
|
||||||
|
|
||||||
export DISPLAY=":0"
|
|
||||||
|
|
||||||
DESKTOP="xfce" # valeur par défaut si zenity échoue
|
|
||||||
|
|
||||||
CHOICE=$(zenity \
|
|
||||||
--list \
|
|
||||||
--title="FWS — Environnement de bureau" \
|
|
||||||
--text="Quel environnement de bureau souhaitez-vous installer ?" \
|
|
||||||
--column="Environnement" \
|
|
||||||
--column="Description" \
|
|
||||||
--width=580 \
|
|
||||||
--height=340 \
|
|
||||||
"Xfce (Recommandé)" "Léger et rapide — idéal pour tous les systèmes" \
|
|
||||||
"KDE Plasma" "Moderne, riche en fonctionnalités et personnalisable" \
|
|
||||||
"GNOME" "Interface épurée centrée sur la productivité" \
|
|
||||||
"Hyprland" "Compositeur Wayland dynamique (utilisateurs avancés)" \
|
|
||||||
2>/dev/null) || true
|
|
||||||
|
|
||||||
case "${CHOICE:-}" in
|
|
||||||
"Xfce (Recommandé)") DESKTOP="xfce" ;;
|
|
||||||
"KDE Plasma") DESKTOP="kde" ;;
|
|
||||||
"GNOME") DESKTOP="gnome" ;;
|
|
||||||
"Hyprland") DESKTOP="hyprland" ;;
|
|
||||||
*) DESKTOP="xfce" ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
printf '%s' "$DESKTOP" > /run/fws-desktop
|
|
||||||
|
|
||||||
exec /usr/bin/calamares "$@"
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
. /usr/local/bin/fws-desktop-init-common
|
|
||||||
|
|
||||||
# Mode CLI : pas d'interface graphique.
|
|
||||||
# On installe uniquement les outils serveur + WinBoat + Wine.
|
|
||||||
fws_install_packages mariadb mariadb-clients wine \
|
|
||||||
qemu-base podman podman-compose git
|
|
||||||
|
|
||||||
mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql \
|
|
||||||
>/dev/null 2>&1 || true
|
|
||||||
fws_enable_services mariadb.service podman.socket
|
|
||||||
|
|
||||||
printf 'kvm\nkvm_intel\nkvm_amd\n' > /etc/modules-load.d/kvm.conf
|
|
||||||
|
|
||||||
fws_disable_services lightdm.service sddm.service gdm.service
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
fws_first_user() {
|
|
||||||
awk -F: '$3 >= 1000 && $1 != "nobody" { print $1; exit }' /etc/passwd
|
|
||||||
}
|
|
||||||
|
|
||||||
fws_install_packages() {
|
|
||||||
pacman -Sy --noconfirm --needed "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
fws_enable_services() {
|
|
||||||
for service in "$@"; do
|
|
||||||
systemctl enable "$service" >/dev/null 2>&1 || true
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
fws_disable_services() {
|
|
||||||
for service in "$@"; do
|
|
||||||
systemctl disable "$service" >/dev/null 2>&1 || true
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# Retire Xfce + LightDM présents dans le squashfs du live system.
|
|
||||||
# Appelé par les scripts KDE / GNOME / Hyprland pour ne pas laisser
|
|
||||||
# les sessions Xfce apparaître dans le sélecteur du DM.
|
|
||||||
fws_remove_xfce() {
|
|
||||||
pacman -Rns --noconfirm xfce4 xfce4-goodies \
|
|
||||||
lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings \
|
|
||||||
2>/dev/null || true
|
|
||||||
}
|
|
||||||
|
|
||||||
fws_write_dmrc() {
|
|
||||||
local user_name="$1"
|
|
||||||
local session_name="$2"
|
|
||||||
|
|
||||||
if [ -n "$user_name" ] && [ -d "/home/$user_name" ]; then
|
|
||||||
printf '[Desktop]\nSession=%s\n' "$session_name" > "/home/$user_name/.dmrc"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Configure SDDM : session par défaut uniquement, PAS d'autologin.
|
|
||||||
# L'utilisateur devra entrer son mot de passe à chaque démarrage.
|
|
||||||
fws_write_sddm_config() {
|
|
||||||
local session_name="$1"
|
|
||||||
|
|
||||||
mkdir -p /etc/sddm.conf.d
|
|
||||||
printf '[General]\nDefaultSession=%s.desktop\n\n[Theme]\nCurrent=\n' \
|
|
||||||
"$session_name" \
|
|
||||||
> /etc/sddm.conf.d/50-fws.conf
|
|
||||||
}
|
|
||||||
|
|
||||||
# Configure LightDM : session par défaut uniquement, PAS d'autologin.
|
|
||||||
fws_write_lightdm_config() {
|
|
||||||
local session_name="$1"
|
|
||||||
|
|
||||||
mkdir -p /etc/lightdm/lightdm.conf.d
|
|
||||||
printf '[Seat:*]\nuser-session=%s\nallow-guest=false\n' \
|
|
||||||
"$session_name" \
|
|
||||||
> /etc/lightdm/lightdm.conf.d/50-fws.conf
|
|
||||||
}
|
|
||||||
|
|
||||||
# Paquets installés par défaut sur tous les bureaux
|
|
||||||
fws_install_base_apps() {
|
|
||||||
fws_install_packages firefox libreoffice-fresh mariadb mariadb-clients wine
|
|
||||||
|
|
||||||
# MariaDB
|
|
||||||
mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql \
|
|
||||||
>/dev/null 2>&1 || true
|
|
||||||
fws_enable_services mariadb.service
|
|
||||||
|
|
||||||
# Dépendances WinBoat : KVM, Podman, Podman Compose
|
|
||||||
fws_install_packages qemu-base podman podman-compose
|
|
||||||
|
|
||||||
# Charge les modules KVM au démarrage
|
|
||||||
printf 'kvm\nkvm_intel\nkvm_amd\n' > /etc/modules-load.d/kvm.conf
|
|
||||||
|
|
||||||
# Active le socket Podman pour l'utilisateur root
|
|
||||||
fws_enable_services podman.socket
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
. /usr/local/bin/fws-desktop-init-common
|
|
||||||
|
|
||||||
first_user="$(fws_first_user)"
|
|
||||||
|
|
||||||
fws_remove_xfce
|
|
||||||
fws_install_base_apps
|
|
||||||
fws_install_packages gnome gdm
|
|
||||||
fws_disable_services lightdm.service sddm.service
|
|
||||||
fws_enable_services gdm.service
|
|
||||||
fws_write_dmrc "$first_user" gnome
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
. /usr/local/bin/fws-desktop-init-common
|
|
||||||
|
|
||||||
first_user="$(fws_first_user)"
|
|
||||||
|
|
||||||
fws_remove_xfce
|
|
||||||
fws_install_base_apps
|
|
||||||
fws_install_packages hyprland xdg-desktop-portal-hyprland xdg-desktop-portal-gtk \
|
|
||||||
waybar wofi kitty swaybg swayidle swaylock xorg-xwayland wl-clipboard \
|
|
||||||
grim slurp qt5-wayland qt6-wayland sddm
|
|
||||||
fws_disable_services lightdm.service gdm.service
|
|
||||||
fws_enable_services sddm.service
|
|
||||||
fws_write_sddm_config hyprland
|
|
||||||
fws_write_dmrc "$first_user" hyprland
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
. /usr/local/bin/fws-desktop-init-common
|
|
||||||
|
|
||||||
first_user="$(fws_first_user)"
|
|
||||||
|
|
||||||
fws_remove_xfce
|
|
||||||
fws_install_base_apps
|
|
||||||
fws_install_packages plasma-meta konsole dolphin sddm
|
|
||||||
fws_disable_services lightdm.service gdm.service
|
|
||||||
fws_enable_services sddm.service
|
|
||||||
fws_write_sddm_config plasma
|
|
||||||
fws_write_dmrc "$first_user" plasma
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
. /usr/local/bin/fws-desktop-init-common
|
|
||||||
|
|
||||||
first_user="$(fws_first_user)"
|
|
||||||
|
|
||||||
# Xfce est déjà dans le squashfs — on s'assure juste qu'il est complet
|
|
||||||
fws_install_base_apps
|
|
||||||
fws_install_packages xfce4 xfce4-goodies lightdm lightdm-gtk-greeter
|
|
||||||
fws_disable_services sddm.service gdm.service
|
|
||||||
fws_enable_services lightdm.service
|
|
||||||
fws_write_lightdm_config xfce
|
|
||||||
fws_write_dmrc "$first_user" xfce
|
|
||||||
@@ -94,16 +94,18 @@ xorg-xsetroot
|
|||||||
openbox
|
openbox
|
||||||
ttf-dejavu
|
ttf-dejavu
|
||||||
|
|
||||||
|
# --- Bureau FWS installé ---
|
||||||
|
xfce4
|
||||||
|
xfce4-goodies
|
||||||
|
lightdm
|
||||||
|
lightdm-gtk-greeter
|
||||||
|
|
||||||
# --- Calamares (fournis par fws-local) ---
|
# --- Calamares (fournis par fws-local) ---
|
||||||
calamares
|
calamares
|
||||||
kpmcore
|
kpmcore
|
||||||
qt5-base
|
qt5-base
|
||||||
qt5-svg
|
qt5-svg
|
||||||
qt6-base
|
qt6-base
|
||||||
# Dépendances runtime du module packagechooser de Calamares
|
|
||||||
kcoreaddons
|
|
||||||
ki18n
|
|
||||||
kwidgetsaddons
|
|
||||||
|
|
||||||
# --- Agents VM (pratique pour tester l'ISO) ---
|
# --- Agents VM (pratique pour tester l'ISO) ---
|
||||||
qemu-guest-agent
|
qemu-guest-agent
|
||||||
|
|||||||
@@ -16,11 +16,4 @@ airootfs_image_tool_options=('-comp' 'xz' '-Xbcj' 'x86' '-b' '1M' '-Xdict-size'
|
|||||||
bootstrap_tarball_compression=(xz -9e)
|
bootstrap_tarball_compression=(xz -9e)
|
||||||
file_permissions=(
|
file_permissions=(
|
||||||
["/etc/shadow"]="0:0:400"
|
["/etc/shadow"]="0:0:400"
|
||||||
["/usr/local/bin/calamares-launcher"]="0:0:755"
|
|
||||||
["/usr/local/bin/fws-desktop-init-common"]="0:0:755"
|
|
||||||
["/usr/local/bin/fws-desktop-init-xfce"]="0:0:755"
|
|
||||||
["/usr/local/bin/fws-desktop-init-kde"]="0:0:755"
|
|
||||||
["/usr/local/bin/fws-desktop-init-gnome"]="0:0:755"
|
|
||||||
["/usr/local/bin/fws-desktop-init-hyprland"]="0:0:755"
|
|
||||||
["/usr/local/bin/fws-desktop-init-cli"]="0:0:755"
|
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
[Unit]
|
[Unit]
|
||||||
Description=FWS Installer (Calamares)
|
Description=Calamares Installer
|
||||||
After=graphical.target
|
After=display-manager.service
|
||||||
|
Requires=display-manager.service
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
ExecStart=/usr/bin/calamares
|
ExecStart=/usr/bin/calamares
|
||||||
|
Restart=on-failure
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=graphical.target
|
WantedBy=graphical.target
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
. /usr/local/bin/fws-desktop-init-common
|
|
||||||
|
|
||||||
fws_install_packages mariadb mariadb-clients wine \
|
|
||||||
qemu-base podman podman-compose git
|
|
||||||
|
|
||||||
mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql \
|
|
||||||
>/dev/null 2>&1 || true
|
|
||||||
fws_enable_services mariadb.service podman.socket
|
|
||||||
|
|
||||||
printf 'kvm\nkvm_intel\nkvm_amd\n' > /etc/modules-load.d/kvm.conf
|
|
||||||
|
|
||||||
fws_disable_services lightdm.service sddm.service gdm.service
|
|
||||||
@@ -15,21 +15,13 @@ fws_enable_services() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fws_disable_services() {
|
fws_disable_services() {
|
||||||
for service in "$@"; do
|
for service in "$@"; do
|
||||||
systemctl disable "$service" >/dev/null 2>&1 || true
|
systemctl disable "$service" >/dev/null 2>&1 || true
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
# Retire Xfce + LightDM présents dans le squashfs du live system.
|
|
||||||
# Appelé par les scripts KDE / GNOME / Hyprland pour ne pas laisser
|
|
||||||
# les sessions Xfce apparaître dans le sélecteur du DM.
|
|
||||||
fws_remove_xfce() {
|
|
||||||
pacman -Rns --noconfirm xfce4 xfce4-goodies \
|
|
||||||
lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings \
|
|
||||||
2>/dev/null || true
|
|
||||||
}
|
|
||||||
|
|
||||||
fws_write_dmrc() {
|
fws_write_dmrc() {
|
||||||
local user_name="$1"
|
local user_name="$1"
|
||||||
local session_name="$2"
|
local session_name="$2"
|
||||||
@@ -39,42 +31,26 @@ fws_write_dmrc() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Configure SDDM : session par défaut uniquement, PAS d'autologin.
|
|
||||||
# L'utilisateur devra entrer son mot de passe à chaque démarrage.
|
|
||||||
fws_write_sddm_config() {
|
|
||||||
local session_name="$1"
|
|
||||||
|
|
||||||
mkdir -p /etc/sddm.conf.d
|
|
||||||
printf '[General]\nDefaultSession=%s.desktop\n\n[Theme]\nCurrent=\n' \
|
|
||||||
"$session_name" \
|
|
||||||
> /etc/sddm.conf.d/50-fws.conf
|
|
||||||
}
|
|
||||||
|
|
||||||
# Configure LightDM : session par défaut uniquement, PAS d'autologin.
|
|
||||||
fws_write_lightdm_config() {
|
fws_write_lightdm_config() {
|
||||||
local session_name="$1"
|
local user_name="$1"
|
||||||
|
local session_name="$2"
|
||||||
|
|
||||||
|
if [ -z "$user_name" ]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
mkdir -p /etc/lightdm/lightdm.conf.d
|
mkdir -p /etc/lightdm/lightdm.conf.d
|
||||||
printf '[Seat:*]\nuser-session=%s\nallow-guest=false\n' \
|
printf '[Seat:*]\nautologin-user=%s\nautologin-user-timeout=0\nuser-session=%s\nautologin-session=%s\ngreeter-hide-users=true\nallow-guest=false\n' "$user_name" "$session_name" "$session_name" > /etc/lightdm/lightdm.conf.d/50-fws.conf
|
||||||
"$session_name" \
|
|
||||||
> /etc/lightdm/lightdm.conf.d/50-fws.conf
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Paquets installés par défaut sur tous les bureaux
|
fws_write_sddm_config() {
|
||||||
fws_install_base_apps() {
|
local user_name="$1"
|
||||||
fws_install_packages firefox libreoffice-fresh mariadb mariadb-clients wine
|
local session_name="$2"
|
||||||
|
|
||||||
# MariaDB
|
if [ -z "$user_name" ]; then
|
||||||
mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql \
|
return 0
|
||||||
>/dev/null 2>&1 || true
|
fi
|
||||||
fws_enable_services mariadb.service
|
|
||||||
|
|
||||||
# Dépendances WinBoat : KVM, Podman, Podman Compose
|
mkdir -p /etc/sddm.conf.d
|
||||||
fws_install_packages qemu-base podman podman-compose
|
printf '[Autologin]\nUser=%s\nSession=%s.desktop\nRelogin=false\n' "$user_name" "$session_name" > /etc/sddm.conf.d/50-fws.conf
|
||||||
|
|
||||||
# Charge les modules KVM au démarrage
|
|
||||||
printf 'kvm\nkvm_intel\nkvm_amd\n' > /etc/modules-load.d/kvm.conf
|
|
||||||
|
|
||||||
# Active le socket Podman pour l'utilisateur root
|
|
||||||
fws_enable_services podman.socket
|
|
||||||
}
|
}
|
||||||
@@ -5,9 +5,8 @@ set -euo pipefail
|
|||||||
|
|
||||||
first_user="$(fws_first_user)"
|
first_user="$(fws_first_user)"
|
||||||
|
|
||||||
fws_remove_xfce
|
fws_install_packages gnome sddm
|
||||||
fws_install_base_apps
|
fws_disable_services lightdm.service gdm.service
|
||||||
fws_install_packages gnome gdm
|
fws_enable_services sddm.service
|
||||||
fws_disable_services lightdm.service sddm.service
|
fws_write_sddm_config "$first_user" gnome
|
||||||
fws_enable_services gdm.service
|
|
||||||
fws_write_dmrc "$first_user" gnome
|
fws_write_dmrc "$first_user" gnome
|
||||||
@@ -5,12 +5,8 @@ set -euo pipefail
|
|||||||
|
|
||||||
first_user="$(fws_first_user)"
|
first_user="$(fws_first_user)"
|
||||||
|
|
||||||
fws_remove_xfce
|
fws_install_packages hyprland xdg-desktop-portal-hyprland xdg-desktop-portal-gtk waybar wofi kitty swaybg swayidle swaylock xorg-xwayland wl-clipboard grim slurp qt5-wayland qt6-wayland sddm
|
||||||
fws_install_base_apps
|
|
||||||
fws_install_packages hyprland xdg-desktop-portal-hyprland xdg-desktop-portal-gtk \
|
|
||||||
waybar wofi kitty swaybg swayidle swaylock xorg-xwayland wl-clipboard \
|
|
||||||
grim slurp qt5-wayland qt6-wayland sddm
|
|
||||||
fws_disable_services lightdm.service gdm.service
|
fws_disable_services lightdm.service gdm.service
|
||||||
fws_enable_services sddm.service
|
fws_enable_services sddm.service
|
||||||
fws_write_sddm_config hyprland
|
fws_write_sddm_config "$first_user" hyprland
|
||||||
fws_write_dmrc "$first_user" hyprland
|
fws_write_dmrc "$first_user" hyprland
|
||||||
@@ -5,10 +5,8 @@ set -euo pipefail
|
|||||||
|
|
||||||
first_user="$(fws_first_user)"
|
first_user="$(fws_first_user)"
|
||||||
|
|
||||||
fws_remove_xfce
|
|
||||||
fws_install_base_apps
|
|
||||||
fws_install_packages plasma-meta konsole dolphin sddm
|
fws_install_packages plasma-meta konsole dolphin sddm
|
||||||
fws_disable_services lightdm.service gdm.service
|
fws_disable_services lightdm.service gdm.service
|
||||||
fws_enable_services sddm.service
|
fws_enable_services sddm.service
|
||||||
fws_write_sddm_config plasma
|
fws_write_sddm_config "$first_user" plasma
|
||||||
fws_write_dmrc "$first_user" plasma
|
fws_write_dmrc "$first_user" plasma
|
||||||
@@ -5,10 +5,8 @@ set -euo pipefail
|
|||||||
|
|
||||||
first_user="$(fws_first_user)"
|
first_user="$(fws_first_user)"
|
||||||
|
|
||||||
# Xfce est déjà dans le squashfs — on s'assure juste qu'il est complet
|
|
||||||
fws_install_base_apps
|
|
||||||
fws_install_packages xfce4 xfce4-goodies lightdm lightdm-gtk-greeter
|
fws_install_packages xfce4 xfce4-goodies lightdm lightdm-gtk-greeter
|
||||||
fws_disable_services sddm.service gdm.service
|
fws_disable_services sddm.service gdm.service
|
||||||
fws_enable_services lightdm.service
|
fws_enable_services lightdm.service
|
||||||
fws_write_lightdm_config xfce
|
fws_write_lightdm_config "$first_user" xfce
|
||||||
fws_write_dmrc "$first_user" xfce
|
fws_write_dmrc "$first_user" xfce
|
||||||
@@ -93,16 +93,18 @@ xorg-xsetroot
|
|||||||
openbox
|
openbox
|
||||||
ttf-dejavu
|
ttf-dejavu
|
||||||
|
|
||||||
|
# --- Bureau FWS installé ---
|
||||||
|
xfce4
|
||||||
|
xfce4-goodies
|
||||||
|
lightdm
|
||||||
|
lightdm-gtk-greeter
|
||||||
|
|
||||||
# --- Calamares (fournis par fws-local) ---
|
# --- Calamares (fournis par fws-local) ---
|
||||||
calamares
|
calamares
|
||||||
kpmcore
|
kpmcore
|
||||||
qt5-base
|
qt5-base
|
||||||
qt5-svg
|
qt5-svg
|
||||||
qt6-base
|
qt6-base
|
||||||
# Dépendances runtime du module packagechooser de Calamares
|
|
||||||
kcoreaddons
|
|
||||||
ki18n
|
|
||||||
kwidgetsaddons
|
|
||||||
|
|
||||||
# --- Agents VM (pratique pour tester l'ISO) ---
|
# --- Agents VM (pratique pour tester l'ISO) ---
|
||||||
qemu-guest-agent
|
qemu-guest-agent
|
||||||
|
|||||||
@@ -22,10 +22,4 @@ file_permissions=(
|
|||||||
["/usr/local/bin/choose-mirror"]="0:0:755"
|
["/usr/local/bin/choose-mirror"]="0:0:755"
|
||||||
["/usr/local/bin/Installation_guide"]="0:0:755"
|
["/usr/local/bin/Installation_guide"]="0:0:755"
|
||||||
["/usr/local/bin/livecd-sound"]="0:0:755"
|
["/usr/local/bin/livecd-sound"]="0:0:755"
|
||||||
["/usr/local/bin/fws-desktop-init-common"]="0:0:755"
|
|
||||||
["/usr/local/bin/fws-desktop-init-cli"]="0:0:755"
|
|
||||||
["/usr/local/bin/fws-desktop-init-xfce"]="0:0:755"
|
|
||||||
["/usr/local/bin/fws-desktop-init-kde"]="0:0:755"
|
|
||||||
["/usr/local/bin/fws-desktop-init-gnome"]="0:0:755"
|
|
||||||
["/usr/local/bin/fws-desktop-init-hyprland"]="0:0:755"
|
|
||||||
)
|
)
|
||||||
|
|||||||
+1
-26
@@ -50,7 +50,7 @@ fi
|
|||||||
# Vérifications
|
# Vérifications
|
||||||
# ============================================================
|
# ============================================================
|
||||||
command -v pacman >/dev/null || error "pacman introuvable (lance depuis Arch / WSL)"
|
command -v pacman >/dev/null || error "pacman introuvable (lance depuis Arch / WSL)"
|
||||||
[ "$EUID" -eq 0 ] || exec su -c "bash '$0'" root
|
[ "$EUID" -eq 0 ] || exec su -c "bash $0" root
|
||||||
success "Arch Linux (root) ✓"
|
success "Arch Linux (root) ✓"
|
||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
@@ -120,31 +120,6 @@ for pkg in "${AUR_PACKAGES[@]}"; do
|
|||||||
su - "$BUILD_USER" -c "git clone https://aur.archlinux.org/${pkg}.git $BUILD_DIR/$pkg" \
|
su - "$BUILD_USER" -c "git clone https://aur.archlinux.org/${pkg}.git $BUILD_DIR/$pkg" \
|
||||||
|| error "Clonage $pkg échoué"
|
|| error "Clonage $pkg échoué"
|
||||||
|
|
||||||
# Patch spécifique au paquet calamares :
|
|
||||||
# — s'assurer que packagechooser n'est pas dans SKIP_MODULES
|
|
||||||
# — s'assurer que le support Python est activé
|
|
||||||
if [ "$pkg" = "calamares" ]; then
|
|
||||||
info "Patch du PKGBUILD calamares (activation packagechooser)…"
|
|
||||||
|
|
||||||
PKGBUILD_FILE="$BUILD_DIR/$pkg/PKGBUILD"
|
|
||||||
|
|
||||||
# Dépendances de build pour packagechooser
|
|
||||||
pacman -S --needed --noconfirm extra-cmake-modules kcoreaddons ki18n kwidgetsaddons
|
|
||||||
|
|
||||||
# Le PKGBUILD utilise un tableau bash : local _skip_modules=(... packagechooser ...)
|
|
||||||
# On supprime simplement les mots du fichier, quelle que soit la structure.
|
|
||||||
sed -i -E 's/\bpackagechooserq\b[[:space:]]?//g' "$PKGBUILD_FILE"
|
|
||||||
sed -i -E 's/\bpackagechooser\b[[:space:]]?//g' "$PKGBUILD_FILE"
|
|
||||||
|
|
||||||
# Vérification
|
|
||||||
if grep -qE '\bpackagechooser' "$PKGBUILD_FILE"; then
|
|
||||||
warn "packagechooser encore présent dans le PKGBUILD !"
|
|
||||||
grep -n 'packagechooser' "$PKGBUILD_FILE"
|
|
||||||
else
|
|
||||||
success "packagechooser retiré du SKIP_MODULES ✓"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
info "Build $pkg (peut prendre plusieurs minutes)…"
|
info "Build $pkg (peut prendre plusieurs minutes)…"
|
||||||
su - "$BUILD_USER" -c "cd $BUILD_DIR/$pkg && makepkg -s --noconfirm" \
|
su - "$BUILD_USER" -c "cd $BUILD_DIR/$pkg && makepkg -s --noconfirm" \
|
||||||
|| error "Build $pkg échoué"
|
|| error "Build $pkg échoué"
|
||||||
|
|||||||
Reference in New Issue
Block a user