58 lines
1.1 KiB
Nix
58 lines
1.1 KiB
Nix
{ createCygrunsrvParams
|
|
, stdenv
|
|
, writeTextFile
|
|
, runtimeDir ? "/var/run"
|
|
}:
|
|
|
|
{ name
|
|
, description
|
|
, initialize
|
|
, daemon
|
|
, daemonArgs
|
|
, instanceName
|
|
, pidFile
|
|
, foregroundProcess
|
|
, foregroundProcessArgs
|
|
, path
|
|
, environment
|
|
, directory
|
|
, umask
|
|
, nice
|
|
, user
|
|
, dependencies
|
|
, credentials
|
|
, overrides
|
|
}:
|
|
|
|
# TODO: credentials
|
|
# TODO: directory unused
|
|
# TODO: umask unused
|
|
# TODO: nice unused
|
|
# TODO: user unused
|
|
|
|
let
|
|
generateForegroundWrapper = import ./generate-foreground-wrapper.nix {
|
|
inherit stdenv writeTextFile;
|
|
};
|
|
in
|
|
createCygrunsrvParams (stdenv.lib.recursiveUpdate ({
|
|
inherit name environment dependencies;
|
|
|
|
environmentPath = path;
|
|
|
|
path = if foregroundProcess != null then
|
|
if initialize == "" then foregroundProcess
|
|
else generateForegroundWrapper {
|
|
wrapDaemon = false;
|
|
executable = foregroundProcess;
|
|
inherit name initialize runtimeDir pidFile stdenv;
|
|
}
|
|
else generateForegroundWrapper {
|
|
wrapDaemon = true;
|
|
executable = daemon;
|
|
inherit name initialize runtimeDir pidFile stdenv;
|
|
};
|
|
|
|
args = if foregroundProcess != null then foregroundProcessArgs else daemonArgs;
|
|
}) overrides)
|