f9f354faad
Primarily to fix rendering of these default values in the manual but it's also nice to avoid having to eval these things just to build the manual.
102 lines
3.3 KiB
Nix
102 lines
3.3 KiB
Nix
# Disnix server
|
|
{ config, lib, pkgs, ... }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
|
|
cfg = config.services.disnix;
|
|
|
|
dysnomia = pkgs.dysnomia.override (origArgs: {
|
|
enableApacheWebApplication = config.services.httpd.enable;
|
|
enableAxis2WebService = config.services.tomcat.axis2.enable;
|
|
enableEjabberdDump = config.services.ejabberd.enable;
|
|
enableMySQLDatabase = config.services.mysql.enable;
|
|
enablePostgreSQLDatabase = config.services.postgresql.enable;
|
|
enableSubversionRepository = config.services.svnserve.enable;
|
|
enableTomcatWebApplication = config.services.tomcat.enable;
|
|
enableMongoDatabase = config.services.mongodb.enable;
|
|
});
|
|
in
|
|
|
|
{
|
|
|
|
###### interface
|
|
|
|
options = {
|
|
|
|
services.disnix = {
|
|
|
|
enable = mkOption {
|
|
default = false;
|
|
description = "Whether to enable Disnix";
|
|
};
|
|
|
|
useWebServiceInterface = mkOption {
|
|
default = false;
|
|
description = "Whether to enable the DisnixWebService interface running on Apache Tomcat";
|
|
};
|
|
|
|
package = mkOption {
|
|
type = types.path;
|
|
description = "The Disnix package";
|
|
default = pkgs.disnix;
|
|
defaultText = "pkgs.disnix";
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
###### implementation
|
|
|
|
config = mkIf cfg.enable {
|
|
dysnomia.enable = true;
|
|
|
|
environment.systemPackages = [ pkgs.disnix ] ++ optional cfg.useWebServiceInterface pkgs.DisnixWebService;
|
|
|
|
services.dbus.enable = true;
|
|
services.dbus.packages = [ pkgs.disnix ];
|
|
|
|
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";
|
|
services.tomcat.webapps = optional cfg.useWebServiceInterface pkgs.DisnixWebService;
|
|
|
|
users.extraGroups = singleton
|
|
{ name = "disnix";
|
|
gid = config.ids.gids.disnix;
|
|
};
|
|
|
|
systemd.services = {
|
|
disnix = {
|
|
description = "Disnix server";
|
|
wants = [ "dysnomia.target" ];
|
|
wantedBy = [ "multi-user.target" ];
|
|
after = [ "dbus.service" ]
|
|
++ optional config.services.httpd.enable "httpd.service"
|
|
++ optional config.services.mysql.enable "mysql.service"
|
|
++ optional config.services.postgresql.enable "postgresql.service"
|
|
++ optional config.services.tomcat.enable "tomcat.service"
|
|
++ optional config.services.svnserve.enable "svnserve.service"
|
|
++ optional config.services.mongodb.enable "mongodb.service";
|
|
|
|
restartIfChanged = false;
|
|
|
|
path = [ config.nix.package cfg.package config.dysnomia.package "/run/current-system/sw" ];
|
|
|
|
environment = {
|
|
HOME = "/root";
|
|
}
|
|
// (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";
|
|
};
|
|
|
|
};
|
|
};
|
|
}
|