python312Packages.types-aiobotocore: 2.15.2 -> 2.15.2.post3 (#361801)
[NixPkgs.git] / nixos / modules / services / computing / torque / mom.nix
blob8bc5fc134fcbae1ce8b66b7124e719ceceb48c10
1 { config, pkgs, lib, ... }:
2 let
4   cfg = config.services.torque.mom;
5   torque = pkgs.torque;
7   momConfig = pkgs.writeText "torque-mom-config" ''
8     $pbsserver ${cfg.serverNode}
9     $logevent 225
10   '';
14   options = {
16     services.torque.mom = {
17       enable = lib.mkEnableOption "torque computing node";
19       serverNode = lib.mkOption {
20         type = lib.types.str;
21         description = "Hostname running pbs server.";
22       };
24     };
26   };
28   config = lib.mkIf cfg.enable {
29     environment.systemPackages = [ pkgs.torque ];
31     systemd.services.torque-mom-init = {
32       path = with pkgs; [ torque util-linux procps inetutils ];
34       script = ''
35         pbs_mkdirs -v aux
36         pbs_mkdirs -v mom
37         hostname > /var/spool/torque/server_name
38         cp -v ${momConfig} /var/spool/torque/mom_priv/config
39       '';
41       serviceConfig.Type = "oneshot";
42       unitConfig.ConditionPathExists = "!/var/spool/torque";
43     };
45     systemd.services.torque-mom = {
46       path = [ torque ];
48       wantedBy = [ "multi-user.target" ];
49       requires = [ "torque-mom-init.service" ];
50       after = [ "torque-mom-init.service" "network.target" ];
52       serviceConfig = {
53         Type = "forking";
54         ExecStart = "${torque}/bin/pbs_mom";
55         PIDFile = "/var/spool/torque/mom_priv/mom.lock";
56       };
57     };
59   };