hyperhive/nix/host-modules
Repository files (latest commit first)
Filename Latest commit message Latest commit date
atlas 4365520ada feat(swarm-nats): mint the auth-callout nkeys on all-local hives
A hive whose whole swarm is one box had to be handed two nkeys by hand
before its queue could authenticate anyone, which is the one deployment
shape where nobody else can supply them.

`autoGenerateCallout` mints both keypairs on the host on first boot,
keeps the seeds at 0600 host-side, and writes only the public halves
into a fragment the server reads at start. The all-local mode turns it
on; everywhere else the options stay operator-supplied and the
fail-closed eval assertions keep their full force.

The server config is not rewritten to do this. A wrapper includes
upstream's rendered `settings` verbatim plus the runtime fragment, and
the fragment wins — measured, along with the property that makes the
whole shape safe: the empty strings the options render in auto mode are
values `nats-server` refuses to start on, so any field the merge fails
to reach fails closed loudly rather than leaving a walk-in-able server.

The wrapper, the settings symlink and the fragment are siblings in one
runtime directory, and that is forced rather than tidy: NATS resolves an
include with filepath.Join against the config file's own directory,
which strips a leading slash, so an absolute include silently becomes a
relative one and the server never finds it. The includes are therefore
bare filenames. That also means nothing in the closure would otherwise
name the rendered settings, so the generator's symlink to it is what
keeps it from being garbage-collected under a running server.

`accounts` and `authorization` are defined once and rendered twice, into
`settings` and into the fragment template. Written out separately they
would diverge silently and backwards: the fragment is the later
definition, so a future edit to `settings` alone would be ignored on
exactly the hives that use auto mode.

`validateConfig` goes off in auto mode because `nats-server -t` rejects
the empty keys at build time; the parse check moves to server start,
where the fragment exists. Upstream's own option description names this
case.
2026-08-16 15:59:06 +02:00
..
hive-c0re feat(swarm): wire a hive's queue coordinates for status publishing 2026-08-16 13:14:03 +02:00
hive-forge fix(hive-forge): give the SSO-source unit the same TLS trust as forgejo 2026-08-15 22:01:46 +02:00
hive-gateway docs+nix: fix stale certFingerprint/HYPERHIVE_PEERS references (hyperhive#3294) 2026-08-15 19:56:11 +02:00
lib feat(nix): issue each hive's CA under a swarm root CA 2026-08-05 15:57:50 +02:00
default.nix feat(3112): the swarm-nats container, fail-closed 2026-08-14 16:26:12 +02:00
hive-ci.nix feat(nix): move the forge host options under services.hyperhive.swarm 2026-08-05 03:44:53 +02:00
hive-matrix.nix swarm-controller: serve swarm-wide service quick links (hyperhive#3289) 2026-08-15 14:24:52 +02:00
hive-network.nix docs(3191): the gateway's comments describe a host service, not a container 2026-08-12 12:20:28 +02:00
hive-priv.nix fix(#2573): also add /etc/tmpfiles.d to hive-priv ReadWritePaths (same EROFS class) 2026-07-18 16:39:20 +02:00
hive-tls.nix docs(3191): drop the migration history from the gateway comments 2026-08-12 13:26:58 +02:00
hyperhive.nix refactor(nix): a hive's domain comes out of the swarm directory 2026-08-05 22:43:17 +02:00
local-defaults.nix feat(swarm-nats): mint the auth-callout nkeys on all-local hives 2026-08-16 15:59:06 +02:00
otel.nix docs(otel): validateConfigFile is a parser, not a wiring check 2026-08-15 12:13:48 +02:00
swarm-authelia.nix feat(swarm-authelia): one machine client per hive in the roster 2026-08-15 14:26:05 +02:00
swarm-ca.nix fix(nix): a missing swarm-services leaf must not kill the whole gateway 2026-08-06 00:30:22 +02:00
swarm-controller.nix docs+nix: fix stale certFingerprint/HYPERHIVE_PEERS references (hyperhive#3294) 2026-08-15 19:56:11 +02:00
swarm-nats.nix feat(swarm-nats): mint the auth-callout nkeys on all-local hives 2026-08-16 15:59:06 +02:00
swarm-peers-removed.nix docs+nix: fix stale certFingerprint/HYPERHIVE_PEERS references (hyperhive#3294) 2026-08-15 19:56:11 +02:00
swarm-required-services.nix refactor(nix): make all-local a deployment mode, not a default 2026-08-05 19:41:11 +02:00
swarm-snapshot-store.nix refactor(#2862): keep the option at services.hyperhive.snapshotStore 2026-07-31 19:03:24 +02:00
swarm-ui.nix swarm-controller: serve swarm-wide service quick links (hyperhive#3289) 2026-08-15 14:24:52 +02:00
swarm-wireguard.nix docs+nix: fix stale certFingerprint/HYPERHIVE_PEERS references (hyperhive#3294) 2026-08-15 19:56:11 +02:00
swarm.nix feat(swarm): wire a hive's queue coordinates for status publishing 2026-08-16 13:14:03 +02:00