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"
|
||||
Reference in New Issue
Block a user