diff --git a/flake.lock b/flake.lock index abfc62b0..f78cdd06 100644 --- a/flake.lock +++ b/flake.lock @@ -1125,6 +1125,22 @@ "url": "https://github.com/CHN-beta/misskey" } }, + "mumax": { + "flake": false, + "locked": { + "lastModified": 1709298542, + "narHash": "sha256-w3VuxnEqkwwplNXwzdhC2mVMuVG7bBdzzzRcWZ4nRM8=", + "owner": "CHN-beta", + "repo": "mumax", + "rev": "3658ac4ec975a58ba3ad5e7ede61bd26bdadfe23", + "type": "github" + }, + "original": { + "owner": "CHN-beta", + "repo": "mumax", + "type": "github" + } + }, "nameof": { "flake": false, "locked": { @@ -1950,6 +1966,7 @@ "lmod": "lmod", "matplotplusplus": "matplotplusplus", "misskey": "misskey", + "mumax": "mumax", "nameof": "nameof", "napalm": "napalm", "nix-alien": "nix-alien", diff --git a/flake.nix b/flake.nix index 568752d1..d56444a0 100644 --- a/flake.nix +++ b/flake.nix @@ -67,6 +67,7 @@ linux-surface = { url = "github:linux-surface/linux-surface"; flake = false; }; lepton = { url = "github:black7375/Firefox-UI-Fix"; flake = false; }; lmod = { url = "github:TACC/Lmod"; flake = false; }; + mumax = { url = "github:CHN-beta/mumax"; flake = false; }; }; outputs = inputs: diff --git a/local/pkgs/default.nix b/local/pkgs/default.nix index 3a08b00f..6eaf1e70 100644 --- a/local/pkgs/default.nix +++ b/local/pkgs/default.nix @@ -65,4 +65,5 @@ }; hdf5-nvhpc = callPackage ./hdf5-nvhpc { inherit lmod; inherit (hdf5) src; nvhpc = nvhpc."24.1"; }; oneapi = callPackage ./oneapi {}; + mumax = callPackage ./mumax { src = topInputs.mumax; }; } diff --git a/local/pkgs/mumax/default.nix b/local/pkgs/mumax/default.nix new file mode 100644 index 00000000..ca381381 --- /dev/null +++ b/local/pkgs/mumax/default.nix @@ -0,0 +1,22 @@ +{ buildGoModule, cudatoolkit, src, config, cudaCapabilities ? config.cudaCapabilities, gcc, makeWrapper }: +# TODO: use addDriverRunpath +buildGoModule +{ + name = "mumax"; + inherit src; + vendorHash = null; + nativeBuildInputs = [ cudatoolkit gcc makeWrapper ]; + CUDA_CC = builtins.concatStringsSep " " cudaCapabilities; + CPATH = "${cudatoolkit}/include"; + LIBRARY_PATH = "${cudatoolkit}/lib/stubs"; + doCheck = false; + postInstall = + '' + rm $out/bin/{doc,test} + for i in $out/bin/*; do + if [ -f $i ]; then + wrapProgram $i --prefix LD_LIBRARY_PATH ":" "/run/opengl-driver/lib:${cudatoolkit}/lib" + fi + done + ''; +}