diff --git a/lix/libutil/processes.cc b/lix/libutil/processes.cc index 1809a3019..17483d951 100644 --- a/lix/libutil/processes.cc +++ b/lix/libutil/processes.cc @@ -319,7 +319,9 @@ RunningProgram runProgram2(const RunOptions & options) Pipe out; if (options.captureStdout) out.create(); - ProcessOptions processOptions; + ProcessOptions processOptions { + .dieWithParent = options.dieWithParent, + }; std::optional>> resumeLoggerDefer; if (options.isInteractive) { diff --git a/lix/libutil/processes.hh b/lix/libutil/processes.hh index 7a5fae3d8..f3a193b76 100644 --- a/lix/libutil/processes.hh +++ b/lix/libutil/processes.hh @@ -94,6 +94,7 @@ struct RunOptions std::optional gid = {}; std::optional chdir = {}; std::optional> environment = {}; + bool dieWithParent = true; bool captureStdout = false; bool isInteractive = false; std::vector redirections; diff --git a/lix/nix/daemon.cc b/lix/nix/daemon.cc index fc3ebe528..65db2a8f9 100644 --- a/lix/nix/daemon.cc +++ b/lix/nix/daemon.cc @@ -358,6 +358,7 @@ try { "--log-level", fmt("%1%", int(verbosity)), }, + .dieWithParent = false, .redirections = { {.dup = SUBDAEMON_CONNECTION_FD, .from = remote.get()},