nixos/hockeypuck: Add service for hockeypuck
This commit is contained in:
parent
c2e503530b
commit
09a49354b6
4 changed files with 114 additions and 0 deletions
|
@ -92,6 +92,13 @@
|
|||
<link linkend="opt-snapraid.enable">snapraid</link>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<link xlink:href="https://github.com/hockeypuck/hockeypuck">Hockeypuck</link>,
|
||||
a OpenPGP Key Server. Available as
|
||||
<link linkend="opt-services.hockeypuck.enable">services.hockeypuck</link>.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
<section xml:id="sec-release-21.11-incompatibilities">
|
||||
|
|
|
@ -28,6 +28,8 @@ In addition to numerous new and upgraded packages, this release has the followin
|
|||
- [snapraid](https://www.snapraid.it/), a backup program for disk arrays.
|
||||
Available as [snapraid](#opt-snapraid.enable).
|
||||
|
||||
- [Hockeypuck](https://github.com/hockeypuck/hockeypuck), a OpenPGP Key Server. Available as [services.hockeypuck](#opt-services.hockeypuck.enable).
|
||||
|
||||
|
||||
## Backward Incompatibilities {#sec-release-21.11-incompatibilities}
|
||||
|
||||
|
|
|
@ -886,6 +886,7 @@
|
|||
./services/security/fprot.nix
|
||||
./services/security/haka.nix
|
||||
./services/security/haveged.nix
|
||||
./services/security/hockeypuck.nix
|
||||
./services/security/hologram-server.nix
|
||||
./services/security/hologram-agent.nix
|
||||
./services/security/munge.nix
|
||||
|
|
104
nixos/modules/services/security/hockeypuck.nix
Normal file
104
nixos/modules/services/security/hockeypuck.nix
Normal file
|
@ -0,0 +1,104 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.services.hockeypuck;
|
||||
settingsFormat = pkgs.formats.toml { };
|
||||
in {
|
||||
meta.maintainers = with lib.maintainers; [ etu ];
|
||||
|
||||
options.services.hockeypuck = {
|
||||
enable = lib.mkEnableOption "Hockeypuck OpenPGP Key Server";
|
||||
|
||||
port = lib.mkOption {
|
||||
default = 11371;
|
||||
type = lib.types.port;
|
||||
description = "HKP port to listen on.";
|
||||
};
|
||||
|
||||
settings = lib.mkOption {
|
||||
type = settingsFormat.type;
|
||||
default = { };
|
||||
example = lib.literalExample ''
|
||||
{
|
||||
hockeypuck = {
|
||||
loglevel = "INFO";
|
||||
logfile = "/var/log/hockeypuck/hockeypuck.log";
|
||||
indexTemplate = "''${pkgs.hockeypuck-web}/share/templates/index.html.tmpl";
|
||||
vindexTemplate = "''${pkgs.hockeypuck-web}/share/templates/index.html.tmpl";
|
||||
statsTemplate = "''${pkgs.hockeypuck-web}/share/templates/stats.html.tmpl";
|
||||
webroot = "''${pkgs.hockeypuck-web}/share/webroot";
|
||||
|
||||
hkp.bind = ":''${toString cfg.port}";
|
||||
|
||||
openpgp.db = {
|
||||
driver = "postgres-jsonb";
|
||||
dsn = "database=hockeypuck host=/var/run/postgresql sslmode=disable";
|
||||
};
|
||||
};
|
||||
}
|
||||
'';
|
||||
description = ''
|
||||
Configuration file for hockeypuck, here you can override
|
||||
certain settings (<literal>loglevel</literal> and
|
||||
<literal>openpgp.db.dsn</literal>) by just setting those values.
|
||||
|
||||
For other settings you need to use lib.mkForce to override them.
|
||||
|
||||
This service doesn't provision or enable postgres on your
|
||||
system, it rather assumes that you enable postgres and create
|
||||
the database yourself.
|
||||
|
||||
Example:
|
||||
<literal>
|
||||
services.postgresql = {
|
||||
enable = true;
|
||||
ensureDatabases = [ "hockeypuck" ];
|
||||
ensureUsers = [{
|
||||
name = "hockeypuck";
|
||||
ensurePermissions."DATABASE hockeypuck" = "ALL PRIVILEGES";
|
||||
}];
|
||||
};
|
||||
</literal>
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.hockeypuck.settings.hockeypuck = {
|
||||
loglevel = lib.mkDefault "INFO";
|
||||
logfile = "/var/log/hockeypuck/hockeypuck.log";
|
||||
indexTemplate = "${pkgs.hockeypuck-web}/share/templates/index.html.tmpl";
|
||||
vindexTemplate = "${pkgs.hockeypuck-web}/share/templates/index.html.tmpl";
|
||||
statsTemplate = "${pkgs.hockeypuck-web}/share/templates/stats.html.tmpl";
|
||||
webroot = "${pkgs.hockeypuck-web}/share/webroot";
|
||||
|
||||
hkp.bind = ":${toString cfg.port}";
|
||||
|
||||
openpgp.db = {
|
||||
driver = "postgres-jsonb";
|
||||
dsn = lib.mkDefault "database=hockeypuck host=/var/run/postgresql sslmode=disable";
|
||||
};
|
||||
};
|
||||
|
||||
users.users.hockeypuck = {
|
||||
isSystemUser = true;
|
||||
description = "Hockeypuck user";
|
||||
};
|
||||
|
||||
systemd.services.hockeypuck = {
|
||||
description = "Hockeypuck OpenPGP Key Server";
|
||||
after = [ "network.target" "postgresql.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
WorkingDirectory = "/var/lib/hockeypuck";
|
||||
User = "hockeypuck";
|
||||
ExecStart = "${pkgs.hockeypuck}/bin/hockeypuck -config ${settingsFormat.generate "config.toml" cfg.settings}";
|
||||
Restart = "always";
|
||||
RestartSec = "5s";
|
||||
LogsDirectory = "hockeypuck";
|
||||
LogsDirectoryMode = "0755";
|
||||
StateDirectory = "hockeypuck";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue