Mixin modules
📦 darkone.host.ai-space
Section titled “📦 darkone.host.ai-space”AI space: headless host running the agents of one space (owner + members).
Server base with secrets isolated from the fleet: agents read untrusted
input (mail, web, chat), so the host only decrypts its own
usr/secrets/hosts/<hostname>.yaml. Usually a microVM guest
(features: ["microvm-guest:<hypervisor>"]), bare metal works too.
Agent tooling, declared once per space (usr/machines/<host>/configuration.nix)
and shared by the OpenClaw assistant and every member’s Claude Code / Codex /
OpenCode (darkone.home.aiSpace, on by default in the space-member home):
mcp: MCP servers, local (command) or remote (url);skills:SKILL.mdcontent, a file or a skill directory, by name;enableClaude,enableCodex,enableOpenCode: CLIs for members and for OpenClaw delegation;packages: tools on the agents’ PATH and in members’ homes;projectsDir: shared projects, writable by every member and the agent (groupprojects, setgid, default ACL),~/projectsin members’ homes.
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
boolAI space host (isolated agents workspace) - mcp
attrsMCP servers of the space: OpenClaw and members’ Claude Code / Codex / OpenCode. - skills
attrsSkills of the space, by name: inlineSKILL.md, aSKILL.mdfile or a skill directory. Given to OpenClaw and members’ Claude Code / Codex / OpenCode. - enableClaude
boolClaude Code for members and for OpenClaw (coding-agent delegation). - enableCodex
boolCodex CLI for members and for OpenClaw (coding-agent delegation). - enableOpenCode
boolOpenCode for members and for OpenClaw (coding-agent delegation). - packages
listOf packageTools of the space: OpenClaw PATH and members’ homes. - projectsDir
strShared projects of the space: every member and the OpenClaw agent (its working dir) read and write them,~/projectsin members’ homes.
darkone.host.ai-space = { enable = false; mcp = { }; skills = { }; enableClaude = true; enableCodex = true; enableOpenCode = true; packages = [ ]; projectsDir = "/var/lib/projects";};📦 darkone.host.desktop
Section titled “📦 darkone.host.desktop”A full desktop configuration with gnome, multimedia and office tools.
- enable
boolDesktop optimized host configuration
darkone.host.desktop.enable = false;📦 darkone.host.gateway.backup-links
Section titled “📦 darkone.host.gateway.backup-links”DNF gateway: backup uplinks. Doc: ../gateway.nix header.
- backupLinks
attrsFallback uplinks, used when the WAN has no link, no lease or no Internet. Name:[a-z][a-z0-9-]*.- type
enum [ "ethernet" "wifi" ]ethernet: DHCP client on a spare port, always up.wifi: WPA2/WPA3 client, radio off (rfkill) until no preferred link reaches the Internet; SSID and passphrase are read from sops (backup-link/<name>/ssid,backup-link/<name>/psk). - interface
strInterface carrying the link: neither the WAN, a LAN port nor a hostapd radio. - priority
ints.between 1 99Lower is preferred among backup links (route metric 200 + 10 × priority, the WAN staying at 100).
- type
- linkCheck.targets
nonEmptyListOf strIP addresses pinged through each uplink; one answer is enough. IP literals only: the probe must not depend on DNS. - linkCheck.interval
ints.positiveSeconds between two probe rounds. - linkCheck.failAfter
ints.positiveFailed rounds before an uplink is penalised. - linkCheck.recoverAfter
ints.positiveGood rounds before a penalised uplink is restored (hysteresis).
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;};📦 darkone.host.gateway
Section titled “📦 darkone.host.gateway”The main gateway / router of a local network zone.
Sub-module (gateway/): backup-links.nix, backup uplinks.
Backup uplinks (backup-links.nix)
Section titled “Backup uplinks (backup-links.nix)”- enable
boolEnable gateway features for the current host (dhcp, dns, proxy, etc.)
darkone.host.gateway.enable = false;📦 darkone.host.hcs
Section titled “📦 darkone.host.hcs”The main headscale coordination server.
- enable
boolEnable headscale coordination server - enableClient
boolEnable tailscale client on HCS node (recommended to host services)
darkone.host.hcs = { enable = false; enableClient = true;};📦 darkone.host.laptop
Section titled “📦 darkone.host.laptop”Desktop config + laptop specific tools & configuration.
- enable
boolLaptop optimized host configuration
darkone.host.laptop.enable = false;📦 darkone.host.minimal
Section titled “📦 darkone.host.minimal”Every host configuration is based on this minimal config.
- enable
boolMinimal host configuration - secure
boolPrefer more secure options (disable mutable users…)
darkone.host.minimal = { enable = false; secure = false;};📦 darkone.host.portable
Section titled “📦 darkone.host.portable”Portable configuration for a bootable USB drive containing a NixOS machine from the local network.
- enable
boolPortable host configuration for usb keys
darkone.host.portable.enable = false;📦 darkone.host.server
Section titled “📦 darkone.host.server”Improved configuration for servers (minimal, no sleep, watchdog…).
- enable
boolServer host minimal configuration - enableWatchdog
boolEnable systemd watchdog
darkone.host.server = { enable = false; enableWatchdog = true;};📦 darkone.host.umi
Section titled “📦 darkone.host.umi”Host profile: UMI (Unified Multimodal Input) workstation, usable without keyboard/mouse.
- enable
boolUMI host configuration: multimodal input, touch + voice + gaze (Onboard, Talon, Tobii) - autoLoginUser
nullOr strAuto-login user (mandatory for a keyboard-free session), a host user with theumiprofile. - package
nullOr packageTalon package (defaults topkgs.talonfrom the talon-nix overlay when available).
darkone.host.umi = { enable = false; autoLoginUser = null; package = pkgs.talon or null;};📦 darkone.host.vm
Section titled “📦 darkone.host.vm”Virtual machines guest tools.
- enableVirtualbox
boolVirtualbox client - enableQemu
boolQemu/KVM client - enableXen
boolXen client
darkone.host.vm = { enableVirtualbox = false; enableQemu = false; enableXen = false;};📦 darkone.profile.advanced
Section titled “📦 darkone.profile.advanced”Profile for advanced users (computer scientists, developers, admins).
- enable
boolAdvanced user (admin sys, developper)
darkone.profile.advanced.enable = false;