about summary refs log tree commit diff
path: root/pkgs/applications/video
diff options
context:
space:
mode:
authorDaniel Schaefer <git@danielschaefer.me>2020-02-10 10:09:22 +0100
committerGitHub <noreply@github.com>2020-02-10 10:09:22 +0100
commitf10e240b86ae4072e00c3a1d01a60e672655dc9f (patch)
treecd8b1279c0531401d08c77f0e562bbe269f96d11 /pkgs/applications/video
parent05b4fe20a73f1a00ab760105d862117a4acf4e25 (diff)
parentc6960f41c9f723c677eb31d46869a523038c1f11 (diff)
Merge pull request #72886 from JohnAZoidberg/manim
manim: init at 0.1.10
Diffstat (limited to 'pkgs/applications/video')
-rw-r--r--pkgs/applications/video/manim/default.nix64
-rw-r--r--pkgs/applications/video/manim/remove-dependency-constraints.patch26
2 files changed, 90 insertions, 0 deletions
diff --git a/pkgs/applications/video/manim/default.nix b/pkgs/applications/video/manim/default.nix
new file mode 100644
index 0000000000000..0d263f402b338
--- /dev/null
+++ b/pkgs/applications/video/manim/default.nix
@@ -0,0 +1,64 @@
+{ lib, buildPythonApplication, fetchFromGitHub, pythonOlder, file, fetchpatch
+, cairo, ffmpeg, sox, xdg_utils, texlive
+, colour, numpy, pillow, progressbar, scipy, tqdm, opencv , pycairo, pydub
+, pbr, fetchPypi
+}:
+buildPythonApplication rec {
+  pname = "manim";
+  version = "0.1.10";
+
+  src = fetchPypi {
+    pname = "manimlib";
+    inherit version;
+    sha256 = "0vg9b3rwypq5zir74pi0pmj47yqlcg7hrvscwrpjzjbqq2yihn49";
+  };
+
+  patches = [ ./remove-dependency-constraints.patch ];
+
+  nativeBuildInputs = [ pbr ];
+
+  propagatedBuildInputs = [
+    colour
+    numpy
+    pillow
+    progressbar
+    scipy
+    tqdm
+    opencv
+    pycairo
+    pydub
+
+    cairo sox ffmpeg xdg_utils
+  ];
+
+  # Test with texlive to see whether it works but don't propagate
+  # because it's huge and optional
+  # TODO: Use smaller TexLive distribution
+  #       Doesn't need everything but it's hard to figure out what it needs
+  checkInputs = [ cairo sox ffmpeg xdg_utils texlive.combined.scheme-full ];
+
+  # Simple test and complex test with LaTeX
+  checkPhase = ''
+    for scene in SquareToCircle OpeningManimExample
+    do
+      python3 manim.py example_scenes.py $scene -l
+      tail -n 20 files/Tex/*.log  # Print potential LaTeX erorrs
+      ${file}/bin/file videos/example_scenes/480p15/$scene.mp4 \
+        | tee | grep -F "ISO Media, MP4 Base Media v1 [IS0 14496-12:2003]"
+    done
+  '';
+
+  disabled = pythonOlder "3.7";
+
+  meta = {
+    description = "Animation engine for explanatory math videos";
+    longDescription = ''
+      Manim is an animation engine for explanatory math videos. It's used to
+      create precise animations programmatically, as seen in the videos of
+      3Blue1Brown on YouTube.
+    '';
+    homepage = https://github.com/3b1b/manim;
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ johnazoidberg ];
+  };
+}
diff --git a/pkgs/applications/video/manim/remove-dependency-constraints.patch b/pkgs/applications/video/manim/remove-dependency-constraints.patch
new file mode 100644
index 0000000000000..4a7da45d0f57b
--- /dev/null
+++ b/pkgs/applications/video/manim/remove-dependency-constraints.patch
@@ -0,0 +1,26 @@
+diff --git i/requirements.txt w/requirements.txt
+index 556122ad..11fd49d5 100644
+--- i/requirements.txt
++++ w/requirements.txt
+@@ -1,11 +1,10 @@
+-argparse==1.4.0
+-colour==0.1.5
+-numpy==1.15.0
+-Pillow==5.2.0
+-progressbar==2.5
+-scipy==1.1.0
+-tqdm==4.24.0
+-opencv-python==3.4.2.17
+-pycairo==1.17.1; sys_platform == 'linux'
+-pycairo>=1.18.0; sys_platform == 'win32'
+-pydub==0.23.0
++colour
++numpy
++Pillow
++progressbar
++scipy
++tqdm
++pycairo
++pycairo>=1.18.1; sys_platform == 'win32'
++pydub
++pyreadline==2.1; sys_platform == 'win32'