Administration modules
👑 darkone.admin.fleet-update
Section titled “👑 darkone.admin.fleet-update”Fleet update tool (fleet-update) and its unattended daily run.
enable installs the tool on a deployment host; just fleet-update then
runs it. timer.enable adds a daily fleet-update --no-ui run: flake
update, build, test by waves, switch.
-
enable
boolfleet-update, the fleet update and deployment tool -
package
packageThe fleet-update package. Itsnix-eval-jobsis matched to the system Nix: the tool evaluates the consumer flake with it. -
aiPackages
listOf packageAI tools reachable from the unattended run (--ai-model). Optional: the tool warns and goes on without AI when none is found.Not a dependency of the package, because
pkgs.claude-codeis unfree and would forceallowUnfreeon every consumer.pkgs.opencodeis MIT. -
aiContext
nullOr strOperator guidance (language, style) included in every AI prompt of a run on this host,just fleet-updateand the timer alike. Written to/etc/fleet-update/ai-context, even withoutenable: in co-development the recipe runs the sources.--ai-context, on the command line or intimer.extraArgs, overrides it. -
user
nullOr strAccount running the unattended update: owner ofworkDir, holding the git identity, the sops age key and the AI and Matrix credentials. -
workDir
strConsumer workspace on disk. Not theworkDirmodule argument, which is its copy in the nix store. -
timer.enable
boolthe daily unattended run (fleet-update --no-ui) -
timer.onCalendar
strWhen the run starts (systemdOnCalendar). -
timer.extraArgs
listOf strOptions passed after--no-ui, which the module always sets. -
timer.timeout
strLongest run before systemd stops it (TimeoutStartSec). A hung run would otherwise hold the lock, and every later run would exit4without any alert.
darkone.admin.fleet-update = { enable = false; package = pkgs.fleet-update.override { nix-eval-jobs = nixEvalJobs; }; aiPackages = [ ]; aiContext = "Answer in French and keep the response concise."; user = "admin"; workDir = "/etc/nixos"; timer.enable = false; timer.onCalendar = "*-*-* 04:00"; timer.extraArgs = [ ]; timer.timeout = "6h";};👑 darkone.admin.locate
Section titled “👑 darkone.admin.locate”Fleet host locator (dnf-locate): ssh finds a host wherever it is plugged.
A fleet name resolves to the host’s home address. Once the host roams
(another zone, or outside on the tailnet), every ssh nix@<host> — colmena,
fleet-update, just enter — would aim at that dead address. Enabled on an
admin host, a ProxyCommand routes these connections through dnf-locate.
Paths tried, all derived from the topology:
<host>: home address, alone first — the usual case costs one lookup;<host>.<zone domain>: reservation each zone holds for visiting hosts;<host>.tailnet.internal: tailnet address (zone gateways resolve it).
The first path to answer on the port wins.
- enable
boolRoute ssh to fleet hosts throughdnf-locate(home, zone reservations, tailnet).
darkone.admin.locate.enable = config.darkone.admin.nix.enable;👑 darkone.admin.nix
Section titled “👑 darkone.admin.nix”NixOS configuration for the local LAN administrator computer.
A harmonia on the farm would share its build results, but harmonia serves the
whole /nix/store and cannot express “only what I compiled”: it captures
traffic the public cache should answer. Offloading is a build-scheduling
concern, not a substitution one — hence buildMachines here and a last-resort
substituter priority in service/nix-cache.nix.
- enable
boolEnable NIX configuration builder tools - enableNh
boolEnable nix helper (nh) management tool - remoteBuilders.enable
boolOffload builds to the fleet hosts flaggedbuild-farminconfig.yaml. Inert while no host carries the flag. - remoteBuilders.maxJobs
intParallel build slots to use on each farm. - remoteBuilders.speedFactor
intRelative speed rating of a farm, compared to this host. - remoteBuilders.mandatoryFeatures
listOf strFeatures a derivation MUST require for a farm to be offered it. This is what keeps small derivations off a remote (possibly slow) link. An empty list sends every eligible derivation to the farm. - remoteBuilders.supportedFeatures
listOf strSystem features a farm can provide. - remoteBuilders.systems
listOf strPlatforms a farm builds for. Explicit rather than derived:hosts.nixonly carries an architecture when it differs from the default.
darkone.admin.nix = { enable = false; enableNh = false; remoteBuilders.enable = true; remoteBuilders.maxJobs = 8; remoteBuilders.speedFactor = 2; remoteBuilders.mandatoryFeatures = [ ]; remoteBuilders.supportedFeatures = [ ]; remoteBuilders.systems = [ ];};👑 darkone.admin.welcome
Section titled “👑 darkone.admin.welcome”First-boot welcome page of the admin host installed by darkone new.
At the first GNOME session of each wheel member, the browser opens a local
page: step 1 of 4 done (the admin host), the gateway next, then services and
the coordination server, with links to the documentation. Shown once per
user (~/.local/state/dnf/welcome-shown). The “Onboarding” launcher of the
nix-admin reopens it (darkone.admin.welcome.page).
darkone new writes darkone.admin.welcome.enable = true; in the
configuration.nix of the admin host. Remove the line to stop the page for
the users who have not seen it yet.
- enable
boolthe first-boot welcome page of the admin host - page
pathThe welcome page, an HTML file of the store
darkone.admin.welcome = { enable = false; page = page;};