diff options
author | nin <nineinchnade@gmail.com> | 2017-09-14 22:57:46 +0200 |
---|---|---|
committer | nin <nineinchnade@gmail.com> | 2017-09-14 22:57:46 +0200 |
commit | 56054fe431aca35119df307f2098f823fc03d1e9 (patch) | |
tree | 052c12e402d95ea2bf9b4a8c466480e7d59bf3ce /krebs/3modules/newsbot-js.nix | |
parent | 036bd54f3142ba05409b742a809c3082176e4596 (diff) | |
parent | de16ae2a12145901c3d9e2efef062b161b9448e3 (diff) |
Merge remote-tracking branch 'prism/master'
Diffstat (limited to 'krebs/3modules/newsbot-js.nix')
-rw-r--r-- | krebs/3modules/newsbot-js.nix | 130 |
1 files changed, 72 insertions, 58 deletions
diff --git a/krebs/3modules/newsbot-js.nix b/krebs/3modules/newsbot-js.nix index 2ff9a5ebb..d372081ee 100644 --- a/krebs/3modules/newsbot-js.nix +++ b/krebs/3modules/newsbot-js.nix @@ -6,46 +6,59 @@ let cfg = config.krebs.newsbot-js; + enable = cfg != {}; + out = { options.krebs.newsbot-js = api; - config = mkIf cfg.enable imp; + config = mkIf enable imp; }; - api = { - enable = mkEnableOption "Enable krebs newsbot"; - ircServer = mkOption { - type = types.str; - default = "echelon.retiolum"; - description = "to which server the bot should connect"; - }; - channel = mkOption { - type = types.str; - default = "#news"; - description = "post the news in this channel"; - }; - masterNick = mkOption { - type = types.str; - default = "knews"; - description = "nickname of the master bot"; - }; - feeds = mkOption { - type = types.path; - description = '' - file with feeds to post - format: - $nick|$feedURI - ''; - }; - urlShortenerHost = mkOption { - type = types.str; - default = "echelon"; - description = "what server to use for url shortening, host"; - }; - urlShortenerPort = mkOption { - type = types.str; - default = "80"; - description = "what server to use for url shortening, port"; - }; + api = mkOption { + type = types.attrsOf (types.submodule ({ config, ... }: { + options = { + enable = mkEnableOption "Enable krebs newsbot" // { default = true; }; + + channel = mkOption { + type = types.str; + default = "#${config._module.args.name}"; + description = "post the news in this channel"; + }; + feeds = mkOption { + type = types.path; + description = '' + file with feeds to post + format: + $nick|$feedURI + ''; + }; + ircServer = mkOption { + type = types.str; + default = "localhost"; + description = "to which server the bot should connect"; + }; + masterNick = mkOption { + type = types.str; + default = config._module.args.name; + description = "nickname of the master bot"; + }; + package = mkOption { + type = types.package; + default = pkgs.newsbot-js; + description = "newsbot package to use"; + }; + urlShortenerHost = mkOption { + type = types.str; + default = "go"; + description = "what server to use for url shortening, host"; + }; + urlShortenerPort = mkOption { + type = types.str; + default = "80"; + description = "what server to use for url shortening, port"; + }; + }; + })); + default = {}; }; imp = { @@ -56,32 +69,33 @@ let home = "/var/empty"; }; - systemd.services.newsbot-js = { - description = "krebs newsbot"; - after = [ "network.target" ]; - wantedBy = [ "multi-user.target" ]; + systemd.services = mapAttrs' (name: newsbot: + nameValuePair "newsbot-${name}" { + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; - path = with pkgs; [ - newsbot-js - ]; + path = with pkgs; [ + newsbot-js + ]; - environment = { - irc_server = cfg.ircServer; - master_nick = cfg.masterNick; - news_channel = cfg.channel; - feeds_file = cfg.feeds; - url_shortener_host = cfg.urlShortenerHost; - url_shortener_port = cfg.urlShortenerPort; - }; + environment = { + irc_server = newsbot.ircServer; + master_nick = newsbot.masterNick; + news_channel = newsbot.channel; + feeds_file = newsbot.feeds; + url_shortener_host = newsbot.urlShortenerHost; + url_shortener_port = newsbot.urlShortenerPort; + }; - restartIfChanged = true; + restartIfChanged = true; - serviceConfig = { - User = "newsbot-js"; - Restart = "always"; - ExecStart = "${pkgs.newsbot-js}/bin/newsbot"; - }; - }; + serviceConfig = { + User = "newsbot-js"; + Restart = "always"; + ExecStart = "${newsbot.package}/bin/newsbot"; + }; + } + ) cfg; }; in out |