From 4bd5c51e2e9b2b475e330e5d98b8421c9f5c3ce2 Mon Sep 17 00:00:00 2001 From: atlas Date: Sun, 30 Aug 2026 20:06:56 +0200 Subject: [PATCH] deploy: drop the per-option restatement of what allSwarmServices asserts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit mara: "deploy.nix still says it everywhere". Seven option descriptions each told the reader that this service derives from the swarm-services switch — the same duplication just removed from docs/swarm/services.md, one layer over, and rendered into the generated options doc. Each keeps only what is true of that service and nothing else: the metrics store is paired with grafana, the log store has clients rather than second instances, the homeserver can be placed on its own host, a swarm has one SSO provider. The store's paragraph about where it runs being a separate question from that it runs survives, because that is about the store, not about the switch. swarm-ui keeps its positive derivation (the controller) and loses only the "rather than from allSwarmServices" half. Deliberately not touched, as a different question rather than an oversight: the *mode* option's description in local-defaults.nix, whose whole job is to name what it asserts; the module comments in swarm-authelia.nix / swarm.nix, which are read by someone editing that module rather than by an operator picking an option; and ui.md's contrast, which she has not ruled on. --- nix/host-modules/deploy.nix | 43 ++++++++++++------------------------- 1 file changed, 14 insertions(+), 29 deletions(-) diff --git a/nix/host-modules/deploy.nix b/nix/host-modules/deploy.nix index d7689dfd..16b4ce8f 100644 --- a/nix/host-modules/deploy.nix +++ b/nix/host-modules/deploy.nix @@ -158,9 +158,8 @@ in description = '' Run the swarm's metrics store on this host. - Derives from - {option}`services.hyperhive.deploy.allSwarmServices` together - with {option}`services.hyperhive.deploy.grafana.enable`: a store + Paired with + {option}`services.hyperhive.deploy.grafana.enable`: a store with no UI is unreadable and a UI with no store is empty, so there is no sensible deployment that takes one and not the other from that switch. Set either directly to run exactly one. @@ -173,10 +172,8 @@ in description = '' Run the swarm's log store on this host. - Derives from - {option}`services.hyperhive.deploy.allSwarmServices` for the - same reason as the metrics pair above: a hive that is not the - service host is a *client* of this store, not a second one. + A hive that is not the service host is a *client* of this store, + not a second one. ''; }; @@ -186,14 +183,10 @@ in example = true; description = '' Run the swarm's secret store in a `swarm-bao` container on this - host. A swarm has one store and it has to exist somewhere, so - this is asserted from - {option}`services.hyperhive.deploy.allSwarmServices` - alongside the other once-per-swarm services. + host. A swarm has one store and it has to exist somewhere. - That assertion is a `mkDefault`, which is what keeps *where* the - store runs a separate question from *that* it runs: set this - directly to put the store on a host of its own, and clients + *Where* it runs is a separate question from *that* it runs: set + this directly to put the store on a host of its own, and clients still reach it by name at {option}`services.hyperhive.swarm.bao.domain` rather than at a local address. @@ -212,9 +205,7 @@ in example = true; description = '' Run the swarm's authelia in a `swarm-authelia` container on this - host. {option}`services.hyperhive.deploy.allSwarmServices` - turns this on — a swarm has one SSO provider, and that says it - lives here. + host. A swarm has one SSO provider, and this says it lives here. With it off, this hive is a *client*: {option}`services.hyperhive.swarm.authelia.url` still points at @@ -230,10 +221,8 @@ in description = '' Run the **swarm's** telemetry collector on this host. - Derives from - {option}`services.hyperhive.deploy.allSwarmServices` with the - metrics pair it feeds: a swarm has one of these, and it belongs - wherever the shared services live rather than on every hive. + A swarm has one of these, and it belongs wherever the shared + services live rather than on every hive. Named `swarm-otel` rather than `otel` because there are two collectors and the tier is the whole distinction: @@ -252,10 +241,8 @@ in Run the swarm's matrix homeserver — matrix-tuwunel, in a `hive-matrix` container — on this host. - Derives from - {option}`services.hyperhive.deploy.allSwarmServices` with - the other once-per-swarm services. Set it here directly to put - the homeserver somewhere other than the host holding the rest. + Set it directly to put the homeserver somewhere other than the + host holding the rest of the swarm's services. Client-side settings stay in {option}`services.hyperhive.swarm.matrix.*`, which every hive @@ -299,10 +286,8 @@ in Serve the swarm UI from this host. Derived from - {option}`services.hyperhive.deploy.swarm-controller.enable` rather - than from - {option}`services.hyperhive.deploy.allSwarmServices`: the UI - is a view onto the controller's state and reaches it over that + {option}`services.hyperhive.deploy.swarm-controller.enable`: the + UI is a view onto the controller's state and reaches it over that daemon's unix socket, so the host that runs the controller is the host that can serve the UI. A hive that merely *uses* a swarm has nothing to serve here.