{ options, lib, config, pkgs, ... }: let cfg = config.services.omnibot; in { options.services.bizbot = { enable = lib.mkEnableOption "Enable the omnibot service"; package = lib.mkOption { type = lib.types.package; description = "omnibot package to use"; }; server = lib.mkOption { type = lib.types.str; description = "server address to connect to"; }; channel = lib.mkOption { type = lib.types.str; description = "channel to join"; }; dataDir = lib.mkOption { type = lib.types.str; description = "where omnibot will start it's ii tree"; }; }; config = lib.mkIf cfg.enable { systemd.services = { "omnibot-${cfg.server}-${cfg.channel}-ii" = { wantedBy = [ "multi-user.target" ]; path = [ pkgs.ii ]; script = '' ${pkgs.ii}/bin/ii ${cfg.dataDir}/irc -s ${cfg.server} -p 6667 -n omnibot ''; postStart = '' echo "/join ${cfg.channel}" > ${cfg.dataDir}/irc/${cfg.server}/in ''; description = '' omnibot ii tree for ${cfg.server}/${cfg.channel} ''; }; "omnibot-${cfg.server}-${cfg.channel}" = { path = [ cfg.package ]; wantedBy = [ "multi-user.target" ]; after = [ "omnibot-${cfg.server}-${cfg.channel}-ii.service" ]; script = '' tail -f ${cfg.dataDir}/irc/${cfg.server}/${cfg.channel}/out \ | ${cfg.package}/bin/omnibot \ | tee -a ${cfg.dataDir}/irc/${cfg.server}/${cfg.channel}/in ''; description = '' omnibot for ${cfg.server}/${cfg.channel} ''; serviceConfig = { KillSignal = "INT"; Type = "simple"; Restart = "on-abort"; RestartSec = "1"; }; }; }; }; }