refactor(nix): move the matrix host options under services.hyperhive.swarm
Second slice of the swarm-global service consolidation, same shape as
the forge move: the operator-facing host options become
services.hyperhive.swarm.matrix.*, and one mkRenamedOptionModule on the
namespace carries the whole subtree (nested gui.* included), so there is
no leaf list to forget an entry from.
The rename lives in hive-matrix.nix, the module that declares the
options, so each service's migration stays independent of its siblings.
The per-agent hyperhive.matrix.{enable,url} and hyperhive.matrixAccounts
are a different namespace -- a client pointer at the service, not the
service -- and deliberately do not move.
This commit is contained in:
parent
1a0cb0fb44
commit
fcdff04b23
5 changed files with 33 additions and 19 deletions
|
|
@ -5,7 +5,7 @@
|
|||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.services.hyperhive.matrix;
|
||||
cfg = config.services.hyperhive.swarm.matrix;
|
||||
networkCfg = config.services.hyperhive.network;
|
||||
hyperhiveDomain = config.services.hyperhive.domain;
|
||||
effectiveServerName = if cfg.serverName != null then cfg.serverName else hyperhiveDomain;
|
||||
|
|
@ -86,7 +86,17 @@ in
|
|||
# settings: docs/matrix.md. Vhost map + discovery flow + tuning
|
||||
# knobs: docs/gateway.md.
|
||||
|
||||
options.services.hyperhive.matrix = {
|
||||
# Matrix moved under `swarm` when the swarm-global services were
|
||||
# consolidated. One rename for the namespace: the subtree comes with it,
|
||||
# so existing hives keep evaluating and get one warning naming both paths.
|
||||
imports = [
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "services" "hyperhive" "matrix" ]
|
||||
[ "services" "hyperhive" "swarm" "matrix" ]
|
||||
)
|
||||
];
|
||||
|
||||
options.services.hyperhive.swarm.matrix = {
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
|
|
@ -129,7 +139,7 @@ in
|
|||
**Breaking change**: this used to default to
|
||||
`matrix.''${services.hyperhive.domain}`. matrix IDs embed
|
||||
the server_name irrevocably, so existing homeservers must
|
||||
set `services.hyperhive.matrix.serverName = "matrix.''${services.hyperhive.domain}";`
|
||||
set `services.hyperhive.swarm.matrix.serverName = "matrix.''${services.hyperhive.domain}";`
|
||||
explicitly to preserve their existing user / room IDs
|
||||
before rebuilding.
|
||||
'';
|
||||
|
|
@ -151,8 +161,8 @@ in
|
|||
type = lib.types.nullOr lib.types.str;
|
||||
default = if cfg.enable then "http://127.0.0.1:${toString cfg.httpPort}" else null;
|
||||
defaultText = lib.literalExpression ''
|
||||
if services.hyperhive.matrix.enable
|
||||
then "http://127.0.0.1:''${toString services.hyperhive.matrix.httpPort}"
|
||||
if services.hyperhive.swarm.matrix.enable
|
||||
then "http://127.0.0.1:''${toString services.hyperhive.swarm.matrix.httpPort}"
|
||||
else null
|
||||
'';
|
||||
example = "https://matrix.example.com";
|
||||
|
|
@ -213,7 +223,7 @@ in
|
|||
|
||||
**Breaking change**: this used to default to `true`. If you
|
||||
relied on the old default for external reach, add
|
||||
`services.hyperhive.matrix.openFirewall = true;` to your host
|
||||
`services.hyperhive.swarm.matrix.openFirewall = true;` to your host
|
||||
config before rebuilding.
|
||||
|
||||
Note: federation (the matrix-spec well-known port 8448) is
|
||||
|
|
@ -290,7 +300,7 @@ in
|
|||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = cfg.enable;
|
||||
defaultText = lib.literalExpression "config.services.hyperhive.matrix.enable";
|
||||
defaultText = lib.literalExpression "config.services.hyperhive.swarm.matrix.enable";
|
||||
description = ''
|
||||
Serve a matrix web client at `matrix.''${services.hyperhive.domain}/`.
|
||||
Requires `matrix.gatewayHost != null` (default `matrix.<hive>`
|
||||
|
|
@ -330,7 +340,7 @@ in
|
|||
{
|
||||
assertion = cfg.gatewayHost == null || cfg.gatewayHost != "";
|
||||
message = ''
|
||||
services.hyperhive.matrix.gatewayHost = "" is rejected. The
|
||||
services.hyperhive.swarm.matrix.gatewayHost = "" is rejected. The
|
||||
rendered URLs would be invalid (nginx wildcard catch-all for
|
||||
an empty server_name, /etc/hosts rejects empty entries).
|
||||
Use `null` to disable the gateway vhost entirely (tuwunel
|
||||
|
|
|
|||
Loading…
Reference in a new issue