nixos/clients/quadraticserver/bridges.nix
2025-06-11 11:06:11 -04:00

73 lines
1.9 KiB
Nix

{
pkgs,
inputs,
config,
...
}: let
settings = {
backfill.enabled = true;
appservice = {
as_token = "$CUSTOM_AS_TOKEN";
hs_token = "$CUSTOM_HS_TOKEN";
};
homeserver = {
domain = config.services.grapevine.settings.server_name;
address = config.services.grapevine.settings.server_discovery.client.base_url;
};
bridge = {
encryption = {
allow = true;
default = true;
require = false;
};
permissions = {
"${config.services.grapevine.settings.server_name}" = "user";
"@quadradical:${config.services.grapevine.settings.server_name}" = "admin";
};
};
};
domain = "ooye.federated.nexus";
runtimeDir = "matrix-ooye";
in {
imports = [inputs.nix-matrix-appservices.nixosModule inputs.ooye.modules.default];
services = rec {
matrix-appservices.services = builtins.mapAttrs (name: value:
value
// {
inherit settings;
format = "mautrix-go";
package = value.package.override {withGoolm = true;};
}) {
whatsapp = {
port = 29318;
serviceConfig.EnvironmentFile = config.age.secrets."whatsapp.age".path;
package = pkgs.mautrix-whatsapp;
};
};
matrix-ooye = {
enable = true;
homeserver = config.services.grapevine.settings.server_discovery.client.base_url;
homeserverName = "federated.nexus";
discordTokenPath = config.age.secrets."discordToken.age".path;
discordClientSecretPath = config.age.secrets."discordClientSecret.age".path;
socket = "/run/matrix-ooye/socket";
bridgeOrigin = "https://${domain}";
};
caddy.virtualHosts."${domain}".extraConfig = "reverse_proxy unix/${matrix-ooye.socket}";
};
systemd.services = {
matrix-ooye.serviceConfig = {
RuntimeDirectory = runtimeDir;
UMask = "0007";
Group = "caddy";
};
};
}