summaryrefslogtreecommitdiffstats
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)
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 000000000000..5526e2ba23ac
--- /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";
+ };
+ };
+ })
+ ];
+}
+