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