docs: the forge is swarm-wide but not optional, so it derives nothing

Both the option description and docs/swarm.md listed the forge among the
services whose `enable` defaults from `swarm.enableRequiredServices`.
It has no `enable`: it is the canonical store for the meta flake and
every agent's config repo, so it deploys with hyperhive itself.

The distinction is worth stating rather than deleting — a reader who
sees matrix and authelia listed and the forge absent would reasonably
wonder whether the forge is per-hive. It isn't; it's mandatory.
This commit is contained in:
atlas 2026-08-05 18:04:48 +02:00
commit ade0bf24c5
2 changed files with 19 additions and 8 deletions

View file

@ -116,8 +116,8 @@ swarm's trust hierarchy.
## Running the swarm's shared services
Some things exist once per **swarm**, not once per hive: the forge, the
matrix homeserver, the SSO provider, the CA. Two options say where they
live, and everything else derives:
matrix homeserver, the SSO provider, the CA. Two options say where the
optional ones live, and everything else derives:
```nix
services.hyperhive.enableAllLocalDefaults = true; # everything on this box
@ -137,6 +137,11 @@ operator saying so rather than something inferred. With them off, a hive
is a *client* of those services — it configures how to reach them and
runs none of them.
The forge is the exception, and not because it is per-hive: it is
swarm-wide but **not optional**, being the canonical store for the meta
flake and every agent's config repo, so it deploys with hyperhive itself
and has no `enable` to derive from anything.
### SSO (authelia)
One authelia per swarm, in a `swarm-authelia` container, at

View file

@ -127,9 +127,10 @@
};
# "The swarm-wide services run HERE." A swarm has one forge, one
# matrix, one SSO — this says this host is where they live, and each
# of those services defaults its own enable from it rather than the
# operator enabling them one at a time.
# matrix, one SSO — this says this host is where they live. The
# OPTIONAL ones (matrix, authelia) default their own enable from it,
# rather than the operator enabling them one at a time; the forge has
# no enable to derive because it is not optional.
options.services.hyperhive.swarm.enableRequiredServices = lib.mkOption {
type = lib.types.bool;
default = config.services.hyperhive.enableAllLocalDefaults;
@ -137,9 +138,14 @@
example = true;
description = ''
Host the swarm's shared services on this hive. The services that
exist once per swarm rather than once per hive the forge, the
matrix homeserver, the SSO provider default their `enable` from
this, so a swarm's service host is declared in one place.
exist once per swarm rather than once per hive and are *optional*
the matrix homeserver, the SSO provider default their
`enable` from this, so a swarm's service host is declared in one
place.
The forge is swarm-wide too but has no `enable` to derive: it is
the canonical store for the meta flake and every agent's config
repo, so it deploys with hyperhive itself and is not optional.
Defaults from `services.hyperhive.enableAllLocalDefaults` (off),
which is the all-on-one-box switch. Set it directly to run the