diff --git a/nixos/syndicate-server.nix b/nixos/syndicate-server.nix index 6caf365..38aff0b 100644 --- a/nixos/syndicate-server.nix +++ b/nixos/syndicate-server.nix @@ -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: '' > @@ -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 {