Modules de service
✨ darkone.service.adguardhome
Section intitulée « ✨ darkone.service.adguardhome »AdGuard Home entièrement configuré pour passerelle / routeur local.
- enable
boolActive le service adguardhome local
darkone.service.adguardhome.enable = false;✨ darkone.service.ai
Section intitulée « ✨ darkone.service.ai »Intelligence artificielle locale (open-webui + ollama + llms).
- enable
boolActiver le service d’IA local
darkone.service.ai.enable = false;✨ darkone.service.audio
Section intitulée « ✨ darkone.service.audio »Services audio : alsa, pulse (pas jack pour le moment).
Ajoute automatiquement les utilisateurs au groupe audio quand il est activé.
- enable
boolActiver le système sonore
darkone.service.audio.enable = false;✨ darkone.service.dnsmasq
Section intitulée « ✨ darkone.service.dnsmasq »dnsmasq pré-configuré pour la passerelle locale / routeur.
- enable
boolActiver le service dnsmasq local
darkone.service.dnsmasq.enable = false;✨ darkone.service.docs
Section intitulée « ✨ darkone.service.docs »Un module LaSuite Docs entièrement configuré.
- enable
boolActiver le service de documentation local - s3Host
strNom d’hôte du backend S3 - s3Port
portPort du backend S3 - s3Bucket
strNom du bucket S3 pour le stockage des documents
darkone.service.docs = { enable = false; s3Host = "127.0.0.1"; s3Port = dnfConfig.network.ports.garage; s3Bucket = "docs";};✨ darkone.service.element
Section intitulée « ✨ darkone.service.element »Client web Element pour le service matrix local.
- enable
boolActiver le service element local
darkone.service.element.enable = false;✨ darkone.service.fail2ban
Section intitulée « ✨ darkone.service.fail2ban »Module fail2ban spécifique à DNF.
- enable
boolActiver fail2ban avec les spécificités DNF
darkone.service.fail2ban.enable = false;✨ darkone.service.forgejo
Section intitulée « ✨ darkone.service.forgejo »Une forge git forgejo entièrement configurée.
- enable
boolActiver le service forgejo local
darkone.service.forgejo.enable = false;✨ darkone.service.garage
Section intitulée « ✨ darkone.service.garage »Un service Garage S3 local entièrement configuré.
Fournit un serveur de stockage d’objets compatible S3 interne accessible uniquement sur 127.0.0.1:3900.
- enable
boolActiver le service Garage S3 local - srvPort
portPort S3 API exposé sur l’IP interne - s3Region
strNom de la région S3 (doit correspondre à la config du consommateur) - capacity
strIndice de capacité de stockage du nœud transmis àgarage layout assign. Utilisé uniquement au premier démarrage pour l’initialisation de la disposition ; n’agit pas comme un quota strict sur le système de fichiers sous-jacent. Suffixes supportés : B, KB, MB, GB, TB, PB.
darkone.service.garage = { enable = false; srvPort = srvPort; s3Region = s3Region; capacity = "500GB";};✨ darkone.service.geneweb
Section intitulée « ✨ darkone.service.geneweb »GeneWeb — Service de généalogie puissant.
- enable
boolActiver le service de généalogie GeneWeb local - enablePasswords
boolActiver les mots de passe sops (non recommandé)
darkone.service.geneweb = { enable = false; enablePasswords = false;};✨ darkone.service.harmonia
Section intitulée « ✨ darkone.service.harmonia »Harmonia : serveur de cache binaire Nix local (sert /nix/store de cet hôte).
Expose les chemins de stockage construits/réalisés localement via HTTP simple (port 5000), signés avec la clé de cache binaire du déploiement. Activez par hôte à partir de usr/config.yaml (services.harmonia), comme tout autre service DNF.
- enable
boolActiver un serveur de cache binaire Nix Harmonia local
darkone.service.harmonia.enable = false;✨ darkone.service.headscale
Section intitulée « ✨ darkone.service.headscale »Un service headscale entièrement configuré pour HCS.
- enable
boolActiver le service DNF headscale - enableGRPC
boolOuvrir le port TCP GRPC
darkone.service.headscale = { enable = false; enableGRPC = false;};✨ darkone.service.home-assistant
Section intitulée « ✨ darkone.service.home-assistant »Un Home Assistant avec certains plugins (en cours).
- enable
boolActiver home-assistant
darkone.service.home-assistant.enable = false;✨ darkone.service.homepage
Section intitulée « ✨ darkone.service.homepage »Tableau de bord d’accueil dynamiquement configuré pour votre réseau local.
- enable
boolActiver le tableau de bord d’accueil + httpd + hôte - localServices
listOf attrsServices à ajouter dans la section Applications locales - globalServices
listOf attrsServices communs et accessibles publiquement sur l’ensemble du réseau - remoteServices
listOf attrsServices à ajouter dans la section Applications distantes - bookmarks
listOf attrsRemplacer les signets par défaut (liens) - widgets
listOf attrsRemplacer les widgets par défaut
darkone.service.homepage = { enable = false; localServices = [ ]; globalServices = [ ]; remoteServices = [ ]; bookmarks = [ ]; widgets = [ ];};✨ darkone.service.idm
Section intitulée « ✨ darkone.service.idm »Service DNF Kanidm (gestionnaire d’identité).
- enable
boolActiver l’authentification unique locale avec Kanidm - oauth2
attrsModèles de client OAuth2/OIDC fournis par les modules de service. Kanidm provisionne un client par entrée correspondante dansnetwork.services, avecclientId = dnfLib.oauth2ClientName.- enable
boolIndique s’il faut provisionner des clients OAuth2 pour ce modèle. - clientName
nullOr strRemplacer le nom du client kanidm. Par défaut : dnfLib.oauth2ClientName. - displayName
strNom lisible montré sur l’écran de consentement kanidm. - imageFile
pathIcône de l’application. Téléchargée de nouveau à chaque exécution de kanidm-provision. - redirectPaths
listOf strChemins de redirection OAuth2 (un par URL de rappel acceptée). - landingPath
strChemin du point d’entrée de connexion automatique sur le service. - enableLegacyCrypto
boolAutoriser les anciens algorithmes de signature JWT (par ex. RS256). - allowInsecureClientDisablePkce
boolDésactiver PKCE sur le client (uniquement pour les clients qui ne l’implémentent pas). - preferShortUsername
nullOr boolUtiliser le nom d’utilisateur court (sans domaine) dans la réclamationpreferred_username. - extra
attrsAttributs supplémentaires fusionnés dans le client provisionné (claimMaps, etc.).
- enable
darkone.service.idm = { enable = false; oauth2.enable = true; oauth2.clientName = null; oauth2.displayName = null; oauth2.imageFile = null; oauth2.redirectPaths = [ ]; oauth2.landingPath = "/"; oauth2.enableLegacyCrypto = false; oauth2.allowInsecureClientDisablePkce = false; oauth2.preferShortUsername = null; oauth2.extra = { };};✨ darkone.service.immich
Section intitulée « ✨ darkone.service.immich »Service Immich (gestion de photos) entièrement configuré.
- enable
boolActiver le service immich local - enableMachineLearning
boolActiver les fonctionnalités d’apprentissage automatique (reconnaissance faciale, détection d’objets) - enableRedis
boolActiver Redis pour la mise en cache (recommandé pour les performances)
darkone.service.immich = { enable = false; enableMachineLearning = false; enableRedis = false;};✨ darkone.service.jellyfin
Section intitulée « ✨ darkone.service.jellyfin »Un serveur jellyfin entièrement configuré.
- enable
boolActiver le service jellyfin
darkone.service.jellyfin.enable = false;✨ darkone.service.jitsi-meet
Section intitulée « ✨ darkone.service.jitsi-meet »Un service jitsi-meet entièrement configuré.
- enable
boolActiver le service jitsi-meet local
darkone.service.jitsi-meet.enable = false;✨ darkone.service.loki
Section intitulée « ✨ darkone.service.loki »Loki + Alloy, statistiques HTTP avec grafana.
- enable
boolDéploie le serveur Loki + la source de données Grafana (colocalisée avec Grafana). - isClient
boolDéploie Alloy pour collecter les journaux d’accès Caddy locaux. - retentionTime
strDurée de rétention des journaux dans Loki (30 jours par défaut).
darkone.service.loki = { enable = config.darkone.service.monitoring.enable; isClient = config.services.caddy.enable; retentionTime = "720h";};✨ darkone.service.matrix
Section intitulée « ✨ darkone.service.matrix »Serveur DNF matrix (synapse).
- enable
boolActiver le service matrix (synapse)
darkone.service.matrix.enable = false;✨ darkone.service.mealie
Section intitulée « ✨ darkone.service.mealie »Gestion de recettes Mealie
- enable
boolActiver le service mealie
darkone.service.mealie.enable = false;✨ darkone.service.minio
Section intitulée « ✨ darkone.service.minio »Un service MinIO S3 local entièrement configuré. (wip)
Fournit un backend de stockage d’objets compatible S3 interne accessible uniquement sur 127.0.0.1:9000. L’interface Web de la console s’exécute sur 127.0.0.1:9001 pour l’administration et le débogage.
- enable
boolActiver le service MinIO S3 local
darkone.service.minio.enable = false;✨ darkone.service.monitoring
Section intitulée « ✨ darkone.service.monitoring »Module de supervision avec prometheus, grafana et node exporter.
- enable
boolActiver la surveillance avec prometheus, grafana et node exporter - isNode
boolEst un nœud de surveillance - retentionTime
strDurée de rétention des métriques Prometheus - kioskTarget
strCible (relative, pas de/) pour la redirection automatique vers Grafana à partir de la racine du domaine de surveillance. Remplacée par le module Loki lorsqu’il est actif pour pointer vers un tableau de bord d’accueil multi-sources.
darkone.service.monitoring = { enable = false; isNode = lib.hasAttrByPath [ "features" "monitoring-node" ] host; retentionTime = "30d"; kioskTarget = "d/dnf-monitoring-home/home?kiosk";};✨ darkone.service.ncps
Section intitulée « ✨ darkone.service.ncps »Proxy de cache Nix avec le module NCPS.
Ce module est activé par le cœur. Le serveur et les clients sont automatiquement détectés.
- enable
boolActiver le proxy de cache nix pour les packages - dataPath
strDossier de cache du proxy de cache nix - extraOptions
attrsOptions supplémentaires de services.ncps
darkone.service.ncps = { enable = false; dataPath = "/var/cache/ncps"; extraOptions = { };};✨ darkone.service.nextcloud
Section intitulée « ✨ darkone.service.nextcloud »Service Nextcloud entièrement configuré.
- enable
boolActiver le service nextcloud local - adminUser
strNom d’utilisateur administrateur pour Nextcloud
darkone.service.nextcloud = { enable = false; adminUser = "admin";};✨ darkone.service.nfs
Section intitulée « ✨ darkone.service.nfs »Serveur NFS + client pour les partages résidentiels.
- enable
boolActiver le serveur NFS DNF (éviter d’activer manuellement) - serverDomain
strFQDN du serveur NFS
darkone.service.nfs = { enable = hasServer && (isServer || isClient); serverDomain = "nfs";};✨ darkone.service.outline
Section intitulée « ✨ darkone.service.outline »Un wiki outline complètement configuré.
- enable
boolActiver le service outline local
darkone.service.outline.enable = false;✨ darkone.service.oxicloud
Section intitulée « ✨ darkone.service.oxicloud »OxiCloud — Cloud souverain rapide (stockage de fichiers, WebDAV, CalDAV et CardDAV).
- enable
boolActiver le service OxiCloud local
darkone.service.oxicloud.enable = false;✨ darkone.service.postfix
Section intitulée « ✨ darkone.service.postfix »Relais SMTP Postfix.
- enable
boolActiver le relais SMTP Postfix
darkone.service.postfix.enable = false;✨ darkone.service.printing
Section intitulée « ✨ darkone.service.printing »Imprimantes et scanners.
- enable
boolPaquets utiles par défaut - loadAll
boolImprimantes et scanners complets - enableScanners
boolActiver les scanners - enableHpPrinters
boolImprimantes HP uniquement - enableManualInstall
boolInstallation manuelle des pilotes
darkone.service.printing = { enable = false; loadAll = false; enableScanners = false; enableHpPrinters = false; enableManualInstall = false;};✨ darkone.service.restic
Section intitulée « ✨ darkone.service.restic »Module de sauvegarde Restic : serveur REST + cibles de sauvegarde par hôte.
Exemple (machine config) :
darkone.service.restic = { enable = true; targets = [ { name = "main"; root = "rest:http://restic.ag.poncon.fr:8888"; zone = "ag"; categories = [ "system" "nfs" ]; } ];};Structure du dépôt par cible :
<root>/<hostname>/system <- catégorie « system » (/ moins les exclusions)<root>/<hostname>/srv/nfs <- catégorie « nfs » (/srv/nfs/<...>)<root>/<hostname>/srv/medias <- catégorie « medias » (/srv/medias/<...>)- enable
boolActiver le client de sauvegarde restic - enableDryRun
boolMode simulation - enableWaitRemoteFs
boolExécuter les sauvegardes seulement après remote-fs.target - enableServer
boolActiver le serveur REST restic - enableServerPrivateRepos
boolAppliquer l’isolation du dépôt par hôte (restic —private-repos). N’activer qu’une fois que chaque client déploie avec son identifiant REST par hôte. - serverDataDir
strRacine de stockage locale du serveur REST (dépôts de tous les hôtes) - targets
listOf ( submodule { options = { name = lib.mkOption { type = str; default = "main"; description = "Target id, used in backup/unit names (<category>-<name>)"; }; root = lib.mkOption { type = str; default = "/mnt/backup/restic"; example = "rest:http://restic.${zone.domain}:${toString srvPort}"; description = "Repository root: local path or REST URL"; }; zone = lib.mkOption { type = str; default = zone.name; description = "Zone selecting the repo passphrase (restic-password-<zone>)"; }; categories = lib.mkOption { type = listOf ( enum [ "system" "nfs" "medias" ] ); default = [ "system" ]; description = "What to back up to this target"; }; }; } )Destinations de sauvegarde pour cet hôte (chemin local ou URL REST)- name
strIdentifiant de cible, utilisé dans les noms des sauvegardes/unités (<catégorie>-<nom>) - root
strRacine du dépôt : chemin local ou URL REST - zone
strZone sélectionnant la phrase de passe du dépôt (restic-password-<zone>) - categories
listOf ( enum [ "system" "nfs" "medias" ] )Quoi sauvegarder vers cette cible
- name
- nfsPaths
listOf strRépertoires NFS (/srv/nfs/<xxx>) inclus dans la catégorie « nfs » - mediasPaths
listOf strRépertoires médias (/srv/medias/<xxx>) inclus dans la catégorie « medias »
darkone.service.restic = { enable = false; enableDryRun = false; enableWaitRemoteFs = false; enableServer = false; enableServerPrivateRepos = false; serverDataDir = "/mnt/backup/restic"; targets = [ ]; targets.name = "main"; targets.root = "rest:http://restic.${zone.domain}:${toString srvPort}"; targets.zone = zone.name; targets.categories = [ ]; nfsPaths = [ ]; mediasPaths = [ ];};✨ darkone.service.searx
Section intitulée « ✨ darkone.service.searx »Un moteur de recherche durci et entièrement configuré.
- enable
boolActiver le proxy de recherche local
darkone.service.searx.enable = false;✨ darkone.service.tailscale
Section intitulée « ✨ darkone.service.tailscale »Service client Tailscale pour HCS.
- enable
boolActiver le client Tailscale pour connecter HCS - isGateway
boolCe nœud Tailscale est une passerelle de sous-réseau - isExitNode
boolConfigurer ce client comme nœud de sortie
darkone.service.tailscale = { enable = false; isGateway = false; isExitNode = false;};✨ darkone.service.turn
Section intitulée « ✨ darkone.service.turn »Serveur Coturn (matrix).
Ajouter des entrées DNS pour optimiser :
Type,Name,Priority,Pds,Port,TargetSRV,_stun._udp,0,0,3478,turn.mydomain.tldSRV,_stun._tcp,0,0,3478,turn.mydomain.tldSRV,_turn._udp,0,0,3478,turn.mydomain.tldSRV,_turn._tcp,0,0,3478,turn.mydomain.tldSRV,_turns._tcp,0,0,5349,turn.mydomain.tld- enable
boolActiver le service turn local (visio)
darkone.service.turn.enable = false;✨ darkone.service.vaultwarden
Section intitulée « ✨ darkone.service.vaultwarden »Un serveur vaultwarden entièrement configuré (wip).
- enable
boolActiver le service Vaultwarden local - enableSmtp
boolActiver SMTP pour envoyer des emails (recommandé)
darkone.service.vaultwarden = { enable = false; enableSmtp = true;};