42 # According to ManimCommunity documentation manim uses tex-packages packaged
43 # in a custom distribution called "manim-latex",
45 # https://community.chocolatey.org/packages/manim-latex#files
47 # which includes another cutom distribution called tinytex, for which the
48 # package list can be found at
50 # https://github.com/yihui/tinytex/blob/master/tools/pkgs-custom.txt
52 # these two combined add up to:
53 manim-tinytex = texliveInfraOnly.withPackages (
175 buildPythonPackage rec {
179 disabled = pythonOlder "3.9";
181 src = fetchFromGitHub {
182 owner = "ManimCommunity";
184 rev = "refs/tags/v${version}";
185 hash = "sha256-o+Wl3NMK6yopcsRVFtZuUE9c1GABa5d8rbQNHDJ4OiQ=";
200 patches = [ ./pytest-report-header.patch ];
203 substituteInPlace pyproject.toml \
204 --replace "--no-cov-on-fail --cov=manim --cov-report xml --cov-report term" ""
206 substituteInPlace manim/_config/default.cfg \
207 --replace "ffmpeg_executable = ffmpeg" "ffmpeg_executable = ${lib.getExe ffmpeg}"
210 buildInputs = [ cairo ];
238 optional-dependencies = {
243 # TODO package dearpygui
244 # gui = [ dearpygui ];
257 nativeCheckInputs = [
264 # about 55 of ~600 tests failing mostly due to demand for display
265 disabledTests = import ./failing_tests.nix;
267 pythonImportsCheck = [ "manim" ];
270 description = "Animation engine for explanatory math videos - Community version";
272 Manim is an animation engine for explanatory math videos. It's used to
273 create precise animations programmatically, as seen in the videos of
274 3Blue1Brown on YouTube. This is the community maintained version of
277 homepage = "https://github.com/ManimCommunity/manim";
278 license = licenses.mit;