nixos: optionally wrap syndicate-server with dbus-run-session

This commit is contained in:
Emery Hemingway 2022-06-27 11:36:02 -05:00
parent e905aada34
commit f75b35090e
1 changed files with 13 additions and 7 deletions

View File

@ -20,6 +20,8 @@ with lib;
options = {
enable = mkEnableOption "this Syndicate dataspace server instance";
runInDbusSession = mkEnableOption "dbus-run-session wrapper";
user = mkOption {
type = types.str;
example = "jane";
@ -52,7 +54,8 @@ with lib;
in builtins.listToAttrs (lib.lists.flatten (lib.attrsets.mapAttrsToList
(name: cfg:
let
configFileName = ".syndicate-nixos-config.pr";
configFileName = "syndicate-nixos-config.pr";
runtimeConfig = "\${RUNTIME_DIRECTORY}/${configFileName}";
configFile = pkgs.writeText configFileName
(lib.strings.concatMapStrings (dir: ''
<require-service <config-watcher "${dir}" $.>>
@ -61,13 +64,16 @@ with lib;
name = "syndicate-${name}";
value = let
serviceConfig = let
linkConfig =
"${pkgs.coreutils}/bin/ln -sf ${configFile} ${configFileName}";
loadConfig =
"${pkgs.coreutils}/bin/cp ${configFile} ${runtimeConfig}";
in {
ExecStartPre = linkConfig;
ExecStart =
"${cfg.package}/bin/syndicate-server --no-banner --config ${configFileName}";
ExecReload = linkConfig;
RuntimeDirectory = name;
ExecStartPre = loadConfig;
ExecStart = "${
lib.optionalString cfg.runInDbusSession
"${pkgs.dbus}/bin/dbus-run-session "
}${cfg.package}/bin/syndicate-server --no-banner --config ${runtimeConfig}";
ExecReload = loadConfig;
User = cfg.user;
};
in {