diff options
Diffstat (limited to 'krebs/3modules')
| -rw-r--r-- | krebs/3modules/default.nix | 1 | ||||
| -rw-r--r-- | krebs/3modules/htgen.nix | 68 | 
2 files changed, 69 insertions, 0 deletions
diff --git a/krebs/3modules/default.nix b/krebs/3modules/default.nix index f336c966f..d24cea1a2 100644 --- a/krebs/3modules/default.nix +++ b/krebs/3modules/default.nix @@ -20,6 +20,7 @@ let        ./github-hosts-sync.nix        ./git.nix        ./go.nix +      ./htgen.nix        ./iptables.nix        ./kapacitor.nix        ./monit.nix diff --git a/krebs/3modules/htgen.nix b/krebs/3modules/htgen.nix new file mode 100644 index 000000000..2fe726049 --- /dev/null +++ b/krebs/3modules/htgen.nix @@ -0,0 +1,68 @@ +{ config, lib, pkgs, ... }: + +with import <stockholm/lib>; +let +  cfg = config.krebs.htgen; + +  out = { +    options.krebs.htgen = api; +    config = imp; +  }; + +  api = mkOption { +    type = types.attrsOf (types.submodule ({ config, ... }: { +      options = { +        enable = mkEnableOption "krebs.htgen-${config.name}"; + +        name = mkOption { +          type = types.username; +          default = config._module.args.name; +        }; + +        port = mkOption { +          type = types.uint; +        }; + +        script = mkOption { +          type = types.str; +        }; +        user = mkOption { +          type = types.user; +          default = { +            name = "htgen-${config.name}"; +            home = "/var/lib/htgen-${config.name}"; +          }; +        }; +      }; +    })); +  }; +  imp = { + +    systemd.services = mapAttrs' (name: htgen: +      nameValuePair "htgen-${name}" { +        wantedBy = [ "multi-user.target" ]; +        after = [ "network.target" ]; +        environment = { +          HTGEN_PORT = toString htgen.port; +        }; +        serviceConfig = { +          SyslogIdentifier = "htgen"; +          User = htgen.user.name; +          PrivateTmp = true; +          Restart = "always"; +          ExecStart = "${pkgs.htgen.override { +            inherit (htgen) script; +          }}/bin/htgen --serve"; +        }; +      } +    ) cfg; + +    users.users = mapAttrs' (name: htgen: +      nameValuePair htgen.user.name { +        inherit (htgen.user) home name uid; +        createHome = true; +      } +    ) cfg; + +  }; +in out  | 
