mirror of
https://github.com/kmein/niveum
synced 2026-03-16 10:11:08 +01:00
htgen: update
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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 = [
|
||||||
|
|||||||
Reference in New Issue
Block a user