parent
0fc77df1a9
commit
8e09f8360a
47 changed files with 98 additions and 1026 deletions
|
|
@ -118,13 +118,6 @@ let
|
|||
# never gets a gateway certificate.
|
||||
swarmCfg.bao.ui.domain
|
||||
];
|
||||
|
||||
# Hives whose entry still carries the removed `certFingerprint`. Scanned
|
||||
# here, at top level, because that is the only place an assertion about a
|
||||
# submodule field can actually live — see the option's own comment.
|
||||
pinnedHives = lib.attrNames (
|
||||
lib.filterAttrs (_: hive: hive.certFingerprint != null) swarmCfg.hives
|
||||
);
|
||||
in
|
||||
{
|
||||
options.services.hyperhive.swarm.hives = lib.mkOption {
|
||||
|
|
@ -207,33 +200,6 @@ in
|
|||
silently excluded from `wg-hive`).
|
||||
'';
|
||||
};
|
||||
|
||||
# Removed, and re-declared only so an existing definition
|
||||
# produces an error that says *what happened*. Without it the
|
||||
# module system says `The option ... does not exist`, which
|
||||
# tells an operator nothing about why it went or what replaced
|
||||
# it — and this field was set on real deployments.
|
||||
#
|
||||
# ⚠️ `lib.mkRemovedOptionModule` cannot do this job here, and
|
||||
# neither of its two halves survives inside a submodule:
|
||||
# its `apply = throw` fires only when the value is READ, and
|
||||
# nothing reads this (that being the point of removing
|
||||
# it); its `config.assertions` half would land on a submodule
|
||||
# that declares no `assertions` option at all. It is a
|
||||
# top-level tool. The assertion below is the working shape, and
|
||||
# it is the same one ./swarm-peers-removed.nix uses for the
|
||||
# analogous `peers.<hive>.caCert`.
|
||||
certFingerprint = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
visible = false;
|
||||
internal = true;
|
||||
description = ''
|
||||
Removed. Trust inside a swarm comes from the secret store's
|
||||
pki root (docs/swarm/ca.md), which replaces per-hive leaf
|
||||
pinning entirely.
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
)
|
||||
|
|
@ -388,37 +354,6 @@ in
|
|||
Declared hives: ${lib.concatStringsSep ", " (lib.attrNames swarmCfg.hives)}
|
||||
'';
|
||||
}
|
||||
{
|
||||
# An error rather than a warning, deliberately. Re-declaring the
|
||||
# removed option above is what stops "option does not exist"; on
|
||||
# its own it would turn a config that sets the removed field into
|
||||
# one that quietly evaluates with the setting ignored, which is a
|
||||
# worse answer than an error. So this stays fatal until the field
|
||||
# is gone from the config.
|
||||
#
|
||||
# Wording follows `lib.mkRemovedOptionModule`'s, so it reads like
|
||||
# every other removal the module system reports.
|
||||
assertion = pinnedHives == [ ];
|
||||
message = ''
|
||||
The option definition `services.hyperhive.swarm.hives.<hive>.certFingerprint'
|
||||
no longer has any effect; please remove it.
|
||||
|
||||
Still set on: ${lib.concatStringsSep ", " pinnedHives}
|
||||
|
||||
It pinned a peer hive's TLS leaf for hive-c0re's own peer HTTPS
|
||||
checks, and was removed along with the dashboard feature it
|
||||
existed to serve — nothing else ever consumed it.
|
||||
|
||||
There is no replacement, and none is needed for a hive inside
|
||||
this swarm: trust comes from the secret store's pki root (see
|
||||
docs/swarm/ca.md), which every hive chains to, so one anchor
|
||||
replaces per-hive pinning.
|
||||
What that genuinely drops is trusting a hive whose root this
|
||||
swarm does NOT own — another swarm's, or one keeping its own
|
||||
CA. That is a cross-swarm problem and wants a mechanism
|
||||
designed for it.
|
||||
'';
|
||||
}
|
||||
(nameGuards.mustBeIdent {
|
||||
option = "services.hyperhive.swarm.hives";
|
||||
names = hiveNames;
|
||||
|
|
|
|||
Loading…
Reference in a new issue