build every agent from the agent-base template
Delete nix/templates/ruth.nix, the ruth nixosConfiguration, module and toplevel, the hive-c0re managerToplevel option, and the meta flake's isManager switch with lifecycle::MANAGER_NAME. Every agent, ruth included, now builds from nix/templates/agent.nix. The template's only content beyond agent.nix was docs.enable = mkDefault true; docs.enable is off by default for every agent and ruth's own agent.nix turns it on. Refs #5377
This commit is contained in:
parent
1f214f9f01
commit
1b60084bf0
15 changed files with 85 additions and 95 deletions
|
|
@ -1,7 +1,6 @@
|
|||
# Shared scaffolding for every hyperhive harness container.
|
||||
# `../templates/agent.nix` and `../templates/ruth.nix` both import
|
||||
# agents use the same service unit regardless of which entry-point
|
||||
# they came from.
|
||||
# `../templates/agent.nix`, the one entry point every agent builds from,
|
||||
# imports it.
|
||||
#
|
||||
# This is the core module: container plumbing (boot/nix/nixpkgs),
|
||||
# base tooling, and the cross-cutting `services.hyperhive.agent.icon` option. Each
|
||||
|
|
|
|||
|
|
@ -14,9 +14,8 @@
|
|||
via `claude --add-dir`, so the markdown is readable at
|
||||
`$HIVE_DOCS_DIR/`, and appends a single pointer sentence to the agent's
|
||||
system prompt so it knows the docs exist (see
|
||||
`hive-agent::prompt::render`). Default-on for the root/manager agent
|
||||
(see `../templates/ruth.nix`), off elsewhere; any agent can flip it from its
|
||||
`agent.nix`.
|
||||
`hive-agent::prompt::render`). Off by default for every agent; an agent
|
||||
turns it on from its `agent.nix`.
|
||||
'';
|
||||
|
||||
options.services.hyperhive.agent.docs.source = lib.mkOption {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# The hyperhive-built packages the harness modules consume, threaded
|
||||
# in explicitly as an option — no overlay. The flake's
|
||||
# `nixosModules.{agent-base,ruth}` set this to the flake's own package
|
||||
# `nixosModules.agent-base` sets this to the flake's own package
|
||||
# outputs via `lib.mkDefault`, so a per-agent override of an
|
||||
# individual key still wins.
|
||||
{ lib, ... }:
|
||||
|
|
@ -15,8 +15,8 @@
|
|||
`hive-forge`, `hive-forge-notify`, `hive-github-notify`,
|
||||
`hive-matrix-daemon`,
|
||||
`hive-metric`, `hive-screen-mcp`) plus the `assets`, `frontend`,
|
||||
`reference-docs` and `claude-plugins` trees. Wired by the flake's agent-base/ruth
|
||||
nixosModules to `hyperhive.packages.<system>.*`; override an
|
||||
`reference-docs` and `claude-plugins` trees. Wired by the flake's agent-base
|
||||
nixosModule to `hyperhive.packages.<system>.*`; override an
|
||||
individual key per-agent to swap in a patched binary.
|
||||
'';
|
||||
};
|
||||
|
|
|
|||
|
|
@ -189,7 +189,7 @@ in
|
|||
# above for the rationale.
|
||||
environment.etc."hyperhive/serve.json".text = serveConfigJson;
|
||||
|
||||
# Pull the per-container toplevels into the host system closure.
|
||||
# Pull the agent-base toplevel into the host system closure.
|
||||
# `system.extraDependencies` adds paths to the system build
|
||||
# without referencing them at runtime — nixos-rebuild fetches /
|
||||
# builds them, they end up in /nix/store, and the first
|
||||
|
|
@ -197,7 +197,6 @@ in
|
|||
# do. Gated because the closure is sizeable and pinned to x86_64.
|
||||
system.extraDependencies = lib.optionals cfg.preBuildAgentTemplates [
|
||||
cfg.agentBaseToplevel
|
||||
cfg.managerToplevel
|
||||
];
|
||||
|
||||
# Unprivileged coordinator user. hive-c0re runs as this user;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,12 @@
|
|||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
(lib.mkRemovedOptionModule [ "services" "hyperhive" "c0re" "managerToplevel" ] ''
|
||||
Every agent, ruth included, builds from `agentBaseToplevel`. Remove this definition.
|
||||
'')
|
||||
];
|
||||
|
||||
options.services.hyperhive.c0re = {
|
||||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
|
|
@ -92,14 +98,6 @@
|
|||
enabled.
|
||||
'';
|
||||
};
|
||||
managerToplevel = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
defaultText = lib.literalExpression "hyperhive.packages.x86_64-linux.ruth-toplevel";
|
||||
description = ''
|
||||
Pre-built manager (ruth) container system closure — see
|
||||
`agentBaseToplevel`.
|
||||
'';
|
||||
};
|
||||
nixpkgsFlake = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "path:${pkgs.path}";
|
||||
|
|
@ -176,8 +174,8 @@
|
|||
default = false;
|
||||
example = true;
|
||||
description = ''
|
||||
Pre-fetch the per-container system closures (agent-base +
|
||||
manager toplevels) into the host's /nix/store as part of this
|
||||
Pre-fetch the agent-base container system closure, which every
|
||||
agent builds from, into the host's /nix/store as part of this
|
||||
host's NixOS build, instead of letting the first agent spawn
|
||||
do all the work.
|
||||
|
||||
|
|
|
|||
|
|
@ -273,7 +273,7 @@ in
|
|||
# is exposed too since it's independently useful/inspectable.
|
||||
inherit swagger-ui-dist swagger-ui-theme;
|
||||
|
||||
# Pre-built per-container system closures. Exposed as packages
|
||||
# Pre-built system closure every agent container builds from. Exposed as a package
|
||||
# so operators can `nix build .#agent-base-toplevel` (or wire
|
||||
# them into their host system closure via the
|
||||
# `preBuildAgentTemplates` option on the hive-c0re module —
|
||||
|
|
@ -283,13 +283,12 @@ in
|
|||
# when the meta evaluator goes to build the container.
|
||||
#
|
||||
# nixosConfigurations are pinned to x86_64-linux (nixos-
|
||||
# containers only run native arch), so these toplevels are
|
||||
# containers only run native arch), so this toplevel is
|
||||
# only useful on an x86_64-linux host — flake check across
|
||||
# systems still tolerates evaluating them on aarch64 because
|
||||
# they're plain derivations, but `nix build` from a non-x86
|
||||
# systems still tolerates evaluating it on aarch64 because
|
||||
# it's a plain derivation, but `nix build` from a non-x86
|
||||
# host would only succeed via a remote x86 builder.
|
||||
agent-base-toplevel = self.nixosConfigurations.agent-base.config.system.build.toplevel;
|
||||
ruth-toplevel = self.nixosConfigurations.ruth.config.system.build.toplevel;
|
||||
|
||||
# Auto-generated nix options reference for hyperhive.
|
||||
# `docs` bundles host + swarm + deploy + agent pages into one tree;
|
||||
|
|
|
|||
|
|
@ -1,14 +0,0 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
# Entry-point for the privileged root agent (ruth). Referenced from
|
||||
# `flake.nix` (`nixosConfigurations.ruth`) and the meta-flake's
|
||||
# `applied/ruth/flake.nix`.
|
||||
imports = [ ../agent-modules ];
|
||||
|
||||
# The root/manager bootstraps a fresh hive, so it gets the hyperhive
|
||||
# reference docs made available by default (readable at
|
||||
# `$HIVE_DOCS_DIR/`, added via `claude --add-dir`). `mkDefault` so a
|
||||
# manager's own `agent.nix` can still turn it off. Other agents default
|
||||
# off.
|
||||
services.hyperhive.agent.docs.enable = lib.mkDefault true;
|
||||
}
|
||||
Loading…
Reference in a new issue