diff options
author | makefu <github@syntax-fehler.de> | 2017-03-16 23:28:32 +0100 |
---|---|---|
committer | makefu <github@syntax-fehler.de> | 2017-03-16 23:28:32 +0100 |
commit | 4b29caff2681d21ce4be687321fa4ab2f7713cd4 (patch) | |
tree | c0f59f1eafd87863173a957da3d5b79d69102b83 /krebs/3modules/htgen.nix | |
parent | 6ec1a6296930569c97cf029bad17c998d4fae66d (diff) | |
parent | 8809797f1063945c03ebd70666c108c45d5d724a (diff) |
Merge remote-tracking branch 'lass/master'
Diffstat (limited to 'krebs/3modules/htgen.nix')
-rw-r--r-- | krebs/3modules/htgen.nix | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/krebs/3modules/htgen.nix b/krebs/3modules/htgen.nix new file mode 100644 index 000000000..0dddca6c8 --- /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 { + default = {}; + 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; + HTGEN_SCRIPT = htgen.script; + }; + serviceConfig = { + SyslogIdentifier = "htgen"; + User = htgen.user.name; + PrivateTmp = true; + Restart = "always"; + ExecStart = "${pkgs.htgen}/bin/htgen --serve"; + }; + } + ) cfg; + + users.users = mapAttrs' (name: htgen: + nameValuePair htgen.user.name { + inherit (htgen.user) home name uid; + createHome = true; + } + ) cfg; + + }; +in out |