1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 pythonOlder,
6
7 # Build system
8 hatchling,
9 hatch-fancy-pypi-readme,
10
11 # Dependencies
12 ffmpeg,
13 beautifulsoup4,
14 click,
15 click-default-group,
16 jinja2,
17 lxml,
18 numpy,
19 pillow,
20 pydantic,
21 pydantic-extra-types,
22 python-pptx,
23 qtpy,
24 requests,
25 rich,
26 rtoml,
27 tqdm,
28
29 # Optional dependencies
30 ipython,
31 manim,
32 manimgl,
33 setuptools,
34 pyqt6,
35 pyside6,
36 docutils,
37}:
38buildPythonPackage rec {
39 pname = "manim-slides";
40 version = "5.5.2";
41 pyproject = true;
42
43 disabled = pythonOlder "3.9";
44
45 src = fetchFromGitHub {
46 owner = "jeertmans";
47 repo = "manim-slides";
48 tag = "v${version}";
49 hash = "sha256-eCtV3xo6PxB6Nha4XuQmmlkAscmeN0O9tgUZ5L4ZroU=";
50 };
51
52 build-system = [
53 hatchling
54 hatch-fancy-pypi-readme
55 ];
56
57 pythonRelaxDeps = [
58 "rtoml" # We only package version 0.10, but manim-slides depends on 0.11.
59 ];
60 pythonRemoveDeps = [
61 "av" # It can use ffmpeg, which we already provide.
62 ];
63
64 dependencies = [
65 ffmpeg
66 beautifulsoup4
67 click
68 click-default-group
69 jinja2
70 lxml
71 numpy
72 pillow
73 pydantic
74 pydantic-extra-types
75 python-pptx
76 qtpy
77 requests
78 rich
79 rtoml
80 tqdm
81 ];
82
83 optional-dependencies = lib.fix (self: {
84 full = self.magic ++ self.manim ++ self.sphinx-directive;
85 magic = self.manim ++ [
86 ipython
87 ];
88 manim = [
89 manim
90 ];
91 manimgl = [
92 manimgl
93 setuptools
94 ];
95 pyqt6 = [
96 pyqt6
97 ];
98 pyqt6-full = self.full ++ self.pyqt6;
99 pyside6 = [
100 pyside6
101 ];
102 pyside6-full = self.full ++ self.pyside6;
103 sphinx-directive = self.manim ++ [
104 docutils
105 ];
106 });
107
108 pythonImportsCheck = [
109 "manim_slides"
110 ];
111
112 meta = {
113 changelog = "https://github.com/jeertmans/manim-slides/blob/${src.tag}/CHANGELOG.md";
114 description = "Tool for live presentations using manim";
115 homepage = "https://github.com/jeertmans/manim-slides";
116 license = lib.licenses.mit;
117 mainProgram = "manim-slides";
118 maintainers = [ lib.maintainers.bpeetz ];
119 };
120}