diff --git a/pkgs/development/python-modules/manifold3d/default.nix b/pkgs/development/python-modules/manifold3d/default.nix new file mode 100644 index 000000000000..62852fe60a0c --- /dev/null +++ b/pkgs/development/python-modules/manifold3d/default.nix @@ -0,0 +1,86 @@ +{ + lib, + buildPythonPackage, + python, + fetchFromGitHub, + scikit-build-core, + cmake, + ninja, + nanobind, + pkg-config, + numpy, + clipper2, + tbb, + glm, + pytestCheckHook, + trimesh, +}: + +let + # archived library, but manifold3d has removed this on master + thrust-src = fetchFromGitHub { + owner = "NVIDIA"; + repo = "thrust"; + rev = "refs/tags/2.1.0"; + hash = "sha256-U9WgRZva7R/bNOF5VZTvIwIQDQDD3/bRO08j2TPLl9Q="; + fetchSubmodules = true; + }; + +in + +buildPythonPackage rec { + pname = "manifold3d"; + version = "2.5.1"; + pyproject = true; + + src = fetchFromGitHub { + owner = "elalish"; + repo = "manifold"; + rev = "refs/tags/v${version}"; + hash = "sha256-0zjS4ygt85isP1jyiTCeD/umhQ8ffIN+u2CeLeybX9U="; + fetchSubmodules = true; + }; + + dontUseCmakeConfigure = true; + + build-system = [ + scikit-build-core + cmake + ninja + nanobind + pkg-config + ]; + + dependencies = [ + numpy + ]; + + buildInputs = [ + glm + tbb + clipper2 + ]; + + env.SKBUILD_CMAKE_DEFINE = "FETCHCONTENT_SOURCE_DIR_THRUST=${thrust-src}"; + + nativeCheckInputs = [ + pytestCheckHook + trimesh + ]; + + preCheck = '' + ${python.interpreter} bindings/python/examples/run_all.py + ''; + + pythonImportsCheck = [ + "manifold3d" + ]; + + meta = { + description = "Geometry library for topological robustness"; + homepage = "https://github.com/elalish/manifold"; + changelog = "https://github.com/elalish/manifold/releases/tag/v${version}"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ pbsds ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 796b68fc8a0f..a99978b2eec4 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -7609,6 +7609,8 @@ self: super: with self; { manifest-ml = callPackage ../development/python-modules/manifest-ml { }; + manifold3d = callPackage ../development/python-modules/manifold3d { }; + manifestoo = callPackage ../development/python-modules/manifestoo { }; manifestoo-core = callPackage ../development/python-modules/manifestoo-core { };