Watch
0
0
Fork
You've already forked hyperhive
0

docs: per-agent options page picks services.hyperhive.agent, and fails the eval if it goes empty

the page picked the top-level hyperhive attr, which stopped existing when the
agent namespace moved under services.hyperhive.agent, so it rendered no
options. the pick now uses the new root and asserts model, user.privateUsers
and nixBuilds are present. the acp preset submodule options get the
descriptions the now-rendered page requires.

Closes #6136
This commit is contained in:
atlas 2026-11-06 20:14:23 +01:00 • committed by mara
commit c490c72413
2 changed files with 33 additions and 3 deletions

View file

@ -296,14 +296,19 @@ in
type = lib.types.attrsOf (
lib.types.submodule {
options = {
command = lib.mkOption { type = lib.types.str; };
command = lib.mkOption {
type = lib.types.str;
description = "Executable that speaks ACP over stdio.";
};
args = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ ];
description = "Arguments passed to `command`.";
};
env = lib.mkOption {
type = lib.types.attrsOf lib.types.str;
default = { };
description = "Environment for this preset only, rendered into the nix store.";
};
};
}

View file

@ -151,9 +151,34 @@ let
]
];
agentOptions = pickSubtrees agentEval.options [
[ "hyperhive" ]
# Options live under `services.hyperhive.agent`. The page must keep
# listing known options from different agent modules; an empty page
# fails the eval instead of publishing.
agentRoot = [
"services"
"hyperhive"
"agent"
];
agentRequired = [
(agentRoot ++ [ "model" ])
(
agentRoot
++ [
"user"
"privateUsers"
]
)
(agentRoot ++ [ "nixBuilds" ])
];
agentPicked = pickSubtrees agentEval.options [ agentRoot ];
agentOptions =
assert lib.assertMsg (lib.all (p: lib.hasAttrByPath p agentPicked) agentRequired)
"per-agent options page lost required options: ${
lib.concatMapStringsSep ", " (lib.concatStringsSep ".") (
lib.filter (p: !lib.hasAttrByPath p agentPicked) agentRequired
)
}";
agentPicked;
hostDoc = pkgs.nixosOptionsDoc {
options = hostOptions;