add conduit compat mode

This makes it possible to deploy Grapevine while using a database
originally created by Conduit, including leaving the admin bot user's
localpart the same as before.
This commit is contained in:
Charles Hall 2024-04-30 17:20:36 -07:00
parent 33e7a46b53
commit a25f2ec950
No known key found for this signature in database
GPG key ID: 7B8E0645816E07CF
6 changed files with 104 additions and 22 deletions

View file

@ -45,6 +45,13 @@ in
'';
default = "::1";
};
global.conduit_compat = lib.mkOption {
type = types.bool;
description = ''
Whether to operate as a drop-in replacement for Conduit.
'';
default = false;
};
global.database_path = lib.mkOption {
type = types.nonEmptyStr;
readOnly = true;
@ -54,7 +61,9 @@ in
Note that this is read-only because this module makes use of
systemd's `StateDirectory` option.
'';
default = "/var/lib/grapevine";
default = if cfg.settings.global.conduit_compat
then "/var/lib/matrix-conduit"
else "/var/lib/grapevine";
};
global.port = lib.mkOption {
type = types.port;
@ -104,12 +113,16 @@ in
RestrictNamespaces = true;
RestrictRealtime = true;
StartLimitBurst = 5;
StateDirectory = "grapevine";
StateDirectory = if cfg.settings.global.conduit_compat
then "matrix-conduit"
else "grapevine";
StateDirectoryMode = "0700";
SystemCallArchitectures = "native";
SystemCallFilter = [ "@system-service" "~@privileged" ];
UMask = "077";
User = "grapevine";
User = if cfg.settings.global.conduit_compat
then "conduit"
else "grapevine";
};
};
};