Refactor NixOS configuration of Syndicate server

This commit is contained in:
Emery Hemingway 2021-12-05 11:11:24 +00:00
parent 2a44a15be1
commit abd2ba6f60
1 changed files with 10 additions and 41 deletions

View File

@ -43,19 +43,22 @@ with lib;
};
config = let
cfg = config.services.syndicate-server;
configDir = "/run/syndicate/config";
requireServiceRelayListener = spec:
"<require-service <relay-listener ${spec}>>";
config = let cfg = config.services.syndicate-server;
in mkIf cfg.enable {
assertions = [{
assertion = cfg.tcpListeners == [ ];
message =
"tcpListeners configuration not implemented for Syndicate server";
}];
systemd.services.syndicate-server = {
description = "Syndicate dataspace server";
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p ${configDir}";
ExecStart = "${cfg.package}/bin/syndicate-server --config ${configDir}";
ExecStart = "${cfg.package}/bin/syndicate-server ${
lib.strings.concatMapStrings (l: " --socket ${l}") cfg.unixListeners
}";
Group = cfg.group;
AmbientCapabilities = [ "CAP_NET_BIND_SERVICE" ];
DynamicUser = true;
@ -64,39 +67,5 @@ with lib;
};
};
systemd.services.syndicate-server-unix-listeners = {
description = "Configure Syndicate unix listeners";
after = [ "syndicate-server.service" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = let
prsFile = builtins.toFile "unix-listeners.pr"
(lib.strings.concatMapStrings
(path: requireServiceRelayListener ''<unix "${path}">'')
cfg.unixListeners);
in "${pkgs.coreutils}/bin/cp ${prsFile} ${configDir}/nixos-unix-listeners.pr";
ExecStop =
"${pkgs.coreutils}/bin/rm ${configDir}/nixos-unix-listeners.pr";
RemainAfterExit = true;
};
};
systemd.services.syndicate-server-tcp-listeners = {
description = "Configure Syndicate TCP listeners";
after = [ "syndicate-server.service" "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = let
prsFile = builtins.toFile "tcp-listeners.pr"
(lib.strings.concatMapStrings ({ address, port }:
requireServiceRelayListener
''<tcp "${address}" ${toString port}>'') cfg.tcpListeners);
in "${pkgs.coreutils}/bin/cp ${prsFile} ${configDir}/nixos-tcp-listeners.pr";
ExecStop =
"${pkgs.coreutils}/bin/rm ${configDir}/nixos-tcp-listeners.pr";
RemainAfterExit = true;
};
};
};
}