aboutsummaryrefslogtreecommitdiff
path: root/modules/matrix/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/matrix/default.nix')
-rw-r--r--modules/matrix/default.nix73
1 files changed, 73 insertions, 0 deletions
diff --git a/modules/matrix/default.nix b/modules/matrix/default.nix
new file mode 100644
index 0000000..7964f9b
--- /dev/null
+++ b/modules/matrix/default.nix
@@ -0,0 +1,73 @@
+{ 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;
+ };
+}