54 lines
1.5 KiB
Nix
54 lines
1.5 KiB
Nix
{
|
|
inputs,
|
|
flake,
|
|
self,
|
|
}:
|
|
{
|
|
pkgs,
|
|
lib,
|
|
config,
|
|
...
|
|
}: let
|
|
legacyCfg = config.hectic.services.matrix;
|
|
clusterCfg = config.hectic.generic.matrix-cluster;
|
|
clusterSynapseEnabled =
|
|
clusterCfg.enable
|
|
&& (if clusterCfg.overrideEnableSynapse != null then clusterCfg.overrideEnableSynapse else clusterCfg.role == "primary");
|
|
enabled = legacyCfg.enable || clusterSynapseEnabled;
|
|
matrixDomain = if legacyCfg.enable then legacyCfg.matrixDomain else clusterCfg.matrixDomain;
|
|
jitsiPreferredDomain =
|
|
if legacyCfg.enable && config.hectic.services.jitsi.enable
|
|
then config.hectic.services.jitsi.hostName
|
|
else clusterCfg.jitsi.preferredDomain;
|
|
in {
|
|
config = lib.mkIf enabled {
|
|
services.nginx.virtualHosts."element.${matrixDomain}" = {
|
|
enableACME = true;
|
|
forceSSL = true;
|
|
|
|
locations."= /config.element.${matrixDomain}.json".return = "302 /config.json";
|
|
|
|
root = pkgs.element-web.override {
|
|
conf = {
|
|
default_server_config = {
|
|
"m.homeserver".base_url = "https://${matrixDomain}";
|
|
"m.homeserver".server_name = matrixDomain;
|
|
"m.identity_server".base_url = "https://vector.im";
|
|
};
|
|
|
|
room_directory.servers = [
|
|
matrixDomain
|
|
];
|
|
|
|
jitsi = lib.optionalAttrs (jitsiPreferredDomain != null) {
|
|
preferred_domain = jitsiPreferredDomain;
|
|
};
|
|
|
|
default_theme = "dark";
|
|
show_labs_settings = true;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|