aboutsummaryrefslogtreecommitdiff
path: root/nixos/modules/services/misc/disnix.nix
diff options
context:
space:
mode:
authorSander van der Burg <svanderburg@gmail.com>2016-06-17 09:12:44 +0000
committerSander van der Burg <svanderburg@gmail.com>2016-06-17 09:12:44 +0000
commit8fccaa901192be95f75412f12f54063196b18186 (patch)
treeb064d309655377a48bd293fa69c2415331b1b3d6 /nixos/modules/services/misc/disnix.nix
parentdddb5179c27ef6eb993437e0352b7e825785a150 (diff)
disnix-module: split dysnomia's functionality into a separate module so that it can be used without Disnix and remove the hacky/obsolete avahi publisher
Diffstat (limited to 'nixos/modules/services/misc/disnix.nix')
-rw-r--r--nixos/modules/services/misc/disnix.nix108
1 files changed, 15 insertions, 93 deletions
diff --git a/nixos/modules/services/misc/disnix.nix b/nixos/modules/services/misc/disnix.nix
index 218802e0cf0..e5a125ad324 100644
--- a/nixos/modules/services/misc/disnix.nix
+++ b/nixos/modules/services/misc/disnix.nix
@@ -36,49 +36,32 @@ in
default = false;
description = "Whether to enable the DisnixWebService interface running on Apache Tomcat";
};
-
- publishInfrastructure = {
- enable = mkOption {
- default = false;
- description = "Whether to publish capabilities/properties of this machine in as attributes in the infrastructure option";
- };
-
- enableAuthentication = mkOption {
- default = false;
- description = "Whether to publish authentication credentials through the infrastructure attribute (not recommended in combination with Avahi)";
- };
- };
-
- infrastructure = mkOption {
- default = {};
- description = "List of name value pairs containing properties for the infrastructure model";
- };
-
- publishAvahi = mkOption {
- default = false;
- description = "Whether to publish capabilities/properties as a Disnix service through Avahi";
+
+ package = mkOption {
+ type = types.path;
+ description = "The Disnix package";
+ default = pkgs.disnix;
};
};
};
-
###### implementation
config = mkIf cfg.enable {
- environment.systemPackages = [ pkgs.disnix pkgs.dysnomia ] ++ optional cfg.useWebServiceInterface pkgs.DisnixWebService;
+ dysnomia.enable = true;
+
+ environment.systemPackages = [ pkgs.disnix ] ++ optional cfg.useWebServiceInterface pkgs.DisnixWebService;
services.dbus.enable = true;
services.dbus.packages = [ pkgs.disnix ];
- services.avahi.enable = cfg.publishAvahi;
-
services.tomcat.enable = cfg.useWebServiceInterface;
services.tomcat.extraGroups = [ "disnix" ];
services.tomcat.javaOpts = "${optionalString cfg.useWebServiceInterface "-Djava.library.path=${pkgs.libmatthew_java}/lib/jni"} ";
services.tomcat.sharedLibs = optional cfg.useWebServiceInterface "${pkgs.DisnixWebService}/share/java/DisnixConnection.jar"
- ++ optional cfg.useWebServiceInterface "${pkgs.dbus_java}/share/java/dbus.jar";
+ ++ optional cfg.useWebServiceInterface "${pkgs.dbus_java}/share/java/dbus.jar";
services.tomcat.webapps = optional cfg.useWebServiceInterface pkgs.DisnixWebService;
users.extraGroups = singleton
@@ -86,38 +69,6 @@ in
gid = config.ids.gids.disnix;
};
- services.disnix.infrastructure =
- optionalAttrs (cfg.publishInfrastructure.enable)
- ( { hostname = config.networking.hostName;
- #targetHost = config.deployment.targetHost;
- system = if config.nixpkgs.system == "" then builtins.currentSystem else config.nixpkgs.system;
-
- supportedTypes = (import "${pkgs.stdenv.mkDerivation {
- name = "supportedtypes";
- buildCommand = ''
- ( echo -n "[ "
- cd ${dysnomia}/libexec/dysnomia
- for i in *
- do
- echo -n "\"$i\" "
- done
- echo -n " ]") > $out
- '';
- }}");
- }
- #// optionalAttrs (cfg.useWebServiceInterface) { targetEPR = "http://${config.deployment.targetHost}:8080/DisnixWebService/services/DisnixWebService"; }
- // optionalAttrs (config.services.httpd.enable) { documentRoot = config.services.httpd.documentRoot; }
- // optionalAttrs (config.services.mysql.enable) { mysqlPort = config.services.mysql.port; }
- // optionalAttrs (config.services.tomcat.enable) { tomcatPort = 8080; }
- // optionalAttrs (config.services.svnserve.enable) { svnBaseDir = config.services.svnserve.svnBaseDir; }
- // optionalAttrs (config.services.ejabberd.enable) { ejabberdUser = config.services.ejabberd.user; }
- // optionalAttrs (cfg.publishInfrastructure.enableAuthentication) (
- optionalAttrs (config.services.mysql.enable) { mysqlUsername = "root"; mysqlPassword = readFile config.services.mysql.rootPassword; })
- )
- ;
-
- services.disnix.publishInfrastructure.enable = cfg.publishAvahi;
-
systemd.services = {
disnix = {
description = "Disnix server";
@@ -133,46 +84,17 @@ in
restartIfChanged = false;
- path = [ pkgs.nix pkgs.disnix dysnomia "/run/current-system/sw" ];
+ path = [ config.nix.package cfg.package config.dysnomia.package "/run/current-system/sw" ];
environment = {
HOME = "/root";
- };
-
- preStart = ''
- mkdir -p /etc/systemd-mutable/system
- if [ ! -f /etc/systemd-mutable/system/dysnomia.target ]
- then
- ( echo "[Unit]"
- echo "Description=Services that are activated and deactivated by Dysnomia"
- echo "After=final.target"
- ) > /etc/systemd-mutable/system/dysnomia.target
- fi
- '';
-
- script = "disnix-service";
+ }
+ // (if config.environment.variables ? DYSNOMIA_CONTAINERS_PATH then { inherit (config.environment.variables) DYSNOMIA_CONTAINERS_PATH; } else {})
+ // (if config.environment.variables ? DYSNOMIA_MODULES_PATH then { inherit (config.environment.variables) DYSNOMIA_MODULES_PATH; } else {});
+
+ serviceConfig.ExecStart = "${cfg.package}/bin/disnix-service";
};
- } // optionalAttrs cfg.publishAvahi {
- disnixAvahi = {
- description = "Disnix Avahi publisher";
- wants = [ "avahi-daemon.service" ];
- wantedBy = [ "multi-user.target" ];
- script = ''
- ${pkgs.avahi}/bin/avahi-publish-service disnix-${config.networking.hostName} _disnix._tcp 22 \
- "mem=$(grep 'MemTotal:' /proc/meminfo | sed -e 's/kB//' -e 's/MemTotal://' -e 's/ //g')" \
- ${concatMapStrings (infrastructureAttrName:
- let infrastructureAttrValue = getAttr infrastructureAttrName (cfg.infrastructure);
- in
- if isInt infrastructureAttrValue then
- ''${infrastructureAttrName}=${toString infrastructureAttrValue} \
- ''
- else
- ''${infrastructureAttrName}=\"${infrastructureAttrValue}\" \
- ''
- ) (attrNames (cfg.infrastructure))}
- '';
- };
};
};
}