Files
qddns/nix/qddns-module.nix
2022-08-06 20:48:27 +02:00

53 lines
1.3 KiB
Nix

flake:
{ config, options, lib, pkgs, ...}:
let
cfg = config.services.qddns-server;
pkg = flake.defaultPackage.${pkgs.system};
in
{
options.services.qddns-server = with lib; {
enable = mkEnableOption "QDDNS";
db = mkOption {
default = "postgresql:///pdns";
type = types.str;
description = "Connection string for PDNS backend database";
};
sockUser = mkOption {
default = cfg.user;
type = types.str;
description = "The desired owner of the listen socket";
};
user = mkOption {
default = "qddns";
type = types.str;
description = "The user to run QDDNS as";
};
group = mkOption {
default = "qddns";
description = "The group to run QDDNS as";
type = types.str;
};
};
config = lib.mkIf cfg.enable {
systemd.sockets.qddns-server = {
enable = true;
listenStreams = [ "/run/qddns.sock" ];
wantedBy = [ "multi-user.target" ];
socketConfig = {
SocketUser = cfg.sockUser;
};
};
systemd.services.qddns-server = {
enable = true;
environment.QDDNS_SERVER = cfg.db;
serviceConfig = {
ExecStart = [ "${pkg}/bin/qddns-server" ];
DynamicUser="yes";
User = cfg.user;
Group = cfg.group;
};
};
};
}