1{ lib
2, apptools
3, buildPythonPackage
4, envisage
5, fetchPypi
6, numpy
7, packaging
8, pyface
9, pygments
10, pyqt5
11, pythonOlder
12, traitsui
13, vtk
14, wrapQtAppsHook
15}:
16
17buildPythonPackage rec {
18 pname = "mayavi";
19 version = "4.8.1";
20 format = "setuptools";
21
22 disabled = pythonOlder "3.8";
23
24 src = fetchPypi {
25 inherit pname version;
26 hash = "sha256-n0J+8spska542S02ibpr7KJMhGDicG2KHJuEKJrT/Z4=";
27 };
28
29 postPatch = ''
30 # building the docs fails with the usual Qt xcb error, so skip:
31 substituteInPlace setup.py \
32 --replace "build.build.run(self)" "build.build.run(self); return"
33 '';
34
35 nativeBuildInputs = [
36 wrapQtAppsHook
37 ];
38
39 propagatedBuildInputs = [
40 apptools
41 envisage
42 numpy
43 packaging
44 pyface
45 pygments
46 pyqt5
47 traitsui
48 vtk
49 ];
50
51 env.NIX_CFLAGS_COMPILE = "-Wno-error";
52
53 # Needs X server
54 doCheck = false;
55
56 pythonImportsCheck = [
57 "mayavi"
58 ];
59
60 preFixup = ''
61 makeWrapperArgs+=("''${qtWrapperArgs[@]}")
62 '';
63
64 meta = with lib; {
65 description = "3D visualization of scientific data in Python";
66 homepage = "https://github.com/enthought/mayavi";
67 license = licenses.bsdOriginal;
68 maintainers = with maintainers; [ knedlsepp ];
69 };
70}