diff options
Diffstat (limited to 'krebs/3modules/Reaktor.nix')
-rw-r--r-- | krebs/3modules/Reaktor.nix | 40 |
1 files changed, 34 insertions, 6 deletions
diff --git a/krebs/3modules/Reaktor.nix b/krebs/3modules/Reaktor.nix index 2ca7a0ee3..407f1bce7 100644 --- a/krebs/3modules/Reaktor.nix +++ b/krebs/3modules/Reaktor.nix @@ -12,9 +12,17 @@ let isString optionalString concatStrings + escapeShellArg ; - ReaktorConfig = mkIf ( isString cfg.extraConfig ) pkgs.writeText "config.py" cfg.extraConfig; + ReaktorConfig = pkgs.writeText "config.py" '' + ${if (isString cfg.overrideConfig ) then '' + # Overriden Config + ${cfg.overrideConfig} + '' else ""} + ## Extra Config + ${cfg.extraConfig} + ''; cfg = config.krebs.Reaktor; out = { @@ -40,7 +48,7 @@ let }; - extraConfig = mkOption { + overrideConfig = mkOption { default = null; type = types.nullOr types.str; description = '' @@ -48,6 +56,13 @@ let Reaktor default cfg can be retrieved via `reaktor get-config` ''; }; + extraConfig = mkOption { + default = ""; + type = types.str; + description = '' + configuration appended to the default or overridden configuration + ''; + }; ReaktorPkg = mkOption { default = kpkgs.Reaktor; @@ -60,7 +75,6 @@ let imp = { # for reaktor get-config environment.systemPackages = [ cfg.ReaktorPkg ]; - users.extraUsers = singleton { name = "Reaktor"; # uid = config.ids.uids.Reaktor; @@ -84,12 +98,26 @@ let description = "Reaktor IRC Bot"; after = [ "network.target" ]; wantedBy = [ "multi-user.target" ]; - serviceConfig.User = "Reaktor"; environment = { GIT_SSL_CAINFO = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"; - IRC_NICKNAME = cfg.nickname; + REAKTOR_NICKNAME = cfg.nickname; + }; + serviceConfig= { + ExecStartPre = pkgs.writeScript "Reaktor-init" '' + #! /bin/sh + ${if (isString cfg.overrideConfig) then + ''cp ${ReaktorConfig} /tmp/config.py'' + else + ''(${cfg.ReaktorPkg}/bin/reaktor get-config;cat "${ReaktorConfig}" ) > /tmp/config.py'' + } + ''; + ExecStart = "${cfg.ReaktorPkg}/bin/reaktor run /tmp/config.py"; + PrivateTmp = "true"; + User = "Reaktor"; + Restart = "on-abort"; + #StartLimitInterval = "5m"; + #StartLimitBurst = "1"; }; - serviceConfig.ExecStart = "${cfg.ReaktorPkg}/bin/reaktor run ${if (isString cfg.extraConfig) then cfg.ReaktorConfig else ""}"; }; }; |