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:
2026-06-12 23:30:29 +02:00
parent 98d47d497c
commit 05ae9c36c3
53 changed files with 0 additions and 1481 deletions
@@ -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