1
0
mirror of https://github.com/kmein/niveum synced 2026-03-16 10:11:08 +01:00

htgen: update

This commit is contained in:
2025-12-19 12:44:58 +01:00
parent 2f5ad473c6
commit 9ab93d0e82
3 changed files with 111 additions and 53 deletions

View File

@@ -3,45 +3,108 @@
lib, lib,
pkgs, pkgs,
... ...
}: let }:
htgen = pkgs.callPackage ../packages/htgen.nix {};
in { let
options.services.htgen = lib.mkOption { optionalAttr = name: value: if name != null then { ${name} = value; } else { };
default = {};
type = lib.types.attrsOf (lib.types.submodule ({config, ...}: { cfg = config.services.htgen;
options = {
enable = lib.mkEnableOption "htgen-${config._module.args.name}"; out = {
port = lib.mkOption { options.services.htgen = api;
type = lib.types.int; config = imp;
};
script = lib.mkOption {
type = lib.types.str;
};
};
}));
}; };
config = {
systemd.services = htgen = pkgs.callPackage ../packages/htgen.nix { };
lib.mapAttrs' (
name: cfg: api =
lib.nameValuePair "htgen-${name}" { with lib;
wantedBy = ["multi-user.target"]; mkOption {
after = ["network.target"]; default = { };
environment = { type = types.attrsOf (
HOME = "/var/lib/htgen-${name}"; types.submodule (
HTGEN_PORT = toString cfg.port; { config, ... }:
HTGEN_SCRIPT = cfg.script; {
}; options = {
serviceConfig = { enable = mkEnableOption "services.htgen-${config._module.args.name}";
SyslogIdentifier = "htgen-${name}";
DynamicUser = true; name = mkOption {
StateDirectory = "htgen-${name}"; type = types.str;
PrivateTmp = true; default = config._module.args.name;
Restart = "always"; };
ExecStart = "${htgen}/bin/htgen --serve";
package = mkOption {
default = htgen;
type = types.package;
};
port = mkOption {
type = types.port;
};
script = mkOption {
type = types.nullOr types.str;
default = null;
};
scriptFile = mkOption {
type = types.nullOr (types.either types.package types.pathname);
default = null;
};
user = mkOption {
default = {
name = "htgen-${config.name}";
home = "/var/lib/htgen-${config.name}";
};
defaultText = {
name = "htgen-name";
home = "/var/lib/htgen-name";
};
};
}; };
} }
) )
config.services.htgen; );
};
imp = {
systemd.services = lib.mapAttrs' (
name: htgen:
lib.nameValuePair "htgen-${name}" {
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
environment = {
HTGEN_PORT = toString htgen.port;
}
// optionalAttr "HTGEN_SCRIPT" htgen.script
// optionalAttr "HTGEN_SCRIPT_FILE" htgen.scriptFile;
serviceConfig = {
SyslogIdentifier = "htgen";
User = htgen.user.name;
PrivateTmp = true;
Restart = "always";
ExecStart = "${htgen.package}/bin/htgen --serve";
};
}
) cfg;
users.users = lib.mapAttrs' (
name: htgen:
lib.nameValuePair htgen.user.name {
inherit (htgen.user) home name;
group = htgen.user.name;
createHome = true;
isSystemUser = true;
}
) cfg;
users.groups = lib.mapAttrs' (
name: htgen:
lib.nameValuePair htgen.user.name {
name = htgen.user.name;
}
) cfg;
}; };
} in
out

View File

@@ -1,17 +1,12 @@
{ { fetchgit, lib, pkgs, stdenv }:
fetchgit,
lib,
pkgs,
stdenv,
}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "htgen"; pname = "htgen";
version = "1.3.1"; version = "1.4.0";
src = fetchgit { src = fetchgit {
url = "http://cgit.krebsco.de/htgen"; url = "https://cgit.krebsco.de/htgen";
rev = "refs/tags/${version}"; rev = "refs/tags/${version}";
sha256 = "0ml8kp89bwkrwy6iqclzyhxgv2qn9dcpwaafbmsr4mgcl70zx22r"; sha256 = "1k6xdr4g1p2wjiyizwh33ihw3azbar7kmhyxywcq0whpip9inpmj";
}; };
installPhase = '' installPhase = ''
@@ -19,10 +14,10 @@ stdenv.mkDerivation rec {
{ {
echo '#! ${pkgs.dash}/bin/dash' echo '#! ${pkgs.dash}/bin/dash'
echo 'export PATH=${lib.makeBinPath [ echo 'export PATH=${lib.makeBinPath [
pkgs.coreutils pkgs.coreutils
pkgs.jq pkgs.jq
pkgs.ucspi-tcp pkgs.ucspi-tcp
]}''${PATH+":$PATH"}' ]}''${PATH+":$PATH"}'
sed 's:^Server=htgen$:&/${version}:' htgen sed 's:^Server=htgen$:&/${version}:' htgen
} > $out/bin/htgen } > $out/bin/htgen
chmod +x $out/bin/htgen chmod +x $out/bin/htgen

View File

@@ -17,7 +17,7 @@
in { in {
services.htgen.tarot = { services.htgen.tarot = {
port = tarotPort; port = tarotPort;
script = ''. ${pkgs.writers.writeDash "tarot" '' script = pkgs.writers.writeDash "tarot" ''
case "$Method $Request_URI" in case "$Method $Request_URI" in
"GET /") "GET /")
if item=$(${pkgs.findutils}/bin/find ${toString tarotFiles} -type f | ${pkgs.coreutils}/bin/shuf -n1); then if item=$(${pkgs.findutils}/bin/find ${toString tarotFiles} -type f | ${pkgs.coreutils}/bin/shuf -n1); then
@@ -40,7 +40,7 @@ in {
fi fi
;; ;;
esac esac
''}''; '';
}; };
niveum.passport.services = [ niveum.passport.services = [