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