slurm-spank-x11: init at 0.2.5

Changed files
+66 -6
nixos
modules
services
computing
slurm
pkgs
servers
computing
slurm-spank-x11
top-level
+25 -6
nixos/modules/services/computing/slurm/slurm.nix
···
cfg = config.services.slurm;
# configuration file can be generated by http://slurm.schedmd.com/configurator.html
-
configFile = pkgs.writeText "slurm.conf"
+
configFile = pkgs.writeText "slurm.conf"
''
${optionalString (cfg.controlMachine != null) ''controlMachine=${cfg.controlMachine}''}
${optionalString (cfg.controlAddr != null) ''controlAddr=${cfg.controlAddr}''}
${optionalString (cfg.nodeName != null) ''nodeName=${cfg.nodeName}''}
${optionalString (cfg.partitionName != null) ''partitionName=${cfg.partitionName}''}
+
PlugStackConfig=${plugStackConfig}
${cfg.extraConfig}
+
'';
+
+
plugStackConfig = pkgs.writeText "plugstack.conf"
+
''
+
${optionalString cfg.enableSrunX11 ''optional ${pkgs.slurm-spank-x11}/lib/x11.so''}
'';
in
···
enable = mkEnableOption "slurm control daemon";
};
-
+
client = {
enable = mkEnableOption "slurm rlient daemon";
···
'';
};
+
enableSrunX11 = mkOption {
+
default = false;
+
type = types.bool;
+
description = ''
+
If enabled srun will accept the option "--x11" to allow for X11 forwarding
+
from within an interactive session or a batch job. This activates the
+
slurm-spank-x11 module. Note that this requires 'services.openssh.forwardX11'
+
to be enabled on the compute nodes.
+
'';
+
};
+
extraConfig = mkOption {
-
default = "";
+
default = "";
type = types.lines;
description = ''
Extra configuration options that will be added verbatim at
···
environment.systemPackages = [ wrappedSlurm ];
systemd.services.slurmd = mkIf (cfg.client.enable) {
-
path = with pkgs; [ wrappedSlurm coreutils ];
+
path = with pkgs; [ wrappedSlurm coreutils ]
+
++ lib.optional cfg.enableSrunX11 slurm-spank-x11;
wantedBy = [ "multi-user.target" ];
after = [ "systemd-tmpfiles-clean.service" ];
···
};
systemd.services.slurmctld = mkIf (cfg.server.enable) {
-
path = with pkgs; [ wrappedSlurm munge coreutils ];
-
+
path = with pkgs; [ wrappedSlurm munge coreutils ]
+
++ lib.optional cfg.enableSrunX11 slurm-spank-x11;
+
wantedBy = [ "multi-user.target" ];
after = [ "network.target" "munged.service" ];
requires = [ "munged.service" ];
+39
pkgs/servers/computing/slurm-spank-x11/default.nix
···
+
{ stdenv, fetchFromGitHub, slurm } :
+
let
+
version = "0.2.5";
+
in
+
stdenv.mkDerivation {
+
name = "slurm-spank-x11-${version}";
+
version = version;
+
+
src = fetchFromGitHub {
+
owner = "hautreux";
+
repo = "slurm-spank-x11";
+
rev = version;
+
sha256 = "1dmsr7whxcxwnlvl1x4s3bqr5cr6q5ssb28vqi67w5hj4sshisry";
+
};
+
+
buildPhase = ''
+
gcc -DX11_LIBEXEC_PROG="\"$out/bin/slurm-spank-x11\"" \
+
-g -o slurm-spank-x11 slurm-spank-x11.c
+
gcc -I${slurm.dev}/include -DX11_LIBEXEC_PROG="\"$out/bin/slurm-spank-x11\"" -shared -fPIC \
+
-g -o x11.so slurm-spank-x11-plug.c
+
'';
+
+
installPhase = ''
+
mkdir -p $out/bin $out/lib
+
install -m 755 slurm-spank-x11 $out/bin
+
install -m 755 x11.so $out/lib
+
'';
+
+
meta = with stdenv.lib; {
+
homepage = https://github.com/hautreux/slurm-spank-x11;
+
description = "Plugin for SLURM to allow for interactive X11 sessions";
+
platforms = platforms.linux;
+
license = licenses.gpl3;
+
maintainers = with maintainers; [ markuskowa ];
+
};
+
}
+
+
+
+2
pkgs/top-level/all-packages.nix
···
slurm-full = appendToName "full" (callPackage ../servers/computing/slurm { });
slurm-llnl-full = slurm-full; # renamed July 2017
+
slurm-spank-x11 = callPackage ../servers/computing/slurm-spank-x11 { };
+
systemd-journal2gelf = callPackage ../tools/system/systemd-journal2gelf { };
inherit (callPackages ../servers/http/tomcat { })