Aller au contenu

Modules mixin

Espace IA : hôte headless exécutant les agents d’un espace (propriétaire + membres).

Base serveur avec secrets isolés de la flotte : les agents lisent des entrées non fiables (mail, web, chat), l’hôte ne déchiffre donc que son propre usr/secrets/hosts/<hostname>.yaml. En général invité microVM (features: ["microvm-guest:<hypervisor>"]), mais fonctionne aussi en bare metal.

Outils de l’espace, déclarés une fois par espace (usr/machines/<host>/configuration.nix) et partagés par l’assistant OpenClaw et le Claude Code / Codex de chaque membre (darkone.home.aiSpace, activé par défaut dans le home space-member) :

  • mcp : serveurs MCP, locaux (command) ou distants (url) ;
  • skills : contenu SKILL.md, un fichier skill ou un répertoire de skills, par nom ;
  • enableClaude, enableCodex : CLI pour les membres et pour la délégation OpenClaw ;
  • packages : outils sur le PATH des agents et dans les homes des membres.
darkone.host.ai-space = {
mcp.fetch = { command = "uvx"; args = [ "mcp-server-fetch" ]; };
mcp.github = {
command = "github-mcp-server";
args = [ "stdio" ];
secretEnv = [ "GITHUB_PERSONAL_ACCESS_TOKEN" ]; # sops: mcp/github/<VAR>
};
skills.commit-style = ./skills/commit-style;
packages = [ pkgs.uv pkgs.pandoc pkgs.github-mcp-server ];
};
  • enable bool Hôte d’espace IA (espace de travail agent isolé).
  • mcp attrs Serveurs MCP de l’espace : OpenClaw et le Claude Code / Codex des membres.
  • skills attrs Skills de l’espace, par nom : SKILL.md en ligne, un fichier SKILL.md ou un répertoire de skills. Donnés à OpenClaw et au Claude Code / Codex des membres.
  • enableClaude bool Claude Code pour les membres et pour OpenClaw (délégation d’agent de codage).
  • enableCodex bool CLI Codex pour les membres et pour OpenClaw (délégation d’agent de codage).
  • packages listOf package Outils de l’espace : PATH d’OpenClaw et homes des membres.
darkone.host.ai-space = {
enable = false;
mcp = { };
skills = { };
enableClaude = true;
enableCodex = true;
packages = [ ];
};

Une configuration de bureau complète avec gnome, outils multimédias et outils bureautiques.

  • enable bool Configuration d’hôte optimisée pour le bureau
darkone.host.desktop.enable = false;

Passerelle DNF : liens de secours. Doc : en-tête de ../gateway.nix.

  • backupLinks attrs Liens de repli, utilisés quand le WAN n’a ni lien, ni bail, ni Internet. Nom : [a-z][a-z0-9-]*.
    • type enum [ "ethernet" "wifi" ] ethernet : client DHCP sur un port libre, toujours actif. wifi : client WPA2/WPA3, radio désactivée (rfkill) tant qu’aucun lien préféré n’atteint Internet ; SSID et phrase de passe sont lus dans sops (backup-link/&lt;name&gt;/ssid, backup-link/&lt;name&gt;/psk).
    • interface str Interface portant le lien : ni le WAN, ni un port LAN, ni une radio hostapd.
    • priority ints.between 1 99 La plus basse est préférée parmi les liens de secours (métrique de route 200 + 10 × priority, le WAN restant à 100).
  • linkCheck.targets nonEmptyListOf str Adresses IP pingées via chaque lien ; une réponse suffit. IP littérales uniquement : la sonde ne doit pas dépendre du DNS.
  • linkCheck.interval ints.positive Secondes entre deux séries de sondes.
  • linkCheck.failAfter ints.positive Séries échouées avant pénalité d’un lien.
  • linkCheck.recoverAfter ints.positive Séries réussies avant restauration d’un lien pénalisé (hystérésis).
darkone.host.gateway.backup-links = {
backupLinks.type = null;
backupLinks.interface = "wlp4s0";
backupLinks.priority = 10;
linkCheck.targets = internetProbeTargets;
linkCheck.interval = 10;
linkCheck.failAfter = 3;
linkCheck.recoverAfter = 6;
};

La passerelle / routeur principal d’une zone de réseau local.

Sous-module (gateway/) : backup-links.nix, liens de secours.

  • enable bool Activer les fonctions de passerelle pour l’hôte courant (dhcp, dns, proxy, etc.)
darkone.host.gateway.enable = false;

Le serveur de coordination headscale principal.

  • enable bool Activer le serveur de coordination headscale
  • enableClient bool Activer le client tailscale sur le nœud HCS (recommandé pour héberger des services)
darkone.host.hcs = {
enable = false;
enableClient = true;
};

Config de bureau + outils et configuration spécifiques aux ordinateurs portables.

  • enable bool Configuration d’hôte optimisée pour ordinateur portable
darkone.host.laptop.enable = false;

Toute configuration d’hôte repose sur cette configuration minimale.

  • enable bool Configuration d’hôte minimale
  • secure bool Préférer des options plus sûres (désactiver les utilisateurs mutables…)
darkone.host.minimal = {
enable = false;
secure = false;
};

Configuration portable pour un lecteur USB amorçable contenant une machine NixOS du réseau local.

  • enable bool Configuration d’hôte portable pour clés USB
darkone.host.portable.enable = false;

Configuration améliorée pour les serveurs (minimal, pas de veille, watchdog…).

  • enable bool Configuration minimale de l’hôte serveur
  • enableWatchdog bool Activer le watchdog systemd
darkone.host.server = {
enable = false;
enableWatchdog = true;
};

Profil hôte : poste de travail UMI (Unified Multimodal Input), utilisable sans clavier ni souris.

  • enable bool Configuration hôte UMI : entrées multimodales, tactile + voix + regard (Onboard, Talon, Tobii)
  • autoLoginUser nullOr str Utilisateur de connexion automatique (obligatoire pour une session sans clavier), un utilisateur de l’hôte avec le profil umi.
  • package nullOr package Paquet Talon (par défaut pkgs.talon de l’overlay talon-nix si disponible).
darkone.host.umi = {
enable = false;
autoLoginUser = null;
package = pkgs.talon or null;
};

Outils invités pour machines virtuelles.

  • enableVirtualbox bool Client Virtualbox
  • enableQemu bool Client Qemu/KVM
  • enableXen bool Client Xen
darkone.host.vm = {
enableVirtualbox = false;
enableQemu = false;
enableXen = false;
};

Profil pour les utilisateurs avancés (informaticiens, développeurs, administrateurs).

  • enable bool Utilisateur avancé (admin sys, développeur)
darkone.profile.advanced.enable = false;