From 1bc85bc6afd326d99188529969399e715f50fae5 Mon Sep 17 00:00:00 2001 From: chn Date: Sat, 24 Feb 2024 15:21:47 +0800 Subject: [PATCH] services.slurm: init --- devices/pc/default.nix | 1 + modules/services/default.nix | 1 + modules/services/slurm.nix | 58 ++++++++++++++++++++++++++++++++++++ secrets/pc/munge.key | 24 +++++++++++++++ 4 files changed, 84 insertions(+) create mode 100644 modules/services/slurm.nix create mode 100644 secrets/pc/munge.key diff --git a/devices/pc/default.nix b/devices/pc/default.nix index ed352117..5f7cc60d 100644 --- a/devices/pc/default.nix +++ b/devices/pc/default.nix @@ -134,6 +134,7 @@ inputs: wireguardIp = "192.168.83.3"; }; gamemode = { enable = true; drmDevice = 0; }; + slurm = { enable = true; cpu = { cores = 16; threads = 2; }; memoryMB = 94208; }; }; bugs = [ "xmunet" "backlight" "amdpstate" ]; }; diff --git a/modules/services/default.nix b/modules/services/default.nix index 39fc7fa5..8dcf442a 100644 --- a/modules/services/default.nix +++ b/modules/services/default.nix @@ -42,6 +42,7 @@ inputs: ./akkoma.nix ./gamemode.nix ./vikunja.nix + ./slurm.nix ]; options.nixos.services = let inherit (inputs.lib) mkOption types; in { diff --git a/modules/services/slurm.nix b/modules/services/slurm.nix new file mode 100644 index 00000000..a9c991f5 --- /dev/null +++ b/modules/services/slurm.nix @@ -0,0 +1,58 @@ +inputs: +{ + options.nixos.services.slurm = let inherit (inputs.lib) mkOption types; in + { + enable = mkOption { type = types.bool; default = false; }; + cpu = + { + cores = mkOption { type = types.ints.unsigned; }; + threads = mkOption { type = types.ints.unsigned; default = 1; }; + }; + memoryMB = mkOption { type = types.ints.unsigned; }; + }; + config = let inherit (inputs.config.nixos.services) slurm; in inputs.lib.mkIf slurm.enable + { + services = + { + slurm = + { + server.enable = true; + clusterName = inputs.config.nixos.system.networking.hostname; + # dbdserver = + # { + # enable = true; + # dbdHost = "localhost"; + # # storagePassFile + # # extraConfig + # }; + client.enable = true; + # package + controlMachine = "localhost"; + nodeName = inputs.lib.singleton (builtins.concatStringsSep " " + [ + "localhost" + "RealMemory=${builtins.toString slurm.memoryMB}" + "Sockets=1" + "CoresPerSocket=${builtins.toString slurm.cpu.cores}" + "ThreadsPerCore=${builtins.toString slurm.cpu.threads}" + "State=UNKNOWN" + ]); + partitionName = [ "localhost Nodes=localhost Default=YES MaxTime=INFINITE State=UP" ]; + procTrackType = "proctrack/cgroup"; + }; + munge = { enable = true; password = inputs.config.sops.secrets."munge.key".path; }; + }; + sops = + { + secrets = + { + "munge.key" = + { + format = "binary"; + sopsFile = "${builtins.dirOf inputs.config.sops.defaultSopsFile}/munge.key"; + owner = inputs.config.systemd.services.munged.serviceConfig.User; + }; + }; + }; + }; +} diff --git a/secrets/pc/munge.key b/secrets/pc/munge.key new file mode 100644 index 00000000..fb2fd4a2 --- /dev/null +++ b/secrets/pc/munge.key @@ -0,0 +1,24 @@ +{ + "data": "ENC[AES256_GCM,data:ftogJ/2oPME8sVbyNAuI3t3GEzUmdCadyjf2g/bjGNx3AoV0jU0SDxnBLDFfoR1rEtV00zfgCMPDGsEXavg+QVvoICpvvhckXMOLXe37H3Ff0wDVJtL4BBIK3oVh/SiYaRm/+uR0x6HW37KX50RRvKvpQoRdMVNnvtKbMjmQVIA=,iv:MOHfTIavoU643K10jSR3HruzoofOqqVspYgiaLc294o=,tag:zjDTPKwAOh/nqkquvAQpbw==,type:str]", + "sops": { + "kms": null, + "gcp_kms": null, + "azure_kv": null, + "hc_vault": null, + "age": [ + { + "recipient": "age19ax6vm3pv8rph5tq3mmehd9sy9jk823tw8svsd790r0lkslycquqvlwz9m", + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5TTB1bHFXcDhoMk1QVzJ0\nUUplcGVBVUhoOEt0Rnc2ZStDUUpjZmV0eGpvCjFQSGl4TjlMT2R5RExNZWxwOUtz\nSWhhSUtFN0JISzJhclpCMFZDQ09jK28KLS0tIGJydDNoY3hBbEhBYUNYZGZCaWpQ\nQnVDalJCcWpIRTdVaWkzeGVNSGpDRWsKWXoMC8NApfenn191aRwdAjD0iM5+C3R6\nXKpHxfhc1Gf6paxBhketFU+AwWsKiBDKh0gntV49F+YSriPa7uI3FA==\n-----END AGE ENCRYPTED FILE-----\n" + }, + { + "recipient": "age1ffvr5pqd2lfj24e3fh53s92z6h76fda3du4y4k6r3yjumdwvpfgqzj033a", + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAzclYwVjdOZnQ1Y2dlUi9n\naXQya21QVHZ0KzMxTkVuTEJuazB4WklqdFdvCmpMd0h6OXUvZSttOFpmeUdsSlNs\nQkhQaVJqVFdidFNMejljV2h3WUFTaFUKLS0tIGNBemY5R1N3T00zMEthZjBsWXZh\nVXRtNG5UV3I3WG5LYUphNUNyUDI5WXcKVQpMe3zYgzHOtQQvo8Vvz94lYR6TBFuV\nD7ztr4rD/Vdk3hkSGZQvdzGjNDdGpac38LUN9vtFQbzMofykcn/etw==\n-----END AGE ENCRYPTED FILE-----\n" + } + ], + "lastmodified": "2024-02-24T05:48:31Z", + "mac": "ENC[AES256_GCM,data:kCLcS6xeMijD8Bxa0MBUbFH2pdXX6BdGL1SztHHPet8loMkiCfgEiyp9l/QjszWa3G6zx3K+0wXXtRXmrNAxThnIgMZQVGCy4Ucw7fp8Pral/5eaJNlZGb56JQPF9ZDHb9YQPDPImaEAKYUtzayyaZAGJGlCmIIhVVhXTx7iiig=,iv:MXRDA/6YnVUbLdYAIrMvrdb2iPsi4Bmr06SPCU8CCVc=,tag:9hT7Xo0tRnHTgAaivKj4QQ==,type:str]", + "pgp": null, + "unencrypted_suffix": "_unencrypted", + "version": "3.8.1" + } +} \ No newline at end of file