{ config, lib, pkgs, secrets, ... }: let cfg = config.services.matrix; in { imports = [ ./options.nix ./conduit.nix ./mautrix-slack.nix ]; services.matrix = { server_name = "vapor.systems"; admin_email = "info@cocaine.farm"; }; services.heisenbridge = { enable = true; owner = "@audron:vapor.systems"; homeserver = "https://${cfg.matrix_hostname}"; # extraArgs = [ "--generate-compat" ]; # package = pkgs.heisenbridge.overrideAttrs (prev: rec { version = "1.14.2"; src = pkgs.fetchFromGitHub { owner = "hifi"; repo = prev.pname; rev = "refs/tags/v${version}"; sha256 = "sha256-qp0LVcmWf5lZ52h0V58S6FoIM8RLOd6Y3FRb85j7KRg="; }; patches = [ ./patches/heisenbridge_channel_name.patch ./patches/heisenbridge_private_name.patch ./patches/heisenbridge_user_presence.patch ]; }); identd.enable = true; }; services.mautrix-slack = { enable = true; environmentFile = "/var/lib/mautrix-slack/secrets.env"; settings = { homeserver = { address = "https://${cfg.matrix_hostname}"; domain = cfg.server_name; }; appservice = let s = builtins.fromJSON (builtins.readFile "${secrets}/matrix/mautrix-slack.json"); in { as_token = s.as_token; hs_token = s.hs_token; }; bridge = { permissions = { "*" = "relay"; "vapor.systems" = "user"; "@audron:vapor.systems" = "admin"; }; }; }; configurePostgresql = true; }; }