Make container providers configurable for the disnix-service
This commit is contained in:
parent
a2ef6d1936
commit
820dc58edf
|
@ -14,9 +14,13 @@ let
|
|||
constructors = import ../../services-agnostic/constructors.nix {
|
||||
inherit pkgs stateDir runtimeDir logDir tmpDir cacheDir spoolDir forceDisableUserChange processManager;
|
||||
};
|
||||
|
||||
containerProviderConstructors = import ../../service-containers-agnostic/constructors.nix {
|
||||
inherit pkgs stateDir runtimeDir logDir tmpDir cacheDir spoolDir forceDisableUserChange processManager;
|
||||
};
|
||||
in
|
||||
rec {
|
||||
sshd = rec {
|
||||
sshd = {
|
||||
pkg = constructors.sshd {
|
||||
extraSSHDConfig = ''
|
||||
UsePAM yes
|
|
@ -0,0 +1,51 @@
|
|||
{ pkgs ? import <nixpkgs> { inherit system; }
|
||||
, system ? builtins.currentSystem
|
||||
, stateDir ? "/var"
|
||||
, runtimeDir ? "${stateDir}/run"
|
||||
, logDir ? "${stateDir}/log"
|
||||
, spoolDir ? "${stateDir}/spool"
|
||||
, cacheDir ? "${stateDir}/cache"
|
||||
, tmpDir ? (if stateDir == "/var" then "/tmp" else "${stateDir}/tmp")
|
||||
, forceDisableUserChange ? false
|
||||
, processManager
|
||||
}:
|
||||
|
||||
let
|
||||
constructors = import ../../services-agnostic/constructors.nix {
|
||||
inherit pkgs stateDir runtimeDir logDir tmpDir cacheDir spoolDir forceDisableUserChange processManager;
|
||||
};
|
||||
|
||||
containerProviderConstructors = import ../../service-containers-agnostic/constructors.nix {
|
||||
inherit pkgs stateDir runtimeDir logDir tmpDir cacheDir spoolDir forceDisableUserChange processManager;
|
||||
};
|
||||
in
|
||||
rec {
|
||||
sshd = {
|
||||
pkg = constructors.sshd {
|
||||
extraSSHDConfig = ''
|
||||
UsePAM yes
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
dbus-daemon = {
|
||||
pkg = constructors.dbus-daemon {
|
||||
packages = [ pkgs.disnix ];
|
||||
};
|
||||
};
|
||||
|
||||
apache = containerProviderConstructors.simpleWebappApache {
|
||||
serverAdmin = "root@localhost";
|
||||
documentRoot = "/var/www";
|
||||
enablePHP = true;
|
||||
};
|
||||
|
||||
mysql = containerProviderConstructors.mysql {};
|
||||
|
||||
disnix-service = {
|
||||
pkg = constructors.disnix-service {
|
||||
inherit dbus-daemon;
|
||||
containerProviders = [ apache mysql ];
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
{tomcatConstructorFun, dysnomia, stateDir}:
|
||||
{tomcatConstructorFun, lib, dysnomia, stateDir}:
|
||||
|
||||
{ instanceSuffix ? ""
|
||||
, instanceName ? "tomcat${instanceSuffix}"
|
||||
|
@ -6,7 +6,7 @@
|
|||
, serverPort ? 8005
|
||||
, httpPort ? 8080, httpsPort ? 8443, ajpPort ? 8009
|
||||
, commonLibs ? []
|
||||
, type
|
||||
, type ? null
|
||||
, properties ? {}
|
||||
}:
|
||||
|
||||
|
@ -33,8 +33,10 @@ in
|
|||
rec {
|
||||
name = instanceName;
|
||||
|
||||
inherit pkg type catalinaBaseDir;
|
||||
inherit pkg catalinaBaseDir;
|
||||
tomcatPort = httpPort;
|
||||
|
||||
providesContainer = containerName;
|
||||
} // lib.optionalAttrs (type != null) {
|
||||
inherit type;
|
||||
} // properties
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
{apacheConstructorFun, dysnomia, forceDisableUserChange}:
|
||||
{apacheConstructorFun, lib, dysnomia, forceDisableUserChange}:
|
||||
|
||||
{ instanceSuffix ? "", instanceName ? "apache${instanceSuffix}"
|
||||
, containerName ? "apache-webapplication${instanceSuffix}"
|
||||
, port ? 80
|
||||
, modules ? [], serverName ? "localhost"
|
||||
, serverAdmin
|
||||
, documentRoot ? ./webapp
|
||||
, documentRoot ? ../../services-agnostic/http-server-common/webapp
|
||||
, extraConfig ? ""
|
||||
, enableCGI ? false
|
||||
, enablePHP ? false
|
||||
, filesetOwner ? null
|
||||
, type
|
||||
, type ? null
|
||||
, properties ? {}
|
||||
}:
|
||||
|
||||
|
@ -33,8 +33,10 @@ let
|
|||
in
|
||||
{
|
||||
name = instanceName;
|
||||
inherit pkg type port documentRoot;
|
||||
inherit pkg port documentRoot;
|
||||
providesContainer = containerName;
|
||||
} // lib.optionalAttrs (type != null) {
|
||||
inherit type;
|
||||
} // (if forceDisableUserChange || filesetOwner == null then {} else {
|
||||
inherit filesetOwner;
|
||||
}) // properties
|
||||
|
|
|
@ -23,10 +23,12 @@ in
|
|||
enableApacheWebApplication = true;
|
||||
});
|
||||
inherit forceDisableUserChange;
|
||||
inherit (pkgs) lib;
|
||||
};
|
||||
|
||||
simpleAppservingTomcat = import ./apache-tomcat/simple-appserving-tomcat.nix {
|
||||
inherit stateDir;
|
||||
inherit (pkgs) lib;
|
||||
tomcatConstructorFun = constructors.simpleAppservingTomcat;
|
||||
dysnomia = pkgs.dysnomia.override (origArgs: {
|
||||
enableTomcatWebApplication = true;
|
||||
|
@ -38,6 +40,7 @@ in
|
|||
dysnomia = pkgs.dysnomia.override (origArgs: {
|
||||
enableInfluxDatabase = true;
|
||||
});
|
||||
inherit (pkgs) lib;
|
||||
};
|
||||
|
||||
simpleMongodb = import ./mongodb/simplemongodb.nix {
|
||||
|
@ -49,6 +52,7 @@ in
|
|||
};
|
||||
|
||||
mysql = import ./mysql {
|
||||
inherit (pkgs) lib;
|
||||
inherit runtimeDir;
|
||||
mysqlConstructorFun = constructors.mysql;
|
||||
dysnomia = pkgs.dysnomia.override (origArgs: {
|
||||
|
@ -58,6 +62,7 @@ in
|
|||
|
||||
postgresql = import ./postgresql {
|
||||
inherit runtimeDir;
|
||||
inherit (pkgs) lib;
|
||||
postgresqlConstructorFun = constructors.postgresql;
|
||||
dysnomia = pkgs.dysnomia.override (origArgs: {
|
||||
enablePostgreSQLDatabase = true;
|
||||
|
@ -66,7 +71,7 @@ in
|
|||
|
||||
extendableSupervisord = import ./supervisord/extendable-supervisord.nix {
|
||||
inherit stateDir;
|
||||
inherit (pkgs) stdenv;
|
||||
inherit (pkgs) lib;
|
||||
supervisordConstructorFun = constructors.extendableSupervisord;
|
||||
dysnomia = pkgs.dysnomia.override (origArgs: {
|
||||
enableSupervisordProgram = true;
|
||||
|
@ -74,6 +79,7 @@ in
|
|||
};
|
||||
|
||||
svnserve = import ./svnserve {
|
||||
inherit (pkgs) lib;
|
||||
svnserveConstructorFun = constructors.svnserve;
|
||||
dysnomia = pkgs.dysnomia.override (origArgs: {
|
||||
enableSubversionRepository = true;
|
||||
|
|
|
@ -1,5 +1,16 @@
|
|||
{influxdbConstructorFun, dysnomia}:
|
||||
{instanceSuffix ? "", instanceName ? "influxdb${instanceSuffix}", containerName ? "influx-database${instanceSuffix}", rpcBindIP ? "127.0.0.1", rpcPort ? 8088, httpBindIP ? "", httpPort ? 8086, extraConfig ? "", type, properties ? {}}:
|
||||
{influxdbConstructorFun, lib, dysnomia}:
|
||||
|
||||
{ instanceSuffix ? ""
|
||||
, instanceName ? "influxdb${instanceSuffix}"
|
||||
, containerName ? "influx-database${instanceSuffix}"
|
||||
, rpcBindIP ? "127.0.0.1"
|
||||
, rpcPort ? 8088
|
||||
, httpBindIP ? ""
|
||||
, httpPort ? 8086
|
||||
, extraConfig ? ""
|
||||
, type ? null
|
||||
, properties ? {}
|
||||
}:
|
||||
|
||||
let
|
||||
pkg = influxdbConstructorFun {
|
||||
|
@ -20,8 +31,10 @@ let
|
|||
in
|
||||
rec {
|
||||
name = instanceName;
|
||||
inherit pkg type;
|
||||
inherit pkg;
|
||||
influxdbUsername = instanceName;
|
||||
influxdbHttpPort = httpPort;
|
||||
providesContainer = containerName;
|
||||
} // lib.optionalAttrs (type != null) {
|
||||
inherit type;
|
||||
} // properties
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
, port ? 27017
|
||||
, mongoDumpArgs ? null
|
||||
, mongoRestoreArgs ? null
|
||||
, type
|
||||
, type ? null
|
||||
, properties ? {}
|
||||
}:
|
||||
|
||||
|
@ -30,9 +30,11 @@ let
|
|||
in
|
||||
{
|
||||
name = instanceName;
|
||||
inherit pkg type bindIP port;
|
||||
inherit pkg bindIP port;
|
||||
mongoPort = port;
|
||||
providesContainer = containerName;
|
||||
} // lib.optionalAttrs (type != null) {
|
||||
inherit type;
|
||||
} // (if mongoDumpArgs == null then {} else {
|
||||
inherit mongoDumpArgs;
|
||||
}) // (if mongoRestoreArgs == null then {} else {
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
{mysqlConstructorFun, dysnomia, runtimeDir}:
|
||||
{mysqlConstructorFun, lib, dysnomia, runtimeDir}:
|
||||
|
||||
{ instanceSuffix ? "", instanceName ? "mysql${instanceSuffix}"
|
||||
, port ? 3306
|
||||
, containerName ? "mysql-database${instanceSuffix}"
|
||||
, type
|
||||
, type ? null
|
||||
, properties ? {}
|
||||
}:
|
||||
|
||||
|
@ -44,7 +44,9 @@ rec {
|
|||
name = instanceName;
|
||||
mysqlPort = port;
|
||||
|
||||
inherit pkg type mysqlSocket mysqlUsername;
|
||||
inherit pkg mysqlSocket mysqlUsername;
|
||||
|
||||
providesContainer = containerName;
|
||||
} // lib.optionalAttrs (type != null) {
|
||||
inherit type;
|
||||
} // properties
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
{postgresqlConstructorFun, dysnomia, runtimeDir}:
|
||||
{postgresqlConstructorFun, lib, dysnomia, runtimeDir}:
|
||||
|
||||
{ instanceSuffix ? "", instanceName ? "postgresql${instanceSuffix}"
|
||||
, containerName ? "postgresql-database${instanceSuffix}"
|
||||
, port ? 5432
|
||||
, type
|
||||
, type ? null
|
||||
, properties ? {}
|
||||
}:
|
||||
|
||||
|
@ -32,7 +32,9 @@ rec {
|
|||
postgresqlPort = port;
|
||||
postgresqlUsername = username;
|
||||
|
||||
inherit pkg type;
|
||||
inherit pkg;
|
||||
|
||||
providesContainer = containerName;
|
||||
} // lib.optionalAttrs (type != null) {
|
||||
inherit type;
|
||||
} // properties
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
{supervisordConstructorFun, stdenv, dysnomia, stateDir}:
|
||||
{supervisordConstructorFun, lib, dysnomia, stateDir}:
|
||||
|
||||
{ instanceSuffix ? "", instanceName ? "supervisord${instanceSuffix}"
|
||||
, containerName ? "supervisord-program${instanceSuffix}"
|
||||
, inetHTTPServerPort ? 9001
|
||||
, postInstall ? ""
|
||||
, type
|
||||
, type ? null
|
||||
, properties ? {}
|
||||
}:
|
||||
|
||||
|
@ -28,6 +28,8 @@ let
|
|||
in
|
||||
{
|
||||
name = instanceName;
|
||||
inherit pkg type supervisordTargetDir;
|
||||
inherit pkg supervisordTargetDir;
|
||||
providesContainer = containerName;
|
||||
} // lib.optionalAttrs (type != null) {
|
||||
inherit type;
|
||||
} // properties
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
{svnserveConstructorFun, dysnomia}:
|
||||
{svnserveConstructorFun, lib, dysnomia}:
|
||||
|
||||
{ instanceSuffix ? "", instanceName ? "svnserve${instanceSuffix}"
|
||||
, containerName ? "subversion-repository${instanceSuffix}"
|
||||
, port ? 3690
|
||||
, svnBaseDir
|
||||
, svnGroup ? "root"
|
||||
, type
|
||||
, type ? null
|
||||
, properties ? {}
|
||||
}:
|
||||
|
||||
|
@ -28,6 +28,8 @@ let
|
|||
in
|
||||
{
|
||||
name = instanceName;
|
||||
inherit pkg type svnGroup svnBaseDir;
|
||||
inherit pkg svnGroup svnBaseDir;
|
||||
providesContainer = containerName;
|
||||
} // lib.optionalAttrs (type != null) {
|
||||
inherit type;
|
||||
} // properties
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
{ dbus-daemon ? null
|
||||
, dysnomiaProperties ? {}
|
||||
, dysnomiaContainers ? {}
|
||||
, containerProviders ? []
|
||||
, extraDysnomiaContainersPath ? []
|
||||
, processManagerContainerSettings ? {}
|
||||
}:
|
||||
|
||||
|
@ -21,10 +23,11 @@ createManagedProcess {
|
|||
process = "${disnix}/bin/disnix-service";
|
||||
path = [ nix dysnomiaPkg disnix inetutils ];
|
||||
environment = import ./dysnomia-env.nix {
|
||||
inherit stdenv lib writeTextFile nix-processmgmt processManager dysnomiaProperties dysnomiaContainers processManagerContainerSettings;
|
||||
inherit stdenv lib writeTextFile nix-processmgmt processManager dysnomiaProperties dysnomiaContainers containerProviders extraDysnomiaContainersPath processManagerContainerSettings;
|
||||
};
|
||||
daemonExtraArgs = [ "--daemon" ];
|
||||
dependencies = lib.optional (dbus-daemon != null) dbus-daemon.pkg;
|
||||
dependencies = lib.optional (dbus-daemon != null) dbus-daemon.pkg
|
||||
++ map (containerProvider: containerProvider.pkg) containerProviders;
|
||||
|
||||
credentials = {
|
||||
groups = {
|
||||
|
|
|
@ -1,4 +1,15 @@
|
|||
{stdenv, lib, writeTextFile, nix-processmgmt, processManager, dysnomiaProperties, dysnomiaContainers, processManagerContainerSettings}:
|
||||
{ stdenv
|
||||
, lib
|
||||
, writeTextFile
|
||||
, nix-processmgmt
|
||||
|
||||
, processManager
|
||||
, dysnomiaProperties
|
||||
, dysnomiaContainers
|
||||
, containerProviders
|
||||
, extraDysnomiaContainersPath
|
||||
, processManagerContainerSettings
|
||||
}:
|
||||
|
||||
let
|
||||
# Take some default system properties, override them with the specified Dysnomia properties
|
||||
|
@ -22,7 +33,7 @@ let
|
|||
text = printProperties _dysnomiaProperties;
|
||||
};
|
||||
|
||||
# For process manager that manages the disnix-serivce, expose it as a container
|
||||
# For process managers that manages the disnix-service, expose it as a container
|
||||
processManagerDysnomiaModule = import "${nix-processmgmt}/nixproc/derive-dysnomia-process-type.nix" {
|
||||
inherit processManager;
|
||||
};
|
||||
|
@ -43,6 +54,10 @@ let
|
|||
wrapper = {};
|
||||
} // processManagerContainer) dysnomiaContainers;
|
||||
|
||||
containerProvidersContainerPath = map (containerProvider: "${containerProvider.pkg}/etc/dysnomia/containers") containerProviders;
|
||||
|
||||
containerProvidersModulesPath = map (containerProvider: "${containerProvider.pkg}/libexec/dysnomia") containerProviders;
|
||||
|
||||
# Generate container configuration files
|
||||
containersDir = stdenv.mkDerivation {
|
||||
name = "dysnomia-containers";
|
||||
|
@ -66,5 +81,6 @@ let
|
|||
in
|
||||
{
|
||||
DYSNOMIA_PROPERTIES = dysnomiaPropertiesFile;
|
||||
DYSNOMIA_CONTAINERS_PATH = containersDir;
|
||||
DYSNOMIA_CONTAINERS_PATH = builtins.concatStringsSep ":" ([containersDir] ++ containerProvidersContainerPath ++ extraDysnomiaContainersPath);
|
||||
DYSNOMIA_MODULES_PATH = builtins.concatStringsSep ":" containerProvidersModulesPath;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue