1{
2 lib,
3 stdenv,
4 buildPythonPackage,
5 fetchFromGitHub,
6 pythonRelaxDepsHook,
7 setuptools,
8 glfw,
9 moderngl,
10 numpy,
11 pillow,
12 pygame,
13 pyglet,
14 pyqt5,
15 pyrr,
16 pysdl2,
17 pyside2,
18 pythonOlder,
19 scipy,
20 trimesh,
21}:
22
23buildPythonPackage rec {
24 pname = "moderngl-window";
25 version = "2.4.6";
26 pyproject = true;
27
28 disabled = pythonOlder "3.8";
29
30 src = fetchFromGitHub {
31 owner = "moderngl";
32 repo = "moderngl_window";
33 rev = "refs/tags/${version}";
34 hash = "sha256-zTygSXU/vQZaFCuHbRBpO9/BYYA2UOid+wvhyc2bWMI=";
35 };
36
37 pythonRelaxDeps = [ "pillow" ];
38
39 nativeBuildInputs = [
40 pythonRelaxDepsHook
41 setuptools
42 ];
43
44 propagatedBuildInputs = [
45 numpy
46 moderngl
47 pyglet
48 pillow
49 pyrr
50 ];
51
52 passthru.optional-dependencies = {
53 trimesh = [
54 trimesh
55 scipy
56 ];
57 glfw = [ glfw ];
58 pygame = [ pygame ];
59 PySDL2 = [ pysdl2 ];
60 PySide2 = [ pyside2 ];
61 pyqt5 = [ pyqt5 ];
62 };
63
64 # Tests need a display to run.
65 doCheck = false;
66
67 pythonImportsCheck = [ "moderngl_window" ];
68
69 meta = with lib; {
70 description = "Cross platform helper library for ModernGL making window creation and resource loading simple";
71 homepage = "https://github.com/moderngl/moderngl-window";
72 changelog = "https://github.com/moderngl/moderngl-window/blob/${version}/CHANGELOG.md";
73 license = licenses.mit;
74 maintainers = with maintainers; [ c0deaddict ];
75 platforms = platforms.mesaPlatforms;
76 broken = stdenv.isDarwin;
77 };
78}