summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlassulus <lassulus@lassul.us>2017-09-09 00:09:04 +0200
committerlassulus <lassulus@lassul.us>2017-09-09 00:09:04 +0200
commit22f74186edca15d7169aaa63c8ebf6f6549d649b (patch)
tree8192a4fb06a90f0c04cf7cecbb0c71fa999d9c32
parente4969bf3e77a5d3bc39625ad784227438640d126 (diff)
newsbot-js: add multiple instances
-rw-r--r--krebs/3modules/newsbot-js.nix135
1 files changed, 72 insertions, 63 deletions
diff --git a/krebs/3modules/newsbot-js.nix b/krebs/3modules/newsbot-js.nix
index dd3e5647a..d372081ee 100644
--- a/krebs/3modules/newsbot-js.nix
+++ b/krebs/3modules/newsbot-js.nix
@@ -6,51 +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";
- package = mkOption {
- type = types.package;
- default = pkgs.newsbot-js;
- description = "newsbot package to use";
- };
- 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 = {
@@ -61,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 = "${cfg.package}/bin/newsbot";
- };
- };
+ serviceConfig = {
+ User = "newsbot-js";
+ Restart = "always";
+ ExecStart = "${newsbot.package}/bin/newsbot";
+ };
+ }
+ ) cfg;
};
in out