summary refs log tree commit diff
path: root/nixos/modules/services/networking/matterbridge.nix
diff options
context:
space:
mode:
authorRyan Mulligan <ryan@ryantm.com>2017-09-01 21:21:26 -0700
committerRyan Mulligan <ryan@ryantm.com>2017-09-10 08:57:28 -0700
commit9c786d82f21db36d0477ca73d3bd667a96b62682 (patch)
treea4b08c1bc5f862389eddda9cb5602ff3ae3a02f2 /nixos/modules/services/networking/matterbridge.nix
parent92163ec65c5c366c5cdc3fb72e5e57cb1aa36f12 (diff)
downloadnixpkgs-9c786d82f21db36d0477ca73d3bd667a96b62682.tar
nixpkgs-9c786d82f21db36d0477ca73d3bd667a96b62682.tar.gz
nixpkgs-9c786d82f21db36d0477ca73d3bd667a96b62682.tar.bz2
nixpkgs-9c786d82f21db36d0477ca73d3bd667a96b62682.tar.lz
nixpkgs-9c786d82f21db36d0477ca73d3bd667a96b62682.tar.xz
nixpkgs-9c786d82f21db36d0477ca73d3bd667a96b62682.tar.zst
nixpkgs-9c786d82f21db36d0477ca73d3bd667a96b62682.zip
matterbridge, modules/matterbridge: init at 1.1.0
Diffstat (limited to 'nixos/modules/services/networking/matterbridge.nix')
-rw-r--r--nixos/modules/services/networking/matterbridge.nix96
1 files changed, 96 insertions, 0 deletions
diff --git a/nixos/modules/services/networking/matterbridge.nix b/nixos/modules/services/networking/matterbridge.nix
new file mode 100644
index 00000000000..5526e2ba23a
--- /dev/null
+++ b/nixos/modules/services/networking/matterbridge.nix
@@ -0,0 +1,96 @@
+{ config, pkgs, lib, ... }:
+
+with lib;
+
+let
+
+  cfg = config.services.matterbridge;
+
+  matterbridgeConfToml = pkgs.writeText "matterbridge.toml" (cfg.configFile);
+
+in
+
+{
+  options = {
+    services.matterbridge = {
+      enable = mkEnableOption "Matterbridge chat platform bridge";
+
+      configFile = mkOption {
+        type = types.str;
+        example = ''
+          #WARNING: as this file contains credentials, be sure to set correct file permissions          [irc]
+              [irc.freenode]
+              Server="irc.freenode.net:6667"
+              Nick="matterbot"
+
+          [mattermost]
+              [mattermost.work]
+               #do not prefix it wit http:// or https://
+               Server="yourmattermostserver.domain"
+               Team="yourteam"
+               Login="yourlogin"
+               Password="yourpass"
+               PrefixMessagesWithNick=true
+
+          [[gateway]]
+          name="gateway1"
+          enable=true
+              [[gateway.inout]]
+              account="irc.freenode"
+              channel="#testing"
+
+              [[gateway.inout]]
+              account="mattermost.work"
+              channel="off-topic"
+        '';
+        description = ''
+          The matterbridge configuration file in the TOML file format.
+        '';
+      };
+      user = mkOption {
+        type = types.str;
+        default = "matterbridge";
+        description = ''
+          User which runs the matterbridge service.
+        '';
+      };
+
+      group = mkOption {
+        type = types.str;
+        default = "matterbridge";
+        description = ''
+          Group which runs the matterbridge service.
+        '';
+      };
+    };
+  };
+
+  config = mkMerge [
+    (mkIf cfg.enable {
+
+      users.extraUsers = mkIf (cfg.user == "matterbridge") [
+        { name = "matterbridge";
+          group = "matterbridge";
+        } ];
+
+      users.extraGroups = mkIf (cfg.group == "matterbridge") [
+        { name = "matterbridge";
+        } ];
+
+      systemd.services.matterbridge = {
+        description = "Matterbridge chat platform bridge";
+        wantedBy = [ "multi-user.target" ];
+        after = [ "network.target" ];
+
+        serviceConfig = {
+          User = cfg.user;
+          Group = cfg.group;
+          ExecStart = "${pkgs.matterbridge.bin}/bin/matterbridge -conf ${matterbridgeConfToml}";
+          Restart = "always";
+          RestartSec = "10";
+        };
+      };
+    })
+  ];
+}
+