Make createMultiProcessImage function composable, move all target-specific process manager stuff into the backends/ folder, add script for easy startup of s6-svscan
This commit is contained in:
parent
acd56b6207
commit
600c0b14cf
|
@ -32,8 +32,8 @@ Currently, the following process managers are supported:
|
|||
* `systemd`: [systemd](https://www.freedesktop.org/wiki/Software/systemd)
|
||||
* `launchd`: [launchd](https://www.launchd.info)
|
||||
* `cygrunsrv`: Cygwin's [cygrunsrv](http://web.mit.edu/cygwin/cygwin_v1.3.2/usr/doc/Cygwin/cygrunsrv.README)
|
||||
* `s6-rc`: the [s6-rc](https://skarnet.org/software/s6-rc) tool that manages
|
||||
services, using [s6](https://skarnet.org/software/s6) as a supervising process
|
||||
* `s6-rc`: [s6-rc](https://skarnet.org/software/s6-rc) for managing services
|
||||
supervised by [s6](https://skarnet.org/software/s6)
|
||||
|
||||
It can also work with the following solutions that are technically not
|
||||
categorized as process managers (but can still be used as such):
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
}:
|
||||
|
||||
let
|
||||
createMultiProcessImage = import ../../nixproc/create-multi-process-image/create-multi-process-image.nix {
|
||||
createMultiProcessImage = import ../../nixproc/create-multi-process-image/create-multi-process-image-universal.nix {
|
||||
inherit pkgs system;
|
||||
inherit (pkgs) dockerTools stdenv;
|
||||
};
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
}:
|
||||
|
||||
let
|
||||
createSystemVInitScript = import ../../nixproc/create-managed-process/sysvinit/create-sysvinit-script.nix {
|
||||
createSystemVInitScript = import ../../nixproc/backends/sysvinit/create-sysvinit-script.nix {
|
||||
inherit (pkgs) stdenv writeTextFile daemon;
|
||||
inherit runtimeDir logDir tmpDir forceDisableUserChange;
|
||||
|
||||
|
@ -18,7 +18,7 @@ let
|
|||
inherit ids forceDisableUserChange;
|
||||
};
|
||||
|
||||
initFunctions = import ../../nixproc/create-managed-process/sysvinit/init-functions.nix {
|
||||
initFunctions = import ../../nixproc/backends/sysvinit/init-functions.nix {
|
||||
basePackages = [ pkgs.coreutils pkgs.gnused pkgs.inetutils pkgs.gnugrep pkgs.sysvinit ];
|
||||
inherit (pkgs) stdenv fetchurl;
|
||||
inherit runtimeDir;
|
||||
|
|
|
@ -1,21 +1,21 @@
|
|||
{pkgs, system, exprFile, stateDir, runtimeDir, forceDisableUserChange, extraParams}:
|
||||
|
||||
let
|
||||
sysvinitTools = (import ../../tools {
|
||||
sysvinitTools = (import ../../../tools {
|
||||
inherit pkgs system;
|
||||
}).sysvinit;
|
||||
|
||||
generateCompoundProxy = import ./generate-compound-proxy.nix {
|
||||
generateCompoundProxy = import ../util/generate-compound-proxy.nix {
|
||||
inherit (pkgs) stdenv writeTextFile;
|
||||
};
|
||||
|
||||
disnixDataDir = "${pkgs.disnix}/share/disnix";
|
||||
|
||||
profile = import ../create-managed-process/disnix/build-disnix-env.nix {
|
||||
profile = import ./build-disnix-env.nix {
|
||||
inherit pkgs system exprFile stateDir runtimeDir forceDisableUserChange extraParams disnixDataDir;
|
||||
};
|
||||
|
||||
emptyProfile = import ../create-managed-process/disnix/build-disnix-env.nix {
|
||||
emptyProfile = import ./build-disnix-env.nix {
|
||||
inherit pkgs system stateDir runtimeDir forceDisableUserChange extraParams disnixDataDir;
|
||||
exprFile = null;
|
||||
};
|
|
@ -1,7 +1,7 @@
|
|||
{pkgs, system, exprFile, stateDir, runtimeDir, forceDisableUserChange, extraParams}:
|
||||
|
||||
let
|
||||
profile = import ../create-managed-process/s6-rc/build-s6-rc-env.nix {
|
||||
profile = import ./build-s6-rc-env.nix {
|
||||
inherit pkgs system exprFile extraParams stateDir runtimeDir forceDisableUserChange;
|
||||
};
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
{pkgs, system, exprFile, stateDir, runtimeDir, forceDisableUserChange, extraParams}:
|
||||
|
||||
let
|
||||
profile = import ../create-managed-process/supervisord/build-supervisord-env.nix {
|
||||
profile = import ./build-supervisord-env.nix {
|
||||
inherit pkgs system exprFile extraParams stateDir runtimeDir forceDisableUserChange;
|
||||
};
|
||||
in
|
|
@ -1,11 +1,11 @@
|
|||
{pkgs, system, exprFile, stateDir, runtimeDir, forceDisableUserChange, extraParams}:
|
||||
|
||||
let
|
||||
sysvinitTools = (import ../../tools {
|
||||
sysvinitTools = (import ../../../tools {
|
||||
inherit pkgs system;
|
||||
}).sysvinit;
|
||||
|
||||
generateCompoundProxy = import ./generate-compound-proxy.nix {
|
||||
generateCompoundProxy = import ../util/generate-compound-proxy.nix {
|
||||
inherit (pkgs) stdenv writeTextFile;
|
||||
};
|
||||
|
||||
|
@ -16,7 +16,7 @@ let
|
|||
stopCommand = "${sysvinitTools}/bin/nixproc-sysvinit-runactivity -r stop ${profile}";
|
||||
};
|
||||
|
||||
profile = import ../create-managed-process/sysvinit/build-sysvinit-env.nix {
|
||||
profile = import ./build-sysvinit-env.nix {
|
||||
inherit exprFile stateDir runtimeDir forceDisableUserChange extraParams;
|
||||
};
|
||||
in
|
|
@ -13,102 +13,102 @@ let
|
|||
inherit ids forceDisableUserChange;
|
||||
};
|
||||
|
||||
createSystemVInitScript = import ../sysvinit/create-sysvinit-script.nix {
|
||||
createSystemVInitScript = import ../../backends/sysvinit/create-sysvinit-script.nix {
|
||||
inherit (pkgs) stdenv writeTextFile daemon;
|
||||
inherit createCredentials runtimeDir logDir tmpDir forceDisableUserChange;
|
||||
|
||||
initFunctions = import ../sysvinit/init-functions.nix {
|
||||
initFunctions = import ../../backends/sysvinit/init-functions.nix {
|
||||
inherit (pkgs) stdenv fetchurl;
|
||||
inherit runtimeDir;
|
||||
basePackages = basePackages ++ [ pkgs.sysvinit ];
|
||||
};
|
||||
};
|
||||
|
||||
generateSystemVInitScript = import ../sysvinit/generate-sysvinit-script.nix {
|
||||
generateSystemVInitScript = import ../../backends/sysvinit/generate-sysvinit-script.nix {
|
||||
inherit createSystemVInitScript;
|
||||
inherit (pkgs) stdenv;
|
||||
};
|
||||
|
||||
createSystemdService = import ../systemd/create-systemd-service.nix {
|
||||
createSystemdService = import ../../backends/systemd/create-systemd-service.nix {
|
||||
inherit (pkgs) writeTextFile stdenv;
|
||||
inherit createCredentials basePackages forceDisableUserChange;
|
||||
};
|
||||
|
||||
generateSystemdService = import ../systemd/generate-systemd-service.nix {
|
||||
generateSystemdService = import ../../backends/systemd/generate-systemd-service.nix {
|
||||
inherit createSystemdService;
|
||||
inherit (pkgs) stdenv writeTextFile;
|
||||
};
|
||||
|
||||
createSupervisordProgram = import ../supervisord/create-supervisord-program.nix {
|
||||
createSupervisordProgram = import ../../backends/supervisord/create-supervisord-program.nix {
|
||||
inherit (pkgs) writeTextFile stdenv;
|
||||
inherit (pkgs.pythonPackages) supervisor;
|
||||
inherit createCredentials basePackages forceDisableUserChange runtimeDir;
|
||||
};
|
||||
|
||||
generateSupervisordProgram = import ../supervisord/generate-supervisord-program.nix {
|
||||
generateSupervisordProgram = import ../../backends/supervisord/generate-supervisord-program.nix {
|
||||
inherit createSupervisordProgram runtimeDir;
|
||||
inherit (pkgs) stdenv writeTextFile;
|
||||
};
|
||||
|
||||
createBSDRCScript = import ../bsdrc/create-bsdrc-script.nix {
|
||||
createBSDRCScript = import ../../backends/bsdrc/create-bsdrc-script.nix {
|
||||
inherit (pkgs) writeTextFile stdenv;
|
||||
inherit createCredentials forceDisableUserChange runtimeDir tmpDir;
|
||||
|
||||
rcSubr = import ../bsdrc/rcsubr.nix {
|
||||
rcSubr = import ../../backends/bsdrc/rcsubr.nix {
|
||||
inherit (pkgs) stdenv;
|
||||
inherit forceDisableUserChange;
|
||||
};
|
||||
};
|
||||
|
||||
generateBSDRCScript = import ../bsdrc/generate-bsdrc-script.nix {
|
||||
generateBSDRCScript = import ../../backends/bsdrc/generate-bsdrc-script.nix {
|
||||
inherit createBSDRCScript;
|
||||
inherit (pkgs) stdenv;
|
||||
};
|
||||
|
||||
createLaunchdDaemon = import ../launchd/create-launchd-daemon.nix {
|
||||
createLaunchdDaemon = import ../../backends/launchd/create-launchd-daemon.nix {
|
||||
inherit (pkgs) writeTextFile stdenv;
|
||||
inherit createCredentials forceDisableUserChange;
|
||||
};
|
||||
|
||||
generateLaunchdDaemon = import ../launchd/generate-launchd-daemon.nix {
|
||||
generateLaunchdDaemon = import ../../backends/launchd/generate-launchd-daemon.nix {
|
||||
inherit (pkgs) stdenv writeTextFile;
|
||||
inherit createLaunchdDaemon runtimeDir;
|
||||
};
|
||||
|
||||
createCygrunsrvParams = import ../cygrunsrv/create-cygrunsrv-params.nix {
|
||||
createCygrunsrvParams = import ../../backends/cygrunsrv/create-cygrunsrv-params.nix {
|
||||
inherit (pkgs) writeTextFile stdenv;
|
||||
};
|
||||
|
||||
generateCygrunsrvParams = import ../cygrunsrv/generate-cygrunsrv-params.nix {
|
||||
generateCygrunsrvParams = import ../../backends/cygrunsrv/generate-cygrunsrv-params.nix {
|
||||
inherit (pkgs) stdenv writeTextFile;
|
||||
inherit createCygrunsrvParams runtimeDir;
|
||||
};
|
||||
|
||||
createProcessScript = import ../disnix/create-process-script.nix {
|
||||
createProcessScript = import ../../backends/disnix/create-process-script.nix {
|
||||
inherit (pkgs) stdenv;
|
||||
inherit createCredentials forceDisableUserChange;
|
||||
};
|
||||
|
||||
generateProcessScript = import ../disnix/generate-process-script.nix {
|
||||
generateProcessScript = import ../../backends/disnix/generate-process-script.nix {
|
||||
inherit (pkgs) stdenv writeTextFile daemon;
|
||||
inherit createProcessScript runtimeDir logDir tmpDir forceDisableUserChange basePackages;
|
||||
};
|
||||
|
||||
createDockerContainer = import ../docker/create-docker-container.nix {
|
||||
createDockerContainer = import ../../backends/docker/create-docker-container.nix {
|
||||
inherit (pkgs) stdenv;
|
||||
};
|
||||
|
||||
generateDockerContainer = import ../docker/generate-docker-container.nix {
|
||||
generateDockerContainer = import ../../backends/docker/generate-docker-container.nix {
|
||||
inherit (pkgs) stdenv writeTextFile dockerTools findutils glibc dysnomia;
|
||||
inherit createDockerContainer basePackages runtimeDir stateDir forceDisableUserChange createCredentials;
|
||||
};
|
||||
|
||||
s6-rc = import ../s6-rc {
|
||||
s6-rc = import ../../backends/s6-rc {
|
||||
inherit (pkgs) stdenv execline;
|
||||
inherit createCredentials logDir forceDisableUserChange;
|
||||
};
|
||||
|
||||
generateS6Service = import ../s6-rc/generate-s6-service.nix {
|
||||
generateS6RCService = import ../../backends/s6-rc/generate-s6-rc-service.nix {
|
||||
inherit (pkgs) stdenv writeTextFile execline;
|
||||
inherit s6-rc tmpDir runtimeDir forceDisableUserChange;
|
||||
};
|
||||
|
@ -118,14 +118,14 @@ import ../agnostic/create-managed-process.nix {
|
|||
inherit (pkgs) stdenv;
|
||||
|
||||
generators = {
|
||||
sysvinit = generateSystemVInitScript;
|
||||
systemd = generateSystemdService;
|
||||
supervisord = generateSupervisordProgram;
|
||||
bsdrc = generateBSDRCScript;
|
||||
launchd = generateLaunchdDaemon;
|
||||
cygrunsrv = generateCygrunsrvParams;
|
||||
disnix = generateProcessScript;
|
||||
docker = generateDockerContainer;
|
||||
s6-rc = generateS6Service;
|
||||
launchd = generateLaunchdDaemon;
|
||||
s6-rc = generateS6RCService;
|
||||
supervisord = generateSupervisordProgram;
|
||||
systemd = generateSystemdService;
|
||||
sysvinit = generateSystemVInitScript;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
{dockerTools, stdenv, pkgs, system}:
|
||||
|
||||
import ./create-multi-process-image.nix {
|
||||
inherit dockerTools stdenv pkgs system;
|
||||
generators = {
|
||||
disnix = ../backends/disnix/generate-disnix-image-args.nix;
|
||||
s6-rc = ../backends/s6-rc/generate-s6-rc-image-args.nix;
|
||||
supervisord = ../backends/supervisord/generate-supervisord-image-args.nix;
|
||||
sysvinit = ../backends/sysvinit/generate-sysvinit-image-args.nix;
|
||||
};
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
{dockerTools, stdenv, pkgs, system}:
|
||||
{dockerTools, stdenv, pkgs, system, generators}:
|
||||
|
||||
{ interactive ? true
|
||||
, exprFile
|
||||
|
@ -20,22 +20,15 @@ let
|
|||
|
||||
commonTools = (import ../../tools { inherit pkgs; }).common;
|
||||
|
||||
processManagerArgs =
|
||||
if processManager == "disnix" then import ./generate-disnix-args.nix {
|
||||
inherit exprFile stateDir runtimeDir forceDisableUserChange extraParams pkgs system;
|
||||
}
|
||||
else if processManager == "s6-rc" then import ./generate-s6-rc-args.nix {
|
||||
inherit exprFile stateDir runtimeDir forceDisableUserChange extraParams pkgs system;
|
||||
}
|
||||
else if processManager == "supervisord" then import ./generate-supervisord-args.nix {
|
||||
inherit exprFile stateDir runtimeDir forceDisableUserChange extraParams pkgs system;
|
||||
}
|
||||
else if processManager == "sysvinit" then import ./generate-sysvinit-args.nix {
|
||||
inherit exprFile stateDir runtimeDir forceDisableUserChange extraParams pkgs system;
|
||||
}
|
||||
else throw "Unsupported process manager: ${processManager}";
|
||||
generateImageArgsModule = if builtins.hasAttr processManager generators
|
||||
then builtins.getAttr processManager generators
|
||||
else throw "Cannot use process manager: ${processManager} in a multi-process container!";
|
||||
|
||||
setupProcessManagement = import ../create-managed-process/docker/setup.nix {
|
||||
processManagerArgs = import generateImageArgsModule {
|
||||
inherit exprFile stateDir runtimeDir forceDisableUserChange extraParams pkgs system;
|
||||
};
|
||||
|
||||
setupProcessManagement = import ../backends/docker/setup.nix {
|
||||
inherit (pkgs) dockerTools stdenv dysnomia findutils glibc;
|
||||
inherit (processManagerArgs) credentialsSpec;
|
||||
inherit commonTools stateDir runtimeDir forceDisableUserChange;
|
||||
|
|
|
@ -5,7 +5,7 @@ with import "${nixpkgs}/nixos/lib/testing-python.nix" { system = builtins.curren
|
|||
let
|
||||
pkgs = import nixpkgs {};
|
||||
|
||||
dockerProcessEnv = import ../nixproc/create-managed-process/systemd/build-systemd-env.nix {
|
||||
dockerProcessEnv = import ../nixproc/backends/systemd/build-systemd-env.nix {
|
||||
exprFile = ./processes-docker.nix;
|
||||
};
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ with import "${nixpkgs}/nixos/lib/testing-python.nix" { system = builtins.curren
|
|||
let
|
||||
disnixDataDir = "${pkgs.disnix}/share/disnix";
|
||||
|
||||
processesEnvForeground = import ../nixproc/create-managed-process/disnix/build-disnix-env.nix {
|
||||
processesEnvForeground = import ../nixproc/backends/disnix/build-disnix-env.nix {
|
||||
inherit disnixDataDir;
|
||||
exprFile = ../examples/webapps-agnostic/processes.nix;
|
||||
extraParams = {
|
||||
|
@ -13,7 +13,7 @@ let
|
|||
};
|
||||
};
|
||||
|
||||
processesEnvDaemon = import ../nixproc/create-managed-process/disnix/build-disnix-env.nix {
|
||||
processesEnvDaemon = import ../nixproc/backends/disnix/build-disnix-env.nix {
|
||||
inherit disnixDataDir;
|
||||
exprFile = ../examples/webapps-agnostic/processes.nix;
|
||||
extraParams = {
|
||||
|
@ -21,23 +21,23 @@ let
|
|||
};
|
||||
};
|
||||
|
||||
processesEnvAuto = import ../nixproc/create-managed-process/disnix/build-disnix-env.nix {
|
||||
processesEnvAuto = import ../nixproc/backends/disnix/build-disnix-env.nix {
|
||||
inherit disnixDataDir;
|
||||
exprFile = ../examples/webapps-agnostic/processes.nix;
|
||||
};
|
||||
|
||||
processesEnvAdvanced = import ../nixproc/create-managed-process/disnix/build-disnix-env.nix {
|
||||
processesEnvAdvanced = import ../nixproc/backends/disnix/build-disnix-env.nix {
|
||||
inherit disnixDataDir;
|
||||
exprFile = ../examples/webapps-agnostic/processes-advanced.nix;
|
||||
};
|
||||
|
||||
processesEnvNoUserChange = import ../nixproc/create-managed-process/disnix/build-disnix-env.nix {
|
||||
processesEnvNoUserChange = import ../nixproc/backends/disnix/build-disnix-env.nix {
|
||||
inherit disnixDataDir;
|
||||
exprFile = ../examples/webapps-agnostic/processes.nix;
|
||||
forceDisableUserChange = true;
|
||||
};
|
||||
|
||||
processesEnvEmpty = import ../nixproc/create-managed-process/disnix/build-disnix-env.nix {
|
||||
processesEnvEmpty = import ../nixproc/backends/disnix/build-disnix-env.nix {
|
||||
inherit disnixDataDir;
|
||||
exprFile = null;
|
||||
};
|
||||
|
|
|
@ -3,38 +3,38 @@
|
|||
with import "${nixpkgs}/nixos/lib/testing-python.nix" { system = builtins.currentSystem; };
|
||||
|
||||
let
|
||||
dockerProcessEnv = import ../nixproc/create-managed-process/systemd/build-systemd-env.nix {
|
||||
dockerProcessEnv = import ../nixproc/backends/systemd/build-systemd-env.nix {
|
||||
exprFile = ./processes-docker.nix;
|
||||
};
|
||||
|
||||
processesEnvForeground = import ../nixproc/create-managed-process/docker/build-docker-env.nix {
|
||||
processesEnvForeground = import ../nixproc/backends/docker/build-docker-env.nix {
|
||||
exprFile = ../examples/webapps-agnostic/processes.nix;
|
||||
extraParams = {
|
||||
webappMode = "foreground";
|
||||
};
|
||||
};
|
||||
|
||||
processesEnvDaemon = import ../nixproc/create-managed-process/docker/build-docker-env.nix {
|
||||
processesEnvDaemon = import ../nixproc/backends/docker/build-docker-env.nix {
|
||||
exprFile = ../examples/webapps-agnostic/processes.nix;
|
||||
extraParams = {
|
||||
webappMode = "daemon";
|
||||
};
|
||||
};
|
||||
|
||||
processesEnvAuto = import ../nixproc/create-managed-process/docker/build-docker-env.nix {
|
||||
processesEnvAuto = import ../nixproc/backends/docker/build-docker-env.nix {
|
||||
exprFile = ../examples/webapps-agnostic/processes.nix;
|
||||
};
|
||||
|
||||
processesEnvAdvanced = import ../nixproc/create-managed-process/docker/build-docker-env.nix {
|
||||
processesEnvAdvanced = import ../nixproc/backends/docker/build-docker-env.nix {
|
||||
exprFile = ../examples/webapps-agnostic/processes-advanced.nix;
|
||||
};
|
||||
|
||||
processesEnvUnprivileged = import ../nixproc/create-managed-process/docker/build-docker-env.nix {
|
||||
processesEnvUnprivileged = import ../nixproc/backends/docker/build-docker-env.nix {
|
||||
exprFile = ../examples/webapps-agnostic/processes.nix;
|
||||
forceDisableUserChange = true;
|
||||
};
|
||||
|
||||
processesEnvEmpty = import ../nixproc/create-managed-process/docker/build-docker-env.nix {
|
||||
processesEnvEmpty = import ../nixproc/backends/docker/build-docker-env.nix {
|
||||
exprFile = null;
|
||||
};
|
||||
|
||||
|
|
|
@ -3,38 +3,38 @@
|
|||
with import "${nixpkgs}/nixos/lib/testing-python.nix" { system = builtins.currentSystem; };
|
||||
|
||||
let
|
||||
s6-svscanProcessEnv = import ../nixproc/create-managed-process/systemd/build-systemd-env.nix {
|
||||
s6-svscanProcessEnv = import ../nixproc/backends/systemd/build-systemd-env.nix {
|
||||
exprFile = ./processes-s6-svscan.nix;
|
||||
};
|
||||
|
||||
processesEnvForeground = import ../nixproc/create-managed-process/s6-rc/build-s6-rc-env.nix {
|
||||
processesEnvForeground = import ../nixproc/backends/s6-rc/build-s6-rc-env.nix {
|
||||
exprFile = ../examples/webapps-agnostic/processes.nix;
|
||||
extraParams = {
|
||||
webappMode = "foreground";
|
||||
};
|
||||
};
|
||||
|
||||
processesEnvDaemon = import ../nixproc/create-managed-process/s6-rc/build-s6-rc-env.nix {
|
||||
processesEnvDaemon = import ../nixproc/backends/s6-rc/build-s6-rc-env.nix {
|
||||
exprFile = ../examples/webapps-agnostic/processes.nix;
|
||||
extraParams = {
|
||||
webappMode = "daemon";
|
||||
};
|
||||
};
|
||||
|
||||
processesEnvAuto = import ../nixproc/create-managed-process/s6-rc/build-s6-rc-env.nix {
|
||||
processesEnvAuto = import ../nixproc/backends/s6-rc/build-s6-rc-env.nix {
|
||||
exprFile = ../examples/webapps-agnostic/processes.nix;
|
||||
};
|
||||
|
||||
processesEnvAutoUnprivileged = import ../nixproc/create-managed-process/s6-rc/build-s6-rc-env.nix {
|
||||
processesEnvAutoUnprivileged = import ../nixproc/backends/s6-rc/build-s6-rc-env.nix {
|
||||
exprFile = ../examples/webapps-agnostic/processes.nix;
|
||||
forceDisableUserChange = true;
|
||||
};
|
||||
|
||||
processesEnvAdvanced = import ../nixproc/create-managed-process/s6-rc/build-s6-rc-env.nix {
|
||||
processesEnvAdvanced = import ../nixproc/backends/s6-rc/build-s6-rc-env.nix {
|
||||
exprFile = ../examples/webapps-agnostic/processes-advanced.nix;
|
||||
};
|
||||
|
||||
processesEnvEmpty = import ../nixproc/create-managed-process/s6-rc/build-s6-rc-env.nix {
|
||||
processesEnvEmpty = import ../nixproc/backends/s6-rc/build-s6-rc-env.nix {
|
||||
exprFile = null;
|
||||
};
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
with import "${nixpkgs}/nixos/lib/testing-python.nix" { system = builtins.currentSystem; };
|
||||
|
||||
let
|
||||
processesEnvAuto = import ../nixproc/create-managed-process/supervisord/build-supervisord-env.nix {
|
||||
processesEnvAuto = import ../nixproc/backends/supervisord/build-supervisord-env.nix {
|
||||
exprFile = ../examples/webapps-agnostic/processes.nix;
|
||||
};
|
||||
|
||||
|
|
|
@ -3,38 +3,38 @@
|
|||
with import "${nixpkgs}/nixos/lib/testing-python.nix" { system = builtins.currentSystem; };
|
||||
|
||||
let
|
||||
supervisordProcessEnv = import ../nixproc/create-managed-process/systemd/build-systemd-env.nix {
|
||||
supervisordProcessEnv = import ../nixproc/backends/systemd/build-systemd-env.nix {
|
||||
exprFile = ./processes-supervisord.nix;
|
||||
};
|
||||
|
||||
processesEnvForeground = import ../nixproc/create-managed-process/supervisord/build-supervisord-env.nix {
|
||||
processesEnvForeground = import ../nixproc/backends/supervisord/build-supervisord-env.nix {
|
||||
exprFile = ../examples/webapps-agnostic/processes.nix;
|
||||
extraParams = {
|
||||
webappMode = "foreground";
|
||||
};
|
||||
};
|
||||
|
||||
processesEnvDaemon = import ../nixproc/create-managed-process/supervisord/build-supervisord-env.nix {
|
||||
processesEnvDaemon = import ../nixproc/backends/supervisord/build-supervisord-env.nix {
|
||||
exprFile = ../examples/webapps-agnostic/processes.nix;
|
||||
extraParams = {
|
||||
webappMode = "daemon";
|
||||
};
|
||||
};
|
||||
|
||||
processesEnvAuto = import ../nixproc/create-managed-process/supervisord/build-supervisord-env.nix {
|
||||
processesEnvAuto = import ../nixproc/backends/supervisord/build-supervisord-env.nix {
|
||||
exprFile = ../examples/webapps-agnostic/processes.nix;
|
||||
};
|
||||
|
||||
processesEnvAutoUnprivileged = import ../nixproc/create-managed-process/supervisord/build-supervisord-env.nix {
|
||||
processesEnvAutoUnprivileged = import ../nixproc/backends/supervisord/build-supervisord-env.nix {
|
||||
exprFile = ../examples/webapps-agnostic/processes.nix;
|
||||
forceDisableUserChange = true;
|
||||
};
|
||||
|
||||
processesEnvAdvanced = import ../nixproc/create-managed-process/supervisord/build-supervisord-env.nix {
|
||||
processesEnvAdvanced = import ../nixproc/backends/supervisord/build-supervisord-env.nix {
|
||||
exprFile = ../examples/webapps-agnostic/processes-advanced.nix;
|
||||
};
|
||||
|
||||
processesEnvEmpty = import ../nixproc/create-managed-process/supervisord/build-supervisord-env.nix {
|
||||
processesEnvEmpty = import ../nixproc/backends/supervisord/build-supervisord-env.nix {
|
||||
exprFile = null;
|
||||
};
|
||||
|
||||
|
|
|
@ -3,13 +3,13 @@
|
|||
with import "${nixpkgs}/nixos/lib/testing-python.nix" { system = builtins.currentSystem; };
|
||||
|
||||
let
|
||||
processesEnvAuto = import ../nixproc/create-managed-process/systemd/build-systemd-env.nix {
|
||||
processesEnvAuto = import ../nixproc/backends/systemd/build-systemd-env.nix {
|
||||
exprFile = ../examples/webapps-agnostic/processes.nix;
|
||||
stateDir = "/home/unprivileged/var";
|
||||
forceDisableUserChange = true;
|
||||
};
|
||||
|
||||
processesEnvEmpty = import ../nixproc/create-managed-process/systemd/build-systemd-env.nix {
|
||||
processesEnvEmpty = import ../nixproc/backends/systemd/build-systemd-env.nix {
|
||||
exprFile = null;
|
||||
stateDir = "/home/unprivileged/var";
|
||||
forceDisableUserChange = true;
|
||||
|
|
|
@ -3,29 +3,29 @@
|
|||
with import "${nixpkgs}/nixos/lib/testing-python.nix" { system = builtins.currentSystem; };
|
||||
|
||||
let
|
||||
processesEnvForeground = import ../nixproc/create-managed-process/systemd/build-systemd-env.nix {
|
||||
processesEnvForeground = import ../nixproc/backends/systemd/build-systemd-env.nix {
|
||||
exprFile = ../examples/webapps-agnostic/processes.nix;
|
||||
extraParams = {
|
||||
webappMode = "foreground";
|
||||
};
|
||||
};
|
||||
|
||||
processesEnvDaemon = import ../nixproc/create-managed-process/systemd/build-systemd-env.nix {
|
||||
processesEnvDaemon = import ../nixproc/backends/systemd/build-systemd-env.nix {
|
||||
exprFile = ../examples/webapps-agnostic/processes.nix;
|
||||
extraParams = {
|
||||
webappMode = "daemon";
|
||||
};
|
||||
};
|
||||
|
||||
processesEnvAuto = import ../nixproc/create-managed-process/systemd/build-systemd-env.nix {
|
||||
processesEnvAuto = import ../nixproc/backends/systemd/build-systemd-env.nix {
|
||||
exprFile = ../examples/webapps-agnostic/processes.nix;
|
||||
};
|
||||
|
||||
processesEnvAdvanced = import ../nixproc/create-managed-process/systemd/build-systemd-env.nix {
|
||||
processesEnvAdvanced = import ../nixproc/backends/systemd/build-systemd-env.nix {
|
||||
exprFile = ../examples/webapps-agnostic/processes-advanced.nix;
|
||||
};
|
||||
|
||||
processesEnvEmpty = import ../nixproc/create-managed-process/systemd/build-systemd-env.nix {
|
||||
processesEnvEmpty = import ../nixproc/backends/systemd/build-systemd-env.nix {
|
||||
exprFile = null;
|
||||
};
|
||||
|
||||
|
|
|
@ -24,31 +24,31 @@ let
|
|||
webappMode = null;
|
||||
}).webapp.pkg;
|
||||
|
||||
processesEnv = import ../nixproc/create-managed-process/sysvinit/build-sysvinit-env.nix {
|
||||
processesEnv = import ../nixproc/backends/sysvinit/build-sysvinit-env.nix {
|
||||
exprFile = ../examples/webapps-agnostic/processes.nix;
|
||||
};
|
||||
|
||||
processesEnvUnprivileged = import ../nixproc/create-managed-process/sysvinit/build-sysvinit-env.nix {
|
||||
processesEnvUnprivileged = import ../nixproc/backends/sysvinit/build-sysvinit-env.nix {
|
||||
exprFile = ../examples/webapps-agnostic/processes.nix;
|
||||
stateDir = "/home/unprivileged/var";
|
||||
forceDisableUserChange = true;
|
||||
};
|
||||
|
||||
processesEnvAdvanced = import ../nixproc/create-managed-process/sysvinit/build-sysvinit-env.nix {
|
||||
processesEnvAdvanced = import ../nixproc/backends/sysvinit/build-sysvinit-env.nix {
|
||||
exprFile = ../examples/webapps-agnostic/processes-advanced.nix;
|
||||
};
|
||||
|
||||
processesEnvAdvancedUnprivileged = import ../nixproc/create-managed-process/sysvinit/build-sysvinit-env.nix {
|
||||
processesEnvAdvancedUnprivileged = import ../nixproc/backends/sysvinit/build-sysvinit-env.nix {
|
||||
exprFile = ../examples/webapps-agnostic/processes-advanced.nix;
|
||||
stateDir = "/home/unprivileged/var";
|
||||
forceDisableUserChange = true;
|
||||
};
|
||||
|
||||
processesEnvEmpty = import ../nixproc/create-managed-process/sysvinit/build-sysvinit-env.nix {
|
||||
processesEnvEmpty = import ../nixproc/backends/sysvinit/build-sysvinit-env.nix {
|
||||
exprFile = null;
|
||||
};
|
||||
|
||||
processesEnvEmptyUnprivileged = import ../nixproc/create-managed-process/sysvinit/build-sysvinit-env.nix {
|
||||
processesEnvEmptyUnprivileged = import ../nixproc/backends/sysvinit/build-sysvinit-env.nix {
|
||||
exprFile = null;
|
||||
stateDir = "/home/unprivileged/var";
|
||||
forceDisableUserChange = true;
|
||||
|
|
|
@ -8,31 +8,31 @@ let
|
|||
stateDir = "/home/unprivileged/var";
|
||||
}).webapp.pkg;
|
||||
|
||||
processesEnv = import ../nixproc/create-managed-process/sysvinit/build-sysvinit-env.nix {
|
||||
processesEnv = import ../nixproc/backends/sysvinit/build-sysvinit-env.nix {
|
||||
exprFile = ../examples/webapps-sysvinit/processes.nix;
|
||||
};
|
||||
|
||||
processesEnvUnprivileged = import ../nixproc/create-managed-process/sysvinit/build-sysvinit-env.nix {
|
||||
processesEnvUnprivileged = import ../nixproc/backends/sysvinit/build-sysvinit-env.nix {
|
||||
exprFile = ../examples/webapps-sysvinit/processes.nix;
|
||||
forceDisableUserChange = true;
|
||||
stateDir = "/home/unprivileged/var";
|
||||
};
|
||||
|
||||
processesEnvAdvanced = import ../nixproc/create-managed-process/sysvinit/build-sysvinit-env.nix {
|
||||
processesEnvAdvanced = import ../nixproc/backends/sysvinit/build-sysvinit-env.nix {
|
||||
exprFile = ../examples/webapps-sysvinit/processes-advanced.nix;
|
||||
};
|
||||
|
||||
processesEnvAdvancedUnprivileged = import ../nixproc/create-managed-process/sysvinit/build-sysvinit-env.nix {
|
||||
processesEnvAdvancedUnprivileged = import ../nixproc/backends/sysvinit/build-sysvinit-env.nix {
|
||||
exprFile = ../examples/webapps-sysvinit/processes-advanced.nix;
|
||||
forceDisableUserChange = true;
|
||||
stateDir = "/home/unprivileged/var";
|
||||
};
|
||||
|
||||
processesEnvEmpty = import ../nixproc/create-managed-process/sysvinit/build-sysvinit-env.nix {
|
||||
processesEnvEmpty = import ../nixproc/backends/sysvinit/build-sysvinit-env.nix {
|
||||
exprFile = null;
|
||||
};
|
||||
|
||||
processesEnvEmptyUnprivileged = import ../nixproc/create-managed-process/sysvinit/build-sysvinit-env.nix {
|
||||
processesEnvEmptyUnprivileged = import ../nixproc/backends/sysvinit/build-sysvinit-env.nix {
|
||||
exprFile = null;
|
||||
forceDisableUserChange = true;
|
||||
stateDir = "/home/unprivileged/var";
|
||||
|
|
|
@ -162,4 +162,4 @@ fi
|
|||
NIXPROC=${NIXPROC:-@NIXPROC@}
|
||||
|
||||
# Build the profile
|
||||
nix-build $stateDirArg $runtimeDirArg $logDirArg $tmpDirArg $cacheDirArg $forceDisableUserChangeArg $noOutLinkArg $showTraceArg $processManagerArg "${extraParamsArg[@]}" $exprFileArg $NIXPROC/create-managed-process/$processManager/build-$processManager-env.nix
|
||||
nix-build $stateDirArg $runtimeDirArg $logDirArg $tmpDirArg $cacheDirArg $forceDisableUserChangeArg $noOutLinkArg $showTraceArg $processManagerArg "${extraParamsArg[@]}" $exprFileArg $NIXPROC/backends/$processManager/build-$processManager-env.nix
|
||||
|
|
|
@ -128,4 +128,4 @@ NIXPROC=${NIXPROC:-@NIXPROC@}
|
|||
export PROCESSES_EXPR="$(@readlink@ -f "$processesFile")"
|
||||
|
||||
# Assign IDs
|
||||
dydisnix-id-assign -s $NIXPROC/create-managed-process/disnix/services-adapter.nix --id-resources $idResourcesFile $idsParam $servicePropertyArg $outputFileArg $outputXmlArg $stateDirArg $runtimeDirArg $logDirArg $tmpDirArg $cacheDirArg $forceDisableUserChangeArg
|
||||
dydisnix-id-assign -s $NIXPROC/backends/disnix/services-adapter.nix --id-resources $idResourcesFile $idsParam $servicePropertyArg $outputFileArg $outputXmlArg $stateDirArg $runtimeDirArg $logDirArg $tmpDirArg $cacheDirArg $forceDisableUserChangeArg
|
||||
|
|
|
@ -15,7 +15,15 @@ stdenv.mkDerivation {
|
|||
-e "s|@getopt@|${getopt}/bin/getopt|" \
|
||||
-e "s|@readlink@|$(type -p readlink)|" \
|
||||
-e "s|@commonchecks@|${../commonchecks}|" \
|
||||
-e "s|@s6rcchecks@|${./s6-rc-checks}|" \
|
||||
${./nixproc-s6-rc-deploy.in} > $out/bin/nixproc-s6-rc-deploy
|
||||
chmod +x $out/bin/nixproc-s6-rc-deploy
|
||||
|
||||
sed -e "s|/bin/bash|$SHELL|" \
|
||||
-e "s|@getopt@|${getopt}/bin/getopt|" \
|
||||
-e "s|@commonchecks@|${../commonchecks}|" \
|
||||
-e "s|@s6rcchecks@|${./s6-rc-checks}|" \
|
||||
${./nixproc-s6-svscan.in} > $out/bin/nixproc-s6-svscan
|
||||
chmod +x $out/bin/nixproc-s6-svscan
|
||||
'';
|
||||
}
|
||||
|
|
|
@ -94,15 +94,16 @@ profilePath="$1"
|
|||
# Validate the given options
|
||||
|
||||
source @commonchecks@
|
||||
source @s6rcchecks@
|
||||
|
||||
checkNixStateDir
|
||||
checkProfile
|
||||
|
||||
stateDir="${stateDir:-/var}"
|
||||
runtimeDir="${runtimeDir:-$stateDir/run}"
|
||||
checkStateDir
|
||||
checkRuntimeDir
|
||||
checkScanDir
|
||||
compileDir="$stateDir/etc/s6/rc"
|
||||
liveDir="$runtimeDir/s6-rc"
|
||||
scanDir="$runtimeDir/service"
|
||||
|
||||
# Initialize all state
|
||||
|
||||
|
|
|
@ -0,0 +1,72 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
shopt -s nullglob
|
||||
|
||||
showUsage()
|
||||
{
|
||||
cat <<EOF
|
||||
Usage: $0 [OPTION]
|
||||
|
||||
Starts the s6-svscan service for supervising process trees.
|
||||
|
||||
Options:
|
||||
--state-dir Changes the directory in which the state of the
|
||||
processes are stored
|
||||
--runtime-dir Changes the directory in which the PID files are stored
|
||||
-h, --help Shows the usage of this command
|
||||
|
||||
Environment:
|
||||
NIXPROC_STATE_DIR Changes the directory in which the state of the
|
||||
processes is stored
|
||||
NIXPROC_RUNTIME_DIR Changes the directory in which the PID files are stored
|
||||
EOF
|
||||
}
|
||||
|
||||
# Parse valid argument options
|
||||
|
||||
PARAMS=`@getopt@ -n $0 -o h -l state-dir:,runtime-dir:,help -- "$@"`
|
||||
|
||||
if [ $? != 0 ]
|
||||
then
|
||||
showUsage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Evaluate valid options
|
||||
|
||||
eval set -- "$PARAMS"
|
||||
|
||||
while [ "$1" != "--" ]
|
||||
do
|
||||
case "$1" in
|
||||
--state-dir)
|
||||
stateDir="$2"
|
||||
;;
|
||||
--runtime-dir)
|
||||
runtimeDir="$2"
|
||||
;;
|
||||
-h|--help)
|
||||
showUsage
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
shift
|
||||
done
|
||||
|
||||
shift
|
||||
|
||||
# Validate the given options
|
||||
|
||||
source @commonchecks@
|
||||
source @s6rcchecks@
|
||||
|
||||
checkStateDir
|
||||
checkRuntimeDir
|
||||
checkScanDir
|
||||
|
||||
# Initialize scan dir
|
||||
mkdir -p "$scanDir"
|
||||
|
||||
# Run s6-svscan
|
||||
s6-svscan "$scanDir"
|
|
@ -0,0 +1,32 @@
|
|||
#!/bin/bash -e
|
||||
|
||||
checkStateDir()
|
||||
{
|
||||
if [ "$stateDir" = "" ]
|
||||
then
|
||||
if [ "$NIXPROC_STATE_DIR" = "" ]
|
||||
then
|
||||
stateDir="/var"
|
||||
else
|
||||
stateDir="$NIXPROC_STATE_DIR"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
checkRuntimeDir()
|
||||
{
|
||||
if [ "$runtimeDir" = "" ]
|
||||
then
|
||||
if [ "$NIXPROC_RUNTIME_DIR" = "" ]
|
||||
then
|
||||
runtimeDir="$stateDir/run"
|
||||
else
|
||||
runtimeDir="$NIXPROC_RUNTIME_DIR"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
checkScanDir()
|
||||
{
|
||||
scanDir="$runtimeDir/service"
|
||||
}
|
Loading…
Reference in New Issue