From f75b35090e5b5307db5c378c36b8293a08b4000e Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Mon, 27 Jun 2022 11:36:02 -0500 Subject: [PATCH] nixos: optionally wrap syndicate-server with dbus-run-session --- nixos/syndicate-server.nix | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) 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 {