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