Something went wrong. Try again.
Nix Packages collection & NixOS github.com/NixOS/nixpkgs
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165{ lib, stdenv, config, buildPythonPackage, fetchFromGitHub, writableTmpDirAsHomeHook, nix-update-script,
cudaPackages,
# build-system hatchling,
# dependencies emsutil, gmsh, joblib, loguru, matplotlib, mkl, msgpack, msgpack-numpy, numba, numpy, psutil, pyvista, scipy,
# optional-dependencies cupy, nvmath-python, ezdxf, pygerber, #scikit-umfpack,
# tests callPackage,
cudaSupport ? config.cudaSupport, withMkl ? stdenv.hostPlatform.isx86_64 && config.allowUnfree,}:
let # NOTE: # `nvmath.bindings.cudss.AlgType` has been removed in newer versions of # `nvmath-python`, but `emerge` still uses it. See: # - https://docs.nvidia.com/cuda/nvmath-python/latest/bindings/generated/nvmath.bindings.cudss.AlgType.html # - https://docs.nvidia.com/cuda/nvmath-python/1.0.0/release-notes.html nvmath-python' = nvmath-python.overrideAttrs rec { version = "0.9.0"; src = fetchFromGitHub { owner = "NVIDIA"; repo = "nvmath-python"; tag = "v${version}"; hash = "sha256-sIVvehCmkPvpPbHxhUPbKZ1cHnHTSlrgBHKSsHbUJPg="; }; pythonRelaxDeps = [ "cuda-core" ]; };in
buildPythonPackage (finalAttrs: { pname = "emerge"; version = "2.8.9"; pyproject = true; __structuredAttrs = true;
src = fetchFromGitHub { owner = "FennisRobert"; repo = "EMerge"; tag = "v${finalAttrs.version}"; hash = "sha256-2w6PZUT0gE50nZ9MfpFkGjx1UQJEqYso9Mm2rfJK08w="; };
postPatch = '' # TODO: get from pypi? # https://pypi.org/project/mkl sed -i '/mkl!=2024.0;/d' pyproject.toml '';
build-system = [ hatchling ];
dependencies = [ emsutil gmsh joblib loguru matplotlib msgpack msgpack-numpy numba numpy psutil pyvista scipy ] ++ lib.optionals cudaSupport finalAttrs.passthru.optional-dependencies.cudss;
nativeBuildInputs = [ writableTmpDirAsHomeHook ];
buildInputs = lib.optionals withMkl [ mkl ] ++ lib.optionals cudaSupport [ cudaPackages.libcudss ];
optional-dependencies = { cudss = [ cupy cudaPackages.libcudss nvmath-python' ]; dxf = [ ezdxf ]; gerber = [ pygerber ]; umfpack = [ #scikit-umfpack # TODO: package ]; };
pythonRelaxDeps = [ "gmsh" "numpy" ];
pythonImportsCheck = [ "emerge" ];
# upstream has no tests doCheck = false;
passthru = { inherit cudaSupport ;
tests = callPackage ./tests { };
updateScript = nix-update-script { extraArgs = [ "--version-regex=^v(2\\.[0-9].*)$" ]; }; };
meta = { description = "Electromagnetic field computation program"; homepage = "https://github.com/FennisRobert/EMerge"; mainProgram = "emerge"; license = lib.licenses.gpl2Plus; maintainers = with lib.maintainers; [ eljamm ]; teams = with lib.teams; [ ngi ]; };})