refactor(Anaconda)! : Changing the installator to Anaconda
'cause Calamares is a way to difficult for what we want and we want to try something else
This commit is contained in:
@@ -1,40 +0,0 @@
|
|||||||
# ============================================================
|
|
||||||
# FWS Linux — branding.desc
|
|
||||||
# ============================================================
|
|
||||||
|
|
||||||
componentName: fws
|
|
||||||
|
|
||||||
strings:
|
|
||||||
productName: "FWS"
|
|
||||||
shortProductName: "FWS"
|
|
||||||
version: "1.0"
|
|
||||||
shortVersion: "1.0"
|
|
||||||
versionedName: "FWS 1.0"
|
|
||||||
shortVersionedName: "FWS 1.0"
|
|
||||||
bootloaderEntryName: "FWS"
|
|
||||||
productUrl: ""
|
|
||||||
supportUrl: ""
|
|
||||||
releaseNotesUrl: ""
|
|
||||||
donateUrl: ""
|
|
||||||
|
|
||||||
images:
|
|
||||||
productLogo: "logo.png"
|
|
||||||
productIcon: "logo.png"
|
|
||||||
productWelcome: "logo.png"
|
|
||||||
|
|
||||||
slideshow: "slideshow.qml"
|
|
||||||
slideshowAPI: 2
|
|
||||||
|
|
||||||
style:
|
|
||||||
# Couleurs de la sidebar
|
|
||||||
sidebarBackground: "#1a1a2e"
|
|
||||||
sidebarText: "#e0e0e0"
|
|
||||||
sidebarTextHighlight: "#00d4ff"
|
|
||||||
sidebarSelect: "#16213e"
|
|
||||||
|
|
||||||
# Couleurs générales
|
|
||||||
backgroundColor: "#0f3460"
|
|
||||||
highlightedTextColor: "#ffffff"
|
|
||||||
genericTextColor: "#e0e0e0"
|
|
||||||
errorTextColor: "#ff6b6b"
|
|
||||||
warningTextColor: "#ffa500"
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 11 KiB |
@@ -1,138 +0,0 @@
|
|||||||
/* ============================================================
|
|
||||||
FWS Linux — slideshow.qml
|
|
||||||
Affiché pendant l'installation
|
|
||||||
============================================================ */
|
|
||||||
|
|
||||||
import QtQuick 2.0
|
|
||||||
import calamares.slideshow 1.0
|
|
||||||
|
|
||||||
Presentation {
|
|
||||||
id: presentation
|
|
||||||
|
|
||||||
function nextSlide() {
|
|
||||||
if (presentation.currentSlide < slides.count - 1)
|
|
||||||
presentation.currentSlide++
|
|
||||||
else
|
|
||||||
presentation.currentSlide = 0
|
|
||||||
}
|
|
||||||
|
|
||||||
Timer {
|
|
||||||
id: timer
|
|
||||||
interval: 4000
|
|
||||||
repeat: true
|
|
||||||
running: true
|
|
||||||
onTriggered: nextSlide()
|
|
||||||
}
|
|
||||||
|
|
||||||
Slide {
|
|
||||||
anchors.fill: parent
|
|
||||||
|
|
||||||
Rectangle {
|
|
||||||
anchors.fill: parent
|
|
||||||
color: "#1a1a2e"
|
|
||||||
|
|
||||||
Column {
|
|
||||||
anchors.centerIn: parent
|
|
||||||
spacing: 20
|
|
||||||
|
|
||||||
Text {
|
|
||||||
text: "🚀 Bienvenue sur FWS Linux"
|
|
||||||
color: "#00d4ff"
|
|
||||||
font.pixelSize: 32
|
|
||||||
font.bold: true
|
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
|
||||||
}
|
|
||||||
Text {
|
|
||||||
text: "Un système rapide, léger et puissant."
|
|
||||||
color: "#e0e0e0"
|
|
||||||
font.pixelSize: 18
|
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Slide {
|
|
||||||
anchors.fill: parent
|
|
||||||
|
|
||||||
Rectangle {
|
|
||||||
anchors.fill: parent
|
|
||||||
color: "#16213e"
|
|
||||||
|
|
||||||
Column {
|
|
||||||
anchors.centerIn: parent
|
|
||||||
spacing: 20
|
|
||||||
|
|
||||||
Text {
|
|
||||||
text: "⚡ Basé sur Arch Linux"
|
|
||||||
color: "#00d4ff"
|
|
||||||
font.pixelSize: 32
|
|
||||||
font.bold: true
|
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
|
||||||
}
|
|
||||||
Text {
|
|
||||||
text: "Accès à l'AUR et aux derniers paquets."
|
|
||||||
color: "#e0e0e0"
|
|
||||||
font.pixelSize: 18
|
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Slide {
|
|
||||||
anchors.fill: parent
|
|
||||||
|
|
||||||
Rectangle {
|
|
||||||
anchors.fill: parent
|
|
||||||
color: "#0f3460"
|
|
||||||
|
|
||||||
Column {
|
|
||||||
anchors.centerIn: parent
|
|
||||||
spacing: 20
|
|
||||||
|
|
||||||
Text {
|
|
||||||
text: "🛡️ Sécurité & Stabilité"
|
|
||||||
color: "#00d4ff"
|
|
||||||
font.pixelSize: 32
|
|
||||||
font.bold: true
|
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
|
||||||
}
|
|
||||||
Text {
|
|
||||||
text: "FWS est conçu pour être robuste et fiable."
|
|
||||||
color: "#e0e0e0"
|
|
||||||
font.pixelSize: 18
|
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Slide {
|
|
||||||
anchors.fill: parent
|
|
||||||
|
|
||||||
Rectangle {
|
|
||||||
anchors.fill: parent
|
|
||||||
color: "#1a1a2e"
|
|
||||||
|
|
||||||
Column {
|
|
||||||
anchors.centerIn: parent
|
|
||||||
spacing: 20
|
|
||||||
|
|
||||||
Text {
|
|
||||||
text: "✅ Installation en cours..."
|
|
||||||
color: "#00d4ff"
|
|
||||||
font.pixelSize: 32
|
|
||||||
font.bold: true
|
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
|
||||||
}
|
|
||||||
Text {
|
|
||||||
text: "Merci de patienter, FWS s'installe sur votre machine."
|
|
||||||
color: "#e0e0e0"
|
|
||||||
font.pixelSize: 18
|
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
---
|
|
||||||
efiBootLoader: "grub"
|
|
||||||
|
|
||||||
grubInstall: "grub-install"
|
|
||||||
grubMkconfig: "grub-mkconfig"
|
|
||||||
grubCfg: "/boot/grub/grub.cfg"
|
|
||||||
grubProbe: "grub-probe"
|
|
||||||
efiBootMgr: "efibootmgr"
|
|
||||||
|
|
||||||
efiBootloaderId: "FWS"
|
|
||||||
installEFIFallback: true
|
|
||||||
installHybridGRUB: false
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
restartNowEnabled: true
|
|
||||||
restartNowChecked: false
|
|
||||||
restartNowCommand: "systemctl -i reboot"
|
|
||||||
|
|
||||||
notifyOnFinished: true
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
---
|
|
||||||
crypttabOptions: luks,keyscript=/bin/cat
|
|
||||||
|
|
||||||
tmpOptions:
|
|
||||||
default:
|
|
||||||
tmpfs: false
|
|
||||||
options: ""
|
|
||||||
ssd:
|
|
||||||
tmpfs: true
|
|
||||||
options: "defaults,noatime,mode=1777"
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
---
|
|
||||||
overwrite: true
|
|
||||||
|
|
||||||
kernel_params:
|
|
||||||
- "quiet"
|
|
||||||
|
|
||||||
defaults:
|
|
||||||
GRUB_TIMEOUT: 5
|
|
||||||
GRUB_DEFAULT: "saved"
|
|
||||||
GRUB_DISABLE_SUBMENU: true
|
|
||||||
GRUB_TERMINAL_OUTPUT: "console"
|
|
||||||
GRUB_DISABLE_RECOVERY: true
|
|
||||||
GRUB_DISTRIBUTOR: "FWS"
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
location: EtcFile
|
|
||||||
writeHostsFile: true
|
|
||||||
setSystemdHostname: EtcFile
|
|
||||||
|
|
||||||
template: "fws-${first}"
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
---
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
---
|
|
||||||
# Calamares 3.3+ : initcpiocfg modifie le mkinitcpio.conf existant
|
|
||||||
# au lieu de le réécrire entièrement.
|
|
||||||
|
|
||||||
useSystemdHook: false
|
|
||||||
|
|
||||||
hooks:
|
|
||||||
prepend: []
|
|
||||||
append: []
|
|
||||||
remove: []
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
xOrgConfFileName: "00-keyboard.conf"
|
|
||||||
convertedKeymapPath: "/usr/share/X11/xkb/symbols/pc"
|
|
||||||
keyboardLayout: "fr"
|
|
||||||
keyboardVariant: ""
|
|
||||||
keyboardModel: "pc105"
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
region: "Europe"
|
|
||||||
zone: "Paris"
|
|
||||||
localeGenPath: "/etc/locale.gen"
|
|
||||||
geoipStyle: "json"
|
|
||||||
geoipUrl: "https://geoip.kde.org/v1/calamares"
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
---
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
---
|
|
||||||
systemd: true
|
|
||||||
dbus: true
|
|
||||||
dbus-symlink: true
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
---
|
|
||||||
extraMounts:
|
|
||||||
- device: proc
|
|
||||||
fs: proc
|
|
||||||
mountPoint: /proc
|
|
||||||
- device: sys
|
|
||||||
fs: sysfs
|
|
||||||
mountPoint: /sys
|
|
||||||
- device: /dev
|
|
||||||
mountPoint: /dev
|
|
||||||
options: [ bind ]
|
|
||||||
- device: /dev/pts
|
|
||||||
fs: devpts
|
|
||||||
mountPoint: /dev/pts
|
|
||||||
- device: tmpfs
|
|
||||||
fs: tmpfs
|
|
||||||
mountPoint: /run
|
|
||||||
- device: /run/udev
|
|
||||||
mountPoint: /run/udev
|
|
||||||
options: [ bind ]
|
|
||||||
- device: efivarfs
|
|
||||||
fs: efivarfs
|
|
||||||
mountPoint: /sys/firmware/efi/efivars
|
|
||||||
efi: true
|
|
||||||
|
|
||||||
mountOptions:
|
|
||||||
- filesystem: default
|
|
||||||
options: [ defaults, noatime ]
|
|
||||||
- filesystem: efi
|
|
||||||
options: [ defaults, umask=0077 ]
|
|
||||||
- filesystem: ext4
|
|
||||||
ssdOptions: [ discard ]
|
|
||||||
- filesystem: xfs
|
|
||||||
ssdOptions: [ discard ]
|
|
||||||
- filesystem: btrfs
|
|
||||||
options: [ defaults, noatime, "compress=zstd:1", "space_cache=v2" ]
|
|
||||||
ssdOptions: [ discard=async ]
|
|
||||||
hddOptions: [ autodefrag ]
|
|
||||||
- filesystem: btrfs_swap
|
|
||||||
options: [ defaults, noatime ]
|
|
||||||
- filesystem: f2fs
|
|
||||||
options: [ defaults, noatime ]
|
|
||||||
ssdOptions: [ discard ]
|
|
||||||
- filesystem: swap
|
|
||||||
ssdOptions: [ discard ]
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
# Copie /etc/NetworkManager du live vers le système cible (NM gérera le réseau).
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
---
|
|
||||||
mode: required
|
|
||||||
|
|
||||||
labels:
|
|
||||||
step: "Environnement de bureau"
|
|
||||||
|
|
||||||
items:
|
|
||||||
- id: xfce
|
|
||||||
name: "Xfce"
|
|
||||||
description: "Environnement léger, stable et rapide. Idéal pour les machines modestes."
|
|
||||||
screenshot: ""
|
|
||||||
|
|
||||||
- id: kde
|
|
||||||
name: "KDE Plasma"
|
|
||||||
description: "Environnement moderne et très personnalisable avec de nombreuses fonctionnalités."
|
|
||||||
screenshot: ""
|
|
||||||
|
|
||||||
- id: gnome
|
|
||||||
name: "GNOME"
|
|
||||||
description: "Environnement épuré et intuitif avec une interface tactile-friendly."
|
|
||||||
screenshot: ""
|
|
||||||
|
|
||||||
- id: hyprland
|
|
||||||
name: "Hyprland"
|
|
||||||
description: "Compositeur Wayland dynamique, animé et hautement personnalisable."
|
|
||||||
screenshot: ""
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
---
|
|
||||||
# É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
|
|
||||||
update_db: false
|
|
||||||
update_system: false
|
|
||||||
|
|
||||||
operations:
|
|
||||||
- remove:
|
|
||||||
- calamares
|
|
||||||
- kpmcore
|
|
||||||
- mkinitcpio-archiso
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
---
|
|
||||||
efiSystemPartition: "/boot/efi"
|
|
||||||
efiSystemPartitionSize: 300M
|
|
||||||
efiSystemPartitionName: EFI
|
|
||||||
|
|
||||||
userSwapChoices:
|
|
||||||
- none
|
|
||||||
- small
|
|
||||||
- suspend
|
|
||||||
- file
|
|
||||||
|
|
||||||
drawNestedPartitions: true
|
|
||||||
alwaysShowPartitionLabels: true
|
|
||||||
|
|
||||||
initialPartitioningChoice: replace
|
|
||||||
initialSwapChoice: small
|
|
||||||
|
|
||||||
defaultFileSystemType: "ext4"
|
|
||||||
availableFileSystemTypes: ["ext4", "btrfs", "xfs", "f2fs"]
|
|
||||||
|
|
||||||
enableLuksAutomatedPartitioning: true
|
|
||||||
allowManualPartitioning: true
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
---
|
|
||||||
units:
|
|
||||||
- name: "NetworkManager.service"
|
|
||||||
action: "enable"
|
|
||||||
mandatory: true
|
|
||||||
|
|
||||||
- name: "systemd-resolved.service"
|
|
||||||
action: "enable"
|
|
||||||
mandatory: false
|
|
||||||
|
|
||||||
- name: "systemd-timesyncd.service"
|
|
||||||
action: "enable"
|
|
||||||
mandatory: false
|
|
||||||
|
|
||||||
- name: "sshd.service"
|
|
||||||
action: "enable"
|
|
||||||
mandatory: false
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
---
|
|
||||||
# Exécuté HORS chroot (live system) pour accéder à l'ISO montée.
|
|
||||||
# But : restaurer le kernel (retiré du squashfs par mkarchiso) et
|
|
||||||
# corriger les fichiers mkinitcpio archiso-spécifiques.
|
|
||||||
|
|
||||||
dontChroot: true
|
|
||||||
|
|
||||||
# Timeout par défaut (secondes) appliqué à chaque commande.
|
|
||||||
# La valeur par défaut de Calamares est 30 s — beaucoup trop courte
|
|
||||||
# pour l'installation d'un bureau complet (pacman télécharge des
|
|
||||||
# centaines de Mo). On relève le défaut et on accorde un délai
|
|
||||||
# spécifique très large à la commande d'init du bureau.
|
|
||||||
timeout: 300
|
|
||||||
|
|
||||||
script:
|
|
||||||
# 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"'
|
|
||||||
# Installation du bureau choisi : peut être long (réseau + gros DE
|
|
||||||
# comme KDE/GNOME) → 1 h de marge pour ne jamais expirer à tort.
|
|
||||||
#
|
|
||||||
# arch-chroot (et non « chroot » brut) : monte /proc /sys /dev /run et
|
|
||||||
# copie resolv.conf dans la cible. Indispensable, sinon les hooks
|
|
||||||
# post-transaction de pacman (systemd daemon-reload, udev, tmpfiles…)
|
|
||||||
# échouent faute de ces points de montage → pacman sort en code 1
|
|
||||||
# alors même que les téléchargements ont réussi.
|
|
||||||
# Le nom du bureau est validé contre une allow-list (mêmes valeurs que
|
|
||||||
# les scripts fws-desktop-init-* présents) : toute valeur vide / inconnue
|
|
||||||
# / avec espace parasite retombe sur xfce → jamais d'abandon d'install sur
|
|
||||||
# un script d'init manquant.
|
|
||||||
- command: 'd="$(cat /run/fws-desktop 2>/dev/null)"; d="${d%%[[:space:]]*}"; case "$d" in xfce|kde|gnome|hyprland) ;; *) d=xfce ;; esac; arch-chroot "${ROOT}" /bin/bash "/usr/local/bin/fws-desktop-init-$d"'
|
|
||||||
timeout: 3600
|
|
||||||
|
|
||||||
# ── Nettoyage des artefacts « live-only » qui ne doivent PAS persister
|
|
||||||
# sur le système installé (le squashfs du live devient le root cible) ──
|
|
||||||
# 1) Autologin root SANS mot de passe sur tty1 (drop-in getty du live) :
|
|
||||||
# trou de sécurité + conflit avec le display manager sur vt1.
|
|
||||||
- 'rm -rf "${ROOT}/etc/systemd/system/getty@tty1.service.d"'
|
|
||||||
# 2) Provisionnement auto archiso (param noyau script=) : ne doit jamais
|
|
||||||
# tourner sur la machine installée.
|
|
||||||
- 'rm -f "${ROOT}/root/.zlogin" "${ROOT}/root/.automated_script.sh"'
|
|
||||||
|
|
||||||
# Supprime le drop-in archiso (surcharge HOOKS avec des hooks inexistants post-install)
|
|
||||||
- 'rm -f "${ROOT}/etc/mkinitcpio.conf.d/archiso.conf"'
|
|
||||||
|
|
||||||
# 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"'
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
---
|
|
||||||
# Copie le squashfs du live vers le disque cible.
|
|
||||||
# Le chemin /run/archiso/bootmnt/<install_dir>/<arch>/airootfs.sfs
|
|
||||||
# doit correspondre à `install_dir` dans configs/releng/profiledef.sh ("fws").
|
|
||||||
|
|
||||||
unpack:
|
|
||||||
- source: "/run/archiso/bootmnt/fws/x86_64/airootfs.sfs"
|
|
||||||
sourcefs: "squashfs"
|
|
||||||
destination: ""
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
---
|
|
||||||
defaultGroups:
|
|
||||||
- wheel
|
|
||||||
- audio
|
|
||||||
- video
|
|
||||||
- network
|
|
||||||
- storage
|
|
||||||
- power
|
|
||||||
- lp
|
|
||||||
- scanner
|
|
||||||
|
|
||||||
autologinGroup: autologin
|
|
||||||
sudoersGroup: wheel
|
|
||||||
setRootPassword: true
|
|
||||||
doAutologin: true
|
|
||||||
userShell: /bin/bash
|
|
||||||
|
|
||||||
passwordRequirements:
|
|
||||||
minLength: 6
|
|
||||||
maxLength: -1
|
|
||||||
nonempty: true
|
|
||||||
|
|
||||||
allowWeakPasswords: false
|
|
||||||
allowWeakPasswordsDefault: false
|
|
||||||
|
|
||||||
hostname:
|
|
||||||
location: EtcFile
|
|
||||||
writeHostsFile: true
|
|
||||||
setSystemdHostname: true
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
---
|
|
||||||
showSupportUrl: true
|
|
||||||
showKnownIssuesUrl: true
|
|
||||||
showReleaseNotesUrl: false
|
|
||||||
showDonateUrl: false
|
|
||||||
|
|
||||||
requirements:
|
|
||||||
requiredStorage: 8.0
|
|
||||||
requiredRam: 1.5
|
|
||||||
internetCheckUrl: "https://archlinux.org"
|
|
||||||
check:
|
|
||||||
- storage
|
|
||||||
- ram
|
|
||||||
- power
|
|
||||||
- root
|
|
||||||
- screen
|
|
||||||
required:
|
|
||||||
- storage
|
|
||||||
- ram
|
|
||||||
- root
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
---
|
|
||||||
# ============================================================
|
|
||||||
# FWS — Calamares settings
|
|
||||||
# ============================================================
|
|
||||||
|
|
||||||
modules-search: [ local, /usr/lib/calamares/modules ]
|
|
||||||
|
|
||||||
sequence:
|
|
||||||
# NB : pas de module `packagechooser` ici — il n'est pas compilé dans le
|
|
||||||
# paquet calamares (AUR). Le choix du bureau se fait dans le live via
|
|
||||||
# /usr/local/bin/fws-pick-desktop (écrit /run/fws-desktop), validé ensuite
|
|
||||||
# par le job `fws-desktop-choice` ci-dessous.
|
|
||||||
- show:
|
|
||||||
- welcome
|
|
||||||
- locale
|
|
||||||
- keyboard
|
|
||||||
- partition
|
|
||||||
- users
|
|
||||||
- summary
|
|
||||||
- exec:
|
|
||||||
- partition
|
|
||||||
- mount
|
|
||||||
- unpackfs
|
|
||||||
- machineid
|
|
||||||
- fstab
|
|
||||||
- locale
|
|
||||||
- keyboard
|
|
||||||
- localecfg
|
|
||||||
- users
|
|
||||||
- hwclock
|
|
||||||
- networkcfg
|
|
||||||
- packages
|
|
||||||
- fws-desktop-choice
|
|
||||||
- shellprocess
|
|
||||||
- initcpiocfg
|
|
||||||
- initcpio
|
|
||||||
- grubcfg
|
|
||||||
- bootloader
|
|
||||||
- services-systemd
|
|
||||||
- umount
|
|
||||||
- show:
|
|
||||||
- finished
|
|
||||||
|
|
||||||
branding: fws
|
|
||||||
|
|
||||||
prompt-install: true
|
|
||||||
dont-chroot: false
|
|
||||||
oem-setup: false
|
|
||||||
disable-cancel: false
|
|
||||||
disable-cancel-during-exec: false
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
import libcalamares
|
|
||||||
|
|
||||||
# Chaque valeur doit avoir un /usr/local/bin/fws-desktop-init-<valeur>
|
|
||||||
# correspondant (invariant 1:1). Toute valeur hors-set retombe sur FALLBACK.
|
|
||||||
VALID = {"xfce", "kde", "gnome", "hyprland"}
|
|
||||||
FALLBACK = "xfce"
|
|
||||||
|
|
||||||
|
|
||||||
def pretty_name():
|
|
||||||
return "Sélection de l'environnement de bureau"
|
|
||||||
|
|
||||||
|
|
||||||
STATE = "/run/fws-desktop"
|
|
||||||
|
|
||||||
|
|
||||||
def run():
|
|
||||||
# Le choix est fait dans le live par /usr/local/bin/fws-pick-desktop, qui
|
|
||||||
# écrit STATE (le module packagechooser n'est pas compilé dans le paquet
|
|
||||||
# calamares AUR, donc pas de sélection côté Calamares). Ici on valide et on
|
|
||||||
# normalise pour garantir une valeur sûre à shellprocess (repli xfce).
|
|
||||||
choice = FALLBACK
|
|
||||||
try:
|
|
||||||
with open(STATE) as fh:
|
|
||||||
raw = fh.read().strip()
|
|
||||||
if raw in VALID:
|
|
||||||
choice = raw
|
|
||||||
except OSError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
try:
|
|
||||||
with open(STATE, "w") as fh:
|
|
||||||
fh.write(choice)
|
|
||||||
except OSError as e:
|
|
||||||
libcalamares.utils.warning(f"fws-desktop-choice: impossible d'écrire {STATE}: {e}")
|
|
||||||
|
|
||||||
libcalamares.utils.debug(f"fws-desktop-choice: bureau = {choice}")
|
|
||||||
return None
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
type: "job"
|
|
||||||
name: "fws-desktop-choice"
|
|
||||||
interface: "python"
|
|
||||||
script: "main.py"
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
# ============================================================
|
|
||||||
# FWS Linux — branding.desc
|
|
||||||
# ============================================================
|
|
||||||
|
|
||||||
componentName: fws
|
|
||||||
|
|
||||||
strings:
|
|
||||||
productName: "FWS Linux"
|
|
||||||
shortProductName: "FWS"
|
|
||||||
version: "1.0"
|
|
||||||
shortVersion: "1.0"
|
|
||||||
versionedName: "FWS Linux 1.0"
|
|
||||||
shortVersionedName: "FWS 1.0"
|
|
||||||
bootloaderEntryName: "FWS Linux"
|
|
||||||
productUrl: "https://fws-linux.org"
|
|
||||||
supportUrl: "https://fws-linux.org/support"
|
|
||||||
releaseNotesUrl: "https://fws-linux.org/release-notes"
|
|
||||||
donateUrl: "https://fws-linux.org/donate"
|
|
||||||
|
|
||||||
images:
|
|
||||||
productLogo: "logo.png"
|
|
||||||
productIcon: "logo.png"
|
|
||||||
productWelcome: "logo.png"
|
|
||||||
|
|
||||||
slideshow: "slideshow.qml"
|
|
||||||
slideshowAPI: 2
|
|
||||||
|
|
||||||
style:
|
|
||||||
# Couleurs de la sidebar
|
|
||||||
sidebarBackground: "#1a1a2e"
|
|
||||||
sidebarText: "#e0e0e0"
|
|
||||||
sidebarTextHighlight: "#00d4ff"
|
|
||||||
sidebarSelect: "#16213e"
|
|
||||||
|
|
||||||
# Couleurs générales
|
|
||||||
backgroundColor: "#0f3460"
|
|
||||||
highlightedTextColor: "#ffffff"
|
|
||||||
genericTextColor: "#e0e0e0"
|
|
||||||
errorTextColor: "#ff6b6b"
|
|
||||||
warningTextColor: "#ffa500"
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 11 KiB |
@@ -1,138 +0,0 @@
|
|||||||
/* ============================================================
|
|
||||||
FWS Linux — slideshow.qml
|
|
||||||
Affiché pendant l'installation
|
|
||||||
============================================================ */
|
|
||||||
|
|
||||||
import QtQuick 2.0
|
|
||||||
import calamares.slideshow 1.0
|
|
||||||
|
|
||||||
Presentation {
|
|
||||||
id: presentation
|
|
||||||
|
|
||||||
function nextSlide() {
|
|
||||||
if (presentation.currentSlide < slides.count - 1)
|
|
||||||
presentation.currentSlide++
|
|
||||||
else
|
|
||||||
presentation.currentSlide = 0
|
|
||||||
}
|
|
||||||
|
|
||||||
Timer {
|
|
||||||
id: timer
|
|
||||||
interval: 4000
|
|
||||||
repeat: true
|
|
||||||
running: true
|
|
||||||
onTriggered: nextSlide()
|
|
||||||
}
|
|
||||||
|
|
||||||
Slide {
|
|
||||||
anchors.fill: parent
|
|
||||||
|
|
||||||
Rectangle {
|
|
||||||
anchors.fill: parent
|
|
||||||
color: "#1a1a2e"
|
|
||||||
|
|
||||||
Column {
|
|
||||||
anchors.centerIn: parent
|
|
||||||
spacing: 20
|
|
||||||
|
|
||||||
Text {
|
|
||||||
text: "🚀 Bienvenue sur FWS Linux"
|
|
||||||
color: "#00d4ff"
|
|
||||||
font.pixelSize: 32
|
|
||||||
font.bold: true
|
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
|
||||||
}
|
|
||||||
Text {
|
|
||||||
text: "Un système rapide, léger et puissant."
|
|
||||||
color: "#e0e0e0"
|
|
||||||
font.pixelSize: 18
|
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Slide {
|
|
||||||
anchors.fill: parent
|
|
||||||
|
|
||||||
Rectangle {
|
|
||||||
anchors.fill: parent
|
|
||||||
color: "#16213e"
|
|
||||||
|
|
||||||
Column {
|
|
||||||
anchors.centerIn: parent
|
|
||||||
spacing: 20
|
|
||||||
|
|
||||||
Text {
|
|
||||||
text: "⚡ Basé sur Arch Linux"
|
|
||||||
color: "#00d4ff"
|
|
||||||
font.pixelSize: 32
|
|
||||||
font.bold: true
|
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
|
||||||
}
|
|
||||||
Text {
|
|
||||||
text: "Accès à l'AUR et aux derniers paquets."
|
|
||||||
color: "#e0e0e0"
|
|
||||||
font.pixelSize: 18
|
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Slide {
|
|
||||||
anchors.fill: parent
|
|
||||||
|
|
||||||
Rectangle {
|
|
||||||
anchors.fill: parent
|
|
||||||
color: "#0f3460"
|
|
||||||
|
|
||||||
Column {
|
|
||||||
anchors.centerIn: parent
|
|
||||||
spacing: 20
|
|
||||||
|
|
||||||
Text {
|
|
||||||
text: "🛡️ Sécurité & Stabilité"
|
|
||||||
color: "#00d4ff"
|
|
||||||
font.pixelSize: 32
|
|
||||||
font.bold: true
|
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
|
||||||
}
|
|
||||||
Text {
|
|
||||||
text: "FWS est conçu pour être robuste et fiable."
|
|
||||||
color: "#e0e0e0"
|
|
||||||
font.pixelSize: 18
|
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Slide {
|
|
||||||
anchors.fill: parent
|
|
||||||
|
|
||||||
Rectangle {
|
|
||||||
anchors.fill: parent
|
|
||||||
color: "#1a1a2e"
|
|
||||||
|
|
||||||
Column {
|
|
||||||
anchors.centerIn: parent
|
|
||||||
spacing: 20
|
|
||||||
|
|
||||||
Text {
|
|
||||||
text: "✅ Installation en cours..."
|
|
||||||
color: "#00d4ff"
|
|
||||||
font.pixelSize: 32
|
|
||||||
font.bold: true
|
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
|
||||||
}
|
|
||||||
Text {
|
|
||||||
text: "Merci de patienter, FWS s'installe sur votre machine."
|
|
||||||
color: "#e0e0e0"
|
|
||||||
font.pixelSize: 18
|
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
# ============================================================
|
|
||||||
# FWS Linux — modules/bootloader.conf
|
|
||||||
# ============================================================
|
|
||||||
|
|
||||||
# Bootloader à utiliser
|
|
||||||
# Options: grub, systemd-boot, refind
|
|
||||||
efiBootLoader: "grub"
|
|
||||||
|
|
||||||
# Paramètres GRUB
|
|
||||||
grubInstall: "grub-install"
|
|
||||||
grubMkconfig: "grub-mkconfig"
|
|
||||||
grubCfg: "/boot/grub/grub.cfg"
|
|
||||||
|
|
||||||
# Chemin EFI
|
|
||||||
efiDirectory: "/boot/efi"
|
|
||||||
|
|
||||||
# ID pour l'entrée EFI
|
|
||||||
efiBootEntryName: "FWS Linux"
|
|
||||||
|
|
||||||
# Menu GRUB
|
|
||||||
grubTimeout: 5
|
|
||||||
grubQuiet: false
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
# ============================================================
|
|
||||||
# FWS Linux — modules/finished.conf
|
|
||||||
# ============================================================
|
|
||||||
|
|
||||||
# Redémarrer automatiquement après l'installation
|
|
||||||
restartNowEnabled: true
|
|
||||||
restartNowChecked: false
|
|
||||||
restartNowCommand: "systemctl reboot"
|
|
||||||
|
|
||||||
# Message de fin affiché à l'utilisateur
|
|
||||||
notifyOnFinished: true
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
# ============================================================
|
|
||||||
# FWS Linux — modules/grubcfg.conf
|
|
||||||
# Paramètres passés à grub-mkconfig
|
|
||||||
# ============================================================
|
|
||||||
|
|
||||||
# Nom de l'entrée dans le menu GRUB
|
|
||||||
defaultEntry: "FWS Linux"
|
|
||||||
|
|
||||||
defaults:
|
|
||||||
GRUB_ENABLE_CRYPTODISK: true
|
|
||||||
|
|
||||||
# Paramètres kernel supplémentaires
|
|
||||||
kernel_params: ""
|
|
||||||
|
|
||||||
# Désactiver l'écran splash (mettre false pour debug)
|
|
||||||
splash: true
|
|
||||||
|
|
||||||
# Thème GRUB (laisse vide pour le thème par défaut)
|
|
||||||
theme: ""
|
|
||||||
|
|
||||||
# Timeout du menu GRUB (en secondes)
|
|
||||||
timeout: 5
|
|
||||||
|
|
||||||
# Activer les entrées des autres OS détectés (os-prober)
|
|
||||||
enable_osprober: true
|
|
||||||
|
|
||||||
# Écrire /etc/default/grub
|
|
||||||
writeEtcDefaultGrub: true
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
---
|
|
||||||
# Calamares 3.3+ : initcpiocfg modifie le mkinitcpio.conf existant
|
|
||||||
# au lieu de le réécrire entièrement.
|
|
||||||
|
|
||||||
useSystemdHook: false
|
|
||||||
|
|
||||||
hooks:
|
|
||||||
prepend: []
|
|
||||||
append: []
|
|
||||||
remove: []
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
# ============================================================
|
|
||||||
# FWS Linux — modules/keyboard.conf
|
|
||||||
# ============================================================
|
|
||||||
|
|
||||||
# Disposition clavier par défaut
|
|
||||||
xorgConfigFileName: "/etc/X11/xorg.conf.d/00-keyboard.conf"
|
|
||||||
|
|
||||||
# Clavier par défaut
|
|
||||||
keyboardLayout: "fr"
|
|
||||||
keyboardVariant: ""
|
|
||||||
keyboardModel: "pc105"
|
|
||||||
|
|
||||||
# Permettre à l'utilisateur de choisir son clavier
|
|
||||||
guiTimezone: true
|
|
||||||
|
|
||||||
# Conversions vc (console virtuelle) → X11
|
|
||||||
convertedKeymapPath: "/lib/kbd/keymaps/xkb"
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
# ============================================================
|
|
||||||
# FWS Linux — modules/locale.conf
|
|
||||||
# ============================================================
|
|
||||||
|
|
||||||
# Région/timezone par défaut
|
|
||||||
region: "Europe"
|
|
||||||
zone: "Paris"
|
|
||||||
|
|
||||||
# Langue par défaut
|
|
||||||
locale: "fr_FR.UTF-8"
|
|
||||||
|
|
||||||
# Format des nombres, dates, monnaie
|
|
||||||
# Laisse vide pour utiliser la même valeur que locale
|
|
||||||
localeGenPath: "/etc/locale.gen"
|
|
||||||
|
|
||||||
# Timezone GeoIP (détection auto basée sur l'IP)
|
|
||||||
geoipStyle: "json"
|
|
||||||
geoipUrl: "https://geoip.kde.org/v1/calamares"
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
# ============================================================
|
|
||||||
# FWS Linux — modules/packages.conf
|
|
||||||
# Paquets installés via pacman pendant l'installation
|
|
||||||
# ============================================================
|
|
||||||
|
|
||||||
# Gestionnaire de paquets
|
|
||||||
backend: pacman
|
|
||||||
|
|
||||||
# Ne pas mettre à jour la base de données pacman (déjà dans le live)
|
|
||||||
update_db: false
|
|
||||||
|
|
||||||
operations:
|
|
||||||
- install:
|
|
||||||
# Base système
|
|
||||||
- base
|
|
||||||
- base-devel
|
|
||||||
- linux
|
|
||||||
- linux-headers
|
|
||||||
- linux-firmware
|
|
||||||
|
|
||||||
# Bootloader
|
|
||||||
- grub
|
|
||||||
- efibootmgr
|
|
||||||
- os-prober
|
|
||||||
- mkinitcpio-openswap
|
|
||||||
|
|
||||||
# Réseau
|
|
||||||
- networkmanager
|
|
||||||
- network-manager-applet
|
|
||||||
- wpa_supplicant
|
|
||||||
- dhcpcd
|
|
||||||
|
|
||||||
# Outils essentiels
|
|
||||||
- sudo
|
|
||||||
- nano
|
|
||||||
- vim
|
|
||||||
- git
|
|
||||||
- curl
|
|
||||||
- wget
|
|
||||||
- htop
|
|
||||||
- bash-completion
|
|
||||||
|
|
||||||
# Locale & timezone
|
|
||||||
- tzdata
|
|
||||||
|
|
||||||
# Optionnel — retire ce qui ne correspond pas à FWS
|
|
||||||
- pipewire
|
|
||||||
- pipewire-pulse
|
|
||||||
- wireplumber
|
|
||||||
|
|
||||||
# Paquets à retirer du système live (pas nécessaires après install)
|
|
||||||
- remove:
|
|
||||||
- calamares
|
|
||||||
- calamares-config
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
# ============================================================
|
|
||||||
# FWS Linux — modules/partition.conf
|
|
||||||
# ============================================================
|
|
||||||
|
|
||||||
# Backend de partitionnement
|
|
||||||
backend: kpmcore
|
|
||||||
|
|
||||||
# Autoriser le partitionnement manuel
|
|
||||||
allowManualPartitioning: true
|
|
||||||
|
|
||||||
# Schéma de partition par défaut (pour install automatique)
|
|
||||||
# Options: mbr, gpt
|
|
||||||
defaultPartitionTableType: gpt
|
|
||||||
|
|
||||||
# Swap
|
|
||||||
# Options: none, small, suspend, file
|
|
||||||
defaultSwapType: small
|
|
||||||
|
|
||||||
# Taille minimale des partitions en MiB
|
|
||||||
defaultFileSystemType: "ext4"
|
|
||||||
|
|
||||||
# Partitions EFI (pour UEFI)
|
|
||||||
efiSystemPartition: "/boot/efi"
|
|
||||||
efiSystemPartitionSize: 300
|
|
||||||
|
|
||||||
# Point de montage racine
|
|
||||||
requiredStorage: 20.0
|
|
||||||
|
|
||||||
# Systèmes de fichiers proposés à l'utilisateur
|
|
||||||
availableFileSystemTypes: ["ext4", "btrfs", "xfs", "f2fs"]
|
|
||||||
|
|
||||||
# Chiffrement
|
|
||||||
# Activer le chiffrement LUKS
|
|
||||||
allowZfs: true
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
# ============================================================
|
|
||||||
# FWS Linux — modules/services-systemd.conf
|
|
||||||
# Services systemd activés sur le système installé
|
|
||||||
# ============================================================
|
|
||||||
|
|
||||||
services:
|
|
||||||
# Réseau
|
|
||||||
- name: NetworkManager
|
|
||||||
mandatory: true
|
|
||||||
|
|
||||||
# DHCP
|
|
||||||
- name: dhcpcd
|
|
||||||
mandatory: false
|
|
||||||
|
|
||||||
# Heure synchronisée
|
|
||||||
- name: systemd-timesyncd
|
|
||||||
mandatory: true
|
|
||||||
|
|
||||||
# Gestionnaire de session graphique
|
|
||||||
- name: lightdm
|
|
||||||
mandatory: true
|
|
||||||
|
|
||||||
# Ajoute ici tes services FWS supplémentaires
|
|
||||||
# - name: mon-service-fws
|
|
||||||
# mandatory: false
|
|
||||||
|
|
||||||
targets: []
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
# ============================================================
|
|
||||||
# FWS Linux — modules/unpackfs.conf
|
|
||||||
# Copie le système live vers le disque cible
|
|
||||||
# ============================================================
|
|
||||||
|
|
||||||
unpack:
|
|
||||||
# Source : le squashfs de l'ISO FWS
|
|
||||||
# Adapte "FWS" selon la valeur de iso_name dans profiledef.sh
|
|
||||||
- source: /run/archiso/bootmnt/FWS/x86_64/airootfs.sfs
|
|
||||||
sourcefs: squashfs
|
|
||||||
destination: ""
|
|
||||||
|
|
||||||
# Alternative si tu utilises erofs au lieu de squashfs :
|
|
||||||
# - source: /run/archiso/bootmnt/FWS/x86_64/airootfs.erofs
|
|
||||||
# sourcefs: erofs
|
|
||||||
# destination: ""
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
# ============================================================
|
|
||||||
# FWS Linux — modules/users.conf
|
|
||||||
# ============================================================
|
|
||||||
|
|
||||||
# Nom d'hôte par défaut
|
|
||||||
defaultGroups:
|
|
||||||
- users
|
|
||||||
- lp
|
|
||||||
- video
|
|
||||||
- network
|
|
||||||
- storage
|
|
||||||
- wheel
|
|
||||||
- audio
|
|
||||||
- optical
|
|
||||||
- scanner
|
|
||||||
- power
|
|
||||||
|
|
||||||
# Autoriser le login automatique
|
|
||||||
autologinGroup: autologin
|
|
||||||
doAutologin: true
|
|
||||||
|
|
||||||
# Sudoers — donne les droits sudo au groupe wheel
|
|
||||||
sudoersGroup: wheel
|
|
||||||
|
|
||||||
# Shell par défaut pour les nouveaux utilisateurs
|
|
||||||
userShell: /bin/bash
|
|
||||||
|
|
||||||
# Hostname par défaut
|
|
||||||
hostname:
|
|
||||||
location: EtcFile
|
|
||||||
template: "fws-${first}"
|
|
||||||
|
|
||||||
# Règles pour les mots de passe
|
|
||||||
passwordRequirements:
|
|
||||||
minLength: 6
|
|
||||||
maxLength: -1
|
|
||||||
nonempty: true
|
|
||||||
|
|
||||||
# Permet de définir le même mot de passe pour root et user
|
|
||||||
allowWeakPasswords: false
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
# ============================================================
|
|
||||||
# FWS Linux — modules/welcome.conf
|
|
||||||
# ============================================================
|
|
||||||
|
|
||||||
# Afficher les conditions requises avant l'installation
|
|
||||||
showSupportUrl: true
|
|
||||||
showKnownIssuesUrl: true
|
|
||||||
showReleaseNotesUrl: false
|
|
||||||
showDonateUrl: false
|
|
||||||
|
|
||||||
# Vérifications système requises
|
|
||||||
requirements:
|
|
||||||
# Espace disque minimum en MiB
|
|
||||||
requiredStorage: 20.0
|
|
||||||
|
|
||||||
# RAM minimum en MiB
|
|
||||||
requiredRam: 2.0
|
|
||||||
|
|
||||||
# Vérifier la connexion internet (optionnel)
|
|
||||||
checkInternet: false
|
|
||||||
|
|
||||||
# Vérifier si on tourne en live (pas déjà installé)
|
|
||||||
checkForRoot: true
|
|
||||||
|
|
||||||
# Vérifier l'alimentation (AC power)
|
|
||||||
checkPower: true
|
|
||||||
|
|
||||||
# Ne bloque pas l'install si pas connecté
|
|
||||||
internetCheckUrl: "https://cloudflare.com"
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
# ============================================================
|
|
||||||
# FWS Linux — Calamares settings.conf
|
|
||||||
# ============================================================
|
|
||||||
|
|
||||||
modules-search: [ local, /usr/lib/calamares/modules ]
|
|
||||||
|
|
||||||
sequence:
|
|
||||||
- show:
|
|
||||||
- welcome
|
|
||||||
- locale
|
|
||||||
- keyboard
|
|
||||||
- partition
|
|
||||||
- users
|
|
||||||
- summary
|
|
||||||
|
|
||||||
- exec:
|
|
||||||
- partition
|
|
||||||
- mount
|
|
||||||
- luksbootkeyfile
|
|
||||||
- luksopenswaphookcfg
|
|
||||||
- unpackfs
|
|
||||||
- machineid
|
|
||||||
- fstab
|
|
||||||
- locale
|
|
||||||
- keyboard
|
|
||||||
- localecfg
|
|
||||||
- users
|
|
||||||
- networkcfg
|
|
||||||
- hwclock
|
|
||||||
- services-systemd
|
|
||||||
- packages
|
|
||||||
- initcpiocfg
|
|
||||||
- initcpio
|
|
||||||
- grubcfg
|
|
||||||
- bootloader
|
|
||||||
- umount
|
|
||||||
|
|
||||||
- show:
|
|
||||||
- finished
|
|
||||||
|
|
||||||
branding: fws
|
|
||||||
|
|
||||||
# Demande confirmation avant d'installer
|
|
||||||
prompt-install: true
|
|
||||||
|
|
||||||
# Ne pas chroot (laisser à false pour une install normale)
|
|
||||||
dont-chroot: false
|
|
||||||
|
|
||||||
# Désactive les vérifications réseau au démarrage
|
|
||||||
disable-cancel: false
|
|
||||||
disable-cancel-during-exec: true
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=Calamares Installer
|
|
||||||
After=display-manager.service
|
|
||||||
Requires=display-manager.service
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
ExecStart=/usr/bin/calamares
|
|
||||||
Restart=on-failure
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=graphical.target
|
|
||||||
@@ -1,107 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# ============================================================
|
|
||||||
# FWS Linux — fws-installer
|
|
||||||
# Script de lancement de Calamares
|
|
||||||
# ============================================================
|
|
||||||
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
# Vérifie que Calamares est installé
|
|
||||||
if ! command -v calamares >/dev/null 2>&1; then
|
|
||||||
echo "ERREUR : calamares n'est pas installé."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Vérifie qu'on tourne bien en live
|
|
||||||
if [ ! -d /run/archiso ]; then
|
|
||||||
echo "ATTENTION : Ce script doit être lancé depuis le live FWS."
|
|
||||||
fi
|
|
||||||
|
|
||||||
choose_desktop() {
|
|
||||||
local selection
|
|
||||||
|
|
||||||
if command -v zenity >/dev/null 2>&1; then
|
|
||||||
selection=$(zenity --list \
|
|
||||||
--title="Choix de l'environnement" \
|
|
||||||
--width=520 \
|
|
||||||
--height=320 \
|
|
||||||
--radiolist \
|
|
||||||
--print-column=2 \
|
|
||||||
--column="Choisir" --column="Environnement" --column="Description" \
|
|
||||||
TRUE "xfce" "Léger et classique" \
|
|
||||||
FALSE "kde" "KDE Plasma" \
|
|
||||||
FALSE "gnome" "GNOME" \
|
|
||||||
FALSE "hyprland" "Wayland / Hyprland" \
|
|
||||||
--text="Sélectionne l'environnement desktop à installer") || exit 1
|
|
||||||
|
|
||||||
printf '%s' "$selection"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf 'xfce'
|
|
||||||
}
|
|
||||||
|
|
||||||
DESKTOP="${FWS_DESKTOP:-xfce}"
|
|
||||||
DESKTOP_EXPLICIT=0
|
|
||||||
CALAMARES_ARGS=()
|
|
||||||
|
|
||||||
while [ "$#" -gt 0 ]; do
|
|
||||||
case "$1" in
|
|
||||||
-d|--desktop)
|
|
||||||
shift
|
|
||||||
DESKTOP="${1:-xfce}"
|
|
||||||
DESKTOP_EXPLICIT=1
|
|
||||||
;;
|
|
||||||
--desktop=*)
|
|
||||||
DESKTOP="${1#*=}"
|
|
||||||
DESKTOP_EXPLICIT=1
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
CALAMARES_ARGS+=("$1")
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
shift || true
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ "$DESKTOP_EXPLICIT" -eq 0 ] && [ -z "${FWS_DESKTOP:-}" ]; then
|
|
||||||
DESKTOP="$(choose_desktop)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$DESKTOP" in
|
|
||||||
xfce|kde|gnome|hyprland)
|
|
||||||
export FWS_DESKTOP="$DESKTOP"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Environnement invalide: $DESKTOP"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Lance Calamares avec les droits root
|
|
||||||
# -D6 active les logs de debug (retirer en production)
|
|
||||||
if [ "$EUID" -ne 0 ]; then
|
|
||||||
if command -v sudo >/dev/null 2>&1; then
|
|
||||||
# Persist the chosen desktop for Calamares (read by shellprocess before chroot)
|
|
||||||
if [ -n "${FWS_DESKTOP:-}" ]; then
|
|
||||||
mkdir -p /run
|
|
||||||
printf '%s' "$FWS_DESKTOP" > /run/fws-desktop
|
|
||||||
fi
|
|
||||||
exec sudo -E calamares "${CALAMARES_ARGS[@]}"
|
|
||||||
elif command -v pkexec >/dev/null 2>&1; then
|
|
||||||
if [ -n "${FWS_DESKTOP:-}" ]; then
|
|
||||||
mkdir -p /run
|
|
||||||
printf '%s' "$FWS_DESKTOP" > /run/fws-desktop
|
|
||||||
fi
|
|
||||||
exec pkexec calamares "${CALAMARES_ARGS[@]}"
|
|
||||||
else
|
|
||||||
echo "ERREUR : Impossible de lancer Calamares en tant que root (sudo/pkexec non trouvés)."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
if [ -n "${FWS_DESKTOP:-}" ]; then
|
|
||||||
mkdir -p /run
|
|
||||||
printf '%s' "$FWS_DESKTOP" > /run/fws-desktop
|
|
||||||
fi
|
|
||||||
exec calamares "${CALAMARES_ARGS[@]}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
@@ -1,96 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
fws_first_user() {
|
|
||||||
awk -F: '$3 >= 1000 && $1 != "nobody" { print $1; exit }' /etc/passwd
|
|
||||||
}
|
|
||||||
|
|
||||||
FWS_LOG=/var/log/fws-desktop-init.log
|
|
||||||
|
|
||||||
# Paquets communs à TOUS les bureaux graphiques. La cible de base n'installe
|
|
||||||
# rien de tout ça (packages.conf ne fait que des « remove »), donc chaque
|
|
||||||
# bureau doit les tirer explicitement : audio (PipeWire), applet réseau NM,
|
|
||||||
# accès volumes (gvfs), dossiers utilisateur, trousseau, polices (dont emoji).
|
|
||||||
# (Xfce a déjà sa propre liste complète et n'utilise pas ce tableau.)
|
|
||||||
FWS_BASE_PACKAGES=(
|
|
||||||
pipewire pipewire-alsa pipewire-pulse wireplumber pavucontrol
|
|
||||||
networkmanager network-manager-applet
|
|
||||||
gvfs gvfs-mtp gvfs-gphoto2 gvfs-smb
|
|
||||||
xdg-user-dirs xdg-user-dirs-gtk xdg-utils
|
|
||||||
gnome-keyring libsecret polkit
|
|
||||||
noto-fonts noto-fonts-emoji ttf-dejavu ttf-liberation
|
|
||||||
)
|
|
||||||
|
|
||||||
fws_install_packages() {
|
|
||||||
# NE PAS faire « pacman -Sy <paquets> » : rafraîchir les bases sans
|
|
||||||
# upgrader le système (partial upgrade) provoque des « conflicting
|
|
||||||
# files » / dépendances cassées → pacman sort en code 1.
|
|
||||||
#
|
|
||||||
# 1) Rafraîchit d'abord archlinux-keyring (seule exception admise au
|
|
||||||
# partial upgrade) : son hook relance pacman-key --populate et évite
|
|
||||||
# les erreurs de signature dans le chroot.
|
|
||||||
pacman -Sy --noconfirm --needed archlinux-keyring 2>&1 | tee -a "$FWS_LOG" || true
|
|
||||||
|
|
||||||
# 2) -Syu COMPLET. On désactive CheckSpace à la volée via une conf
|
|
||||||
# temporaire (process substitution) : le calcul d'espace est non
|
|
||||||
# fiable pendant une install en chroot et peut faire échouer pacman.
|
|
||||||
# La conf du système installé (/etc/pacman.conf) reste intacte.
|
|
||||||
# --noconfirm sélectionne le provider par défaut (ex.
|
|
||||||
# qt6-multimedia-ffmpeg) sans bloquer sur une saisie.
|
|
||||||
if ! pacman --config <(sed 's/^[[:space:]]*CheckSpace/#CheckSpace/' /etc/pacman.conf) \
|
|
||||||
-Syu --noconfirm --needed "$@" 2>&1 | tee -a "$FWS_LOG"; then
|
|
||||||
# Surface l'erreur réelle (sinon noyée/tronquée dans la boîte
|
|
||||||
# Calamares). Tout est aussi conservé dans $FWS_LOG sur la cible.
|
|
||||||
echo "" >&2
|
|
||||||
echo "######## ÉCHEC pacman — log complet : $FWS_LOG (système installé) ########" >&2
|
|
||||||
echo "######## Lignes d'erreur détectées : ########" >&2
|
|
||||||
grep -iE "error|conflicting|exists in filesystem|no space|impossible|introuvable|failed" \
|
|
||||||
"$FWS_LOG" | tail -n 25 >&2
|
|
||||||
echo "#########################################################################" >&2
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|
||||||
fws_set_graphical_default() {
|
|
||||||
# Système installé : démarrer en mode graphique (lance le display manager).
|
|
||||||
# Idempotent ; le défaut systemd est déjà graphical.target mais on le rend
|
|
||||||
# explicite pour ne dépendre d'aucun héritage du squashfs archiso.
|
|
||||||
systemctl set-default graphical.target >/dev/null 2>&1 || true
|
|
||||||
}
|
|
||||||
|
|
||||||
fws_write_lightdm_config() {
|
|
||||||
local user_name="$1"
|
|
||||||
local session_name="$2"
|
|
||||||
|
|
||||||
if [ -z "$user_name" ]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir -p /etc/lightdm/lightdm.conf.d
|
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|
||||||
fws_write_sddm_config() {
|
|
||||||
local user_name="$1"
|
|
||||||
local session_name="$2"
|
|
||||||
|
|
||||||
if [ -z "$user_name" ]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir -p /etc/sddm.conf.d
|
|
||||||
printf '[Autologin]\nUser=%s\nSession=%s.desktop\nRelogin=false\n' "$user_name" "$session_name" > /etc/sddm.conf.d/50-fws.conf
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
. /usr/local/bin/fws-desktop-init-common
|
|
||||||
|
|
||||||
first_user="$(fws_first_user)"
|
|
||||||
|
|
||||||
fws_install_packages "${FWS_BASE_PACKAGES[@]}" gnome sddm
|
|
||||||
fws_disable_services lightdm.service gdm.service
|
|
||||||
fws_enable_services sddm.service
|
|
||||||
fws_set_graphical_default
|
|
||||||
fws_write_sddm_config "$first_user" gnome
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
. /usr/local/bin/fws-desktop-init-common
|
|
||||||
|
|
||||||
first_user="$(fws_first_user)"
|
|
||||||
|
|
||||||
# Config Hyprland minimale + autostart (agent polkit, barre, applet réseau,
|
|
||||||
# notifications). Sans config ni agent polkit, la session est inutilisable
|
|
||||||
# pour un non-technicien (pas de raccourcis, pas d'élévation de privilèges GUI).
|
|
||||||
fws_write_hyprland_config() {
|
|
||||||
local user_name="$1"
|
|
||||||
[ -n "$user_name" ] && [ -d "/home/$user_name" ] || return 0
|
|
||||||
local cfg_dir="/home/$user_name/.config/hypr"
|
|
||||||
install -d -m 755 "$cfg_dir"
|
|
||||||
if [ -f /usr/share/hypr/hyprland.conf ]; then
|
|
||||||
cp -f /usr/share/hypr/hyprland.conf "$cfg_dir/hyprland.conf"
|
|
||||||
else
|
|
||||||
cat > "$cfg_dir/hyprland.conf" <<'EOF'
|
|
||||||
$terminal = kitty
|
|
||||||
$menu = wofi --show drun
|
|
||||||
bind = SUPER, Q, exec, $terminal
|
|
||||||
bind = SUPER, R, exec, $menu
|
|
||||||
bind = SUPER, C, killactive
|
|
||||||
bind = SUPER, M, exit
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
cat >> "$cfg_dir/hyprland.conf" <<'EOF'
|
|
||||||
|
|
||||||
# ── FWS : démarrage automatique de la session ──
|
|
||||||
exec-once = systemctl --user start hyprpolkitagent
|
|
||||||
exec-once = waybar
|
|
||||||
exec-once = nm-applet --indicator
|
|
||||||
exec-once = mako
|
|
||||||
EOF
|
|
||||||
chown -R "$user_name:$user_name" "/home/$user_name/.config"
|
|
||||||
}
|
|
||||||
|
|
||||||
# PipeWire/applet NM/polices viennent de FWS_BASE_PACKAGES ; hyprpolkitagent
|
|
||||||
# fournit l'agent d'authentification polkit pour Wayland/Hyprland.
|
|
||||||
fws_install_packages "${FWS_BASE_PACKAGES[@]}" \
|
|
||||||
hyprland xdg-desktop-portal-hyprland xdg-desktop-portal-gtk \
|
|
||||||
waybar wofi kitty mako swaybg swayidle swaylock \
|
|
||||||
xorg-xwayland wl-clipboard grim slurp \
|
|
||||||
qt5-wayland qt6-wayland hyprpolkitagent sddm
|
|
||||||
fws_disable_services lightdm.service gdm.service
|
|
||||||
fws_enable_services sddm.service
|
|
||||||
fws_set_graphical_default
|
|
||||||
fws_write_sddm_config "$first_user" hyprland
|
|
||||||
fws_write_hyprland_config "$first_user"
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
. /usr/local/bin/fws-desktop-init-common
|
|
||||||
|
|
||||||
first_user="$(fws_first_user)"
|
|
||||||
|
|
||||||
fws_install_packages "${FWS_BASE_PACKAGES[@]}" plasma-meta konsole dolphin sddm
|
|
||||||
fws_disable_services lightdm.service gdm.service
|
|
||||||
fws_enable_services sddm.service
|
|
||||||
fws_set_graphical_default
|
|
||||||
fws_write_sddm_config "$first_user" plasma
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
. /usr/local/bin/fws-desktop-init-common
|
|
||||||
|
|
||||||
first_user="$(fws_first_user)"
|
|
||||||
|
|
||||||
fws_install_packages \
|
|
||||||
xfce4 xfce4-goodies \
|
|
||||||
lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings \
|
|
||||||
gvfs gvfs-mtp gvfs-gphoto2 gvfs-smb gvfs-nfs \
|
|
||||||
pipewire pipewire-alsa pipewire-pulse wireplumber pavucontrol \
|
|
||||||
network-manager-applet \
|
|
||||||
xfce-polkit \
|
|
||||||
xdg-user-dirs xdg-user-dirs-gtk xdg-utils \
|
|
||||||
gnome-keyring libsecret \
|
|
||||||
noto-fonts noto-fonts-emoji ttf-dejavu ttf-liberation \
|
|
||||||
ffmpegthumbnailer tumbler \
|
|
||||||
blueman \
|
|
||||||
xorg-server xorg-xinit xorg-xrandr arandr \
|
|
||||||
accountsservice \
|
|
||||||
upower
|
|
||||||
fws_disable_services sddm.service gdm.service
|
|
||||||
fws_enable_services lightdm.service
|
|
||||||
fws_set_graphical_default
|
|
||||||
fws_write_lightdm_config "$first_user" xfce
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# ============================================================
|
|
||||||
# FWS — Sélecteur d'environnement de bureau (LIVE uniquement)
|
|
||||||
#
|
|
||||||
# Le paquet calamares (AUR) ne compile PAS le module packagechooser :
|
|
||||||
# on choisit donc le bureau ICI, dans le live, AVANT de lancer Calamares.
|
|
||||||
# Le choix est écrit dans /run/fws-desktop, lu ensuite par :
|
|
||||||
# - le module Calamares fws-desktop-choice (validation),
|
|
||||||
# - shellprocess.conf → /usr/local/bin/fws-desktop-init-<bureau>.
|
|
||||||
# ============================================================
|
|
||||||
set -u
|
|
||||||
|
|
||||||
STATE=/run/fws-desktop
|
|
||||||
DEFAULT=xfce
|
|
||||||
VALID_RE='^(xfce|kde|gnome|hyprland)$'
|
|
||||||
|
|
||||||
choice=""
|
|
||||||
|
|
||||||
# Dialogue graphique si zenity + X sont disponibles ; sinon repli silencieux.
|
|
||||||
if command -v zenity >/dev/null 2>&1 && [ -n "${DISPLAY:-}" ]; then
|
|
||||||
choice="$(zenity --list --radiolist \
|
|
||||||
--title="FWS — Environnement de bureau" \
|
|
||||||
--text="Choisissez le bureau à installer :" \
|
|
||||||
--width=560 --height=360 \
|
|
||||||
--column="Choix" --column="id" --column="Bureau" \
|
|
||||||
--hide-column=2 --print-column=2 \
|
|
||||||
TRUE xfce "Xfce — léger, stable et rapide (recommandé)" \
|
|
||||||
FALSE kde "KDE Plasma — moderne et très personnalisable" \
|
|
||||||
FALSE gnome "GNOME — épuré et intuitif" \
|
|
||||||
FALSE hyprland "Hyprland — compositeur Wayland dynamique" \
|
|
||||||
2>/dev/null)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Normalisation : toute valeur vide / annulée / invalide → bureau par défaut.
|
|
||||||
choice="$(printf '%s' "$choice" | tr -d '[:space:]')"
|
|
||||||
if ! printf '%s' "$choice" | grep -Eq "$VALID_RE"; then
|
|
||||||
choice="$DEFAULT"
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf '%s' "$choice" > "$STATE"
|
|
||||||
exit 0
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
[Desktop Entry]
|
|
||||||
Version=1.0
|
|
||||||
Type=Application
|
|
||||||
Name=Installer FWS Linux
|
|
||||||
Name[fr]=Installer FWS Linux
|
|
||||||
Comment=Installe FWS Linux sur votre machine
|
|
||||||
Comment[fr]=Installe FWS Linux sur votre machine
|
|
||||||
Exec=fws-installer
|
|
||||||
Icon=/etc/calamares/branding/fws/logo.png
|
|
||||||
Terminal=false
|
|
||||||
Categories=System;
|
|
||||||
Keywords=install;installer;fws;calamares;
|
|
||||||
StartupNotify=true
|
|
||||||
Reference in New Issue
Block a user