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}