Modules système
⚙ darkone.system.core
Section intitulée « ⚙ darkone.system.core »Le module DNF principal.
Configure le chargeur systemd-boot, le noyau LTS, la police
JetBrains Mono Nerd (avec kmscon pour le TTY), l’optimisation
du magasin Nix chaque nuit et la collecte des ordures hebdomadaire
(rétention de 30 j), le pare-feu, la politique de suspension (les serveurs
peuvent la désactiver complètement via disableSuspend), les règles polkit
permettant à wheel d’arrêter/redémarrer, et un groupe common-files
partagé/l’utilisateur pour les dossiers médias inter-services.
- enable
boolSystème principal du framework Darkone (activé par défaut) - enableSystemdBoot
boolActiver le chargeur d’amorçage par défaut - enableFstrim
boolOptimisation SSD avec fstrim - enableFirewall
boolActiver le pare-feu (par défaut vrai) - enableSops
boolActiver le module dnf sops (par défaut vrai) - enableFlatpak
boolActiver la configuration DNF flatpak (uniquement pour les environnements graphiques) - enableKmscon
boolActiver la police nerd pour TTY - enableBoost
boolActiver l’overclocking, corectl - enableAutoSuspend
boolActiver la suspension automatique (pour les ordinateurs portables, ignoré si disableSuspend est vrai) - disableSuspend
boolDésactivation complète de la suspension (pour les serveurs) - enableCommonFilesUser
boolActiver l’utilisateur common-files utilisé par plusieurs services
darkone.system.core = { enable = true; enableSystemdBoot = true; enableFstrim = true; enableFirewall = true; enableSops = true; enableFlatpak = true; enableKmscon = true; enableBoost = false; enableAutoSuspend = false; disableSuspend = false; enableCommonFilesUser = false;};⚙ darkone.system.documentation
Section intitulée « ⚙ darkone.system.documentation »Documentation (man) pour les développeurs et les administrateurs.
- enable
boolActiver la documentation technique utile (man, nixos)
darkone.system.documentation.enable = false;⚙ darkone.system.hardware
Section intitulée « ⚙ darkone.system.hardware »Améliorations de la configuration matérielle.
- enable
boolActiver les optimisations matérielles - enableIntel
boolActiver les mises à jour du microcode Intel - enableAmd
boolActiver les mises à jour du microcode AMD
darkone.system.hardware = { enable = false; enableIntel = false; enableAmd = false;};⚙ darkone.system.i18n
Section intitulée « ⚙ darkone.system.i18n »Configuration de la localisation et de la langue.
- enable
boolActiver i18n avec la configuration de la zone de réseau par défaut - locale
strMatching localeRegexLocale réseau, doit correspondre à la formexx_YY.UTF-8. - timeZone
strFuseau horaire réseau
darkone.system.i18n = { enable = false; locale = "fr_FR.UTF-8"; timeZone = "Europe/Paris";};⚙ darkone.system.security
Section intitulée « ⚙ darkone.system.security »Durcissement du système ANSSI BP-028 v2.0 (GNU/Linux). (en cours)
Module recommandé, activé dans certains profils d’hôte ou manuellement selon les besoins. Applique progressivement les recommandations ANSSI selon le niveau et la catégorie de machine choisis. Chaque profil d’hôte définit son niveau et sa catégorie :
darkone.system.security = { level = "intermediary"; # minimal | intermediary | reinforced | high category = "server"; # base | client | server};Les règles incompatibles avec l’environnement sont exclues par tag :
darkone.system.security.excludes = [ "needs-jit" "needs-hibernation" ];Une règle spécifique peut être contournée avec une justification obligatoire :
darkone.system.security.exceptions = { R9.rationale = "Docker rootless required during development.";};- enable
boolActiver le module de durcissement ANSSI BP-028 v2.0. - level
enum [ "minimal" "intermediary" "reinforced" "high" ]Niveau de durcissement ANSSI cible. - category
enum [ "base" "client" "server" ]Catégorie de machine qui sélectionne les sous-ensembles de règles. - excludes
listOf strTags qui désactivent des groupes de règles entiers. - exceptions
attrsExceptions par règle avec justification obligatoire. - adminMailbox
strAdresse e-mail de l’administrateur (sudo R39, alias MTA R75). - useHardenedKernel
boolUtiliser linuxPackages_hardened (R60, C1) au lieu du noyau par défaut. - allowedActiveUsers
listOf strListe exhaustive des comptes utilisateurs actifs (validation R30).
darkone.system.security = { enable = false; level = "minimal"; category = "base"; excludes = [ ]; exceptions = { }; adminMailbox = "admin@exemple.fr"; useHardenedKernel = false; allowedActiveUsers = [ ];};⚙ darkone.system.services
Section intitulée « ⚙ darkone.system.services »Enregistrement et configuration des services DNF.
- enable
boolActiver le gestionnaire de services DNF pour enregistrer et exposer les services - service
attrsConfiguration des services globaux <name>- enable
boolActiver le proxy de service - defaultParams
submoduleCes options sont calculées par dnfLib.srv.extractServiceParams- domain
strNom de domaine du service - title
strNom d’affichage sur la page d’accueil - description
strDescription du service pour la page d’accueil - icon
strNom de l’icône pour la page d’accueil 🡕 - global
boolLe service global est accessible sur Internet - noRobots
boolEmpêcher les robots d’explorer si global est vrai - fqdn
strFQDN calculé du service avant le proxy inverse - href
strURL calculée du service avant le proxy inverse - ip
strIP calculée pour contacter le service
- domain
- displayOnHomepage
boolAfficher un lien sur la page d’accueil - reverseProxy
boolAccessible via le proxy inverse de la passerelle de zone (DNS pointe vers l’IP LAN de la passerelle) - uniquePerZone
boolAu maximum une instance autorisée par zone (validation du générateur) - externalAccess
boolService www-zone accessible depuis le LAN via une adresse IP d’hôte fixe (par exemple headscale, turn) - persist.dirs
listOf strRépertoires persistants du service - persist.files
listOf strFichiers persistants du service - persist.dbDirs
listOf strRépertoires persistants avec base(s) de données - persist.dbFiles
listOf strFichier(s) de base de données du service - persist.varDirs
listOf strFichiers secondaires variables (journal, cache, etc.) - persist.mediaDirs
listOf strRépertoires médias du service (images, vidéos, gros fichiers) - proxy.enable
boolCréer une configuration virtualHost (faux pour les services qui gèrent les leurs) - proxy.isProtected
boolService protégé par Oauth2 - proxy.isInternal
boolLier le service sur l’interface interne uniquement (non accessible Internet) - proxy.hasReverseProxy
boolCeci est un proxy inverse (ou une autre configuration virtualhost via extraConfig) - proxy.defaultService
boolEst le service par défaut - proxy.servicePort
nullOr portPort interne du service - proxy.preExtraConfig
linesConfiguration virtualHost caddy supplémentaire (préfixe) - proxy.extraConfig
linesConfiguration virtualHost caddy supplémentaire - proxy.extraGlobalConfig
linesConfiguration caddy supplémentaire - proxy.scheme
strSchéma du service interne (http / https)
- enable
darkone.system.services = { enable = false; service.enable = false; service.defaultParams.domain = ""; service.defaultParams.title = ""; service.defaultParams.description = ""; service.defaultParams.icon = ""; service.defaultParams.global = false; service.defaultParams.noRobots = true; service.defaultParams.fqdn = ""; service.defaultParams.href = ""; service.defaultParams.ip = ""; service.displayOnHomepage = true; service.reverseProxy = true; service.uniquePerZone = false; service.externalAccess = false; service.persist.dirs = [ ]; service.persist.files = [ ]; service.persist.dbDirs = [ ]; service.persist.dbFiles = [ ]; service.persist.varDirs = [ ]; service.persist.mediaDirs = [ ]; service.proxy.enable = true; service.proxy.isProtected = false; service.proxy.isInternal = false; service.proxy.hasReverseProxy = true; service.proxy.defaultService = false; service.proxy.servicePort = null; service.proxy.preExtraConfig = ""; service.proxy.extraConfig = ""; service.proxy.extraGlobalConfig = ""; service.proxy.scheme = "https";};⚙ darkone.system.sops
Section intitulée « ⚙ darkone.system.sops »Gestion des mots de passe et secrets DNF sops.
Connecte sops-nix à usr/secrets/secrets.yaml et le déverrouille avec la
clé SSH de l’hôte (ssh_host_ed25519_key) plus la clé d’infrastructure dédiée
age (/etc/sops/age/infra.key). Pré-déclare un groupe sops partagé,
les secrets default-password / default-password-hash (lisible par le groupe
sops), et un secret user/<login>/password-hash par utilisateur d’hôte
(avec neededForUsers = true pour que le hash soit disponible avant la
création des comptes utilisateur).
- enable
boolActiver la configuration automatique sops pour DNF
darkone.system.sops.enable = false;⚙ darkone.system.srv-dirs
Section intitulée « ⚙ darkone.system.srv-dirs »Service de gestion des répertoires partagés.
- enable
boolActiver les répertoires srv, créer le répertoire racine (par défaut /srv) - enableNfs
boolActiver les chemins de service nfs (nfs/common, nfs/homes) - enableMedias
boolActiver les chemins des services médias (medias/[videos|music|incomming/…]) - root
strRépertoire racine pour les données persistantes (/srv) - nfs
strRépertoire racine NFS (/srv/nfs) - homes
strRépertoire pour les domiciles partagés (/srv/nfs/homes) - common
strRépertoire commun partagé (/srv/nfs/common lié à ~/Public) - medias
strRépertoire racine des médias (/srv/medias) - music
strRépertoire partagé des fichiers musicaux (/srv/medias/music) - videos
strRépertoire partagé des fichiers vidéo (/srv/medias/videos) - incoming
strRépertoire partagé entrant (/srv/medias/incoming accès écriture) - incomingMusic
strRépertoire partagé entrant (/srv/medias/incoming/music accès écriture) - incomingVideos
strRépertoire partagé entrant (/srv/medias/incoming/videos accès écriture)
darkone.system.srv-dirs = { enable = cfg.enableNfs || cfg.enableMedias; enableNfs = false; enableMedias = false; root = "/srv"; nfs = null; homes = null; common = null; medias = null; music = null; videos = null; incoming = null; incomingMusic = null; incomingVideos = null;};⚙ darkone.system.testing
Section intitulée « ⚙ darkone.system.testing »Mode de test autonome pour le pilote de test NixOS.
Lorsqu’il est activé, neutralise les bits irréductiblement externes/runtime pour qu’un nœud puisse être exercé dans une VM : headscale/tailscale deviennent des no-ops et un certificat TLS fixe peut stubifier ACME. Il permet également à la configuration workDir-only (nix.pub, harmonia.pub) d’être ignorée par core/ncps. sops reste RÉEL (haute fidélité).
Objectif : utiliser, déboguer.
- standalone
boolMode de test autonome — ignorer la configuration workDir-only (nix.pub, harmonia.pub) et neutraliser les services externes - tlsCert
nullOr pathCertificat auto-signé (PEM) fourni par le harnais de test pour stubifier ACME. Jamais un chemin tests/ cuisiné dans le framework. - tlsKey
nullOr pathClé privée (PEM) couplée à tlsCert.
darkone.system.testing = { standalone = false; tlsCert = null; tlsKey = null;};