diff options
author | Ryan Mulligan <ryan@ryantm.com> | 2017-09-01 21:21:26 -0700 |
---|---|---|
committer | Ryan Mulligan <ryan@ryantm.com> | 2017-09-10 08:57:28 -0700 |
commit | 9c786d82f21db36d0477ca73d3bd667a96b62682 (patch) | |
tree | a4b08c1bc5f862389eddda9cb5602ff3ae3a02f2 /nixos/modules/services/networking/matterbridge.nix | |
parent | 92163ec65c5c366c5cdc3fb72e5e57cb1aa36f12 (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.nix | 96 |
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"; + }; + }; + }) + ]; +} + |