aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--video/manimgl/default.nix30
-rw-r--r--video/manimgl/mapbox-earcut.nix25
-rw-r--r--video/manimpango/default.nix22
-rw-r--r--video/qam.py14
-rw-r--r--video/shell.nix27
5 files changed, 118 insertions, 0 deletions
diff --git a/video/manimgl/default.nix b/video/manimgl/default.nix
new file mode 100644
index 0000000..cdab07e
--- /dev/null
+++ b/video/manimgl/default.nix
@@ -0,0 +1,30 @@
+{ lib, pkgs, buildPythonApplication, buildPythonPackage, fetchPypi, pythonOlder,
+ manimpango, mapbox-earcut }:
+
+buildPythonApplication rec {
+ pname = "manimgl";
+ version = "1.2.0";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1bsrn72vjzfz3ldh3cjn9r2gxr18408ja2shz50qwh7jnwi8alyb";
+ };
+
+ preConfigure = ''
+ sed -i '/argparse/d' manimgl.egg-info/requires.txt
+ sed -i '/argparse/d' setup.cfg
+ '';
+
+ doCheck = false;
+
+ propagatedBuildInputs = [ manimpango mapbox-earcut ] ++ (with pkgs; [
+ texlive.combined.scheme-full ffmpeg
+ ]) ++ (with pkgs.python3Packages; [
+ cython sympy numpy pydub scipy pyyaml pyopengl pyopengl-accelerate moderngl moderngl-window
+ matplotlib colour rich screeninfo tqdm validators
+ ]);
+
+ disabled = pythonOlder "3.7";
+
+ meta = { };
+}
diff --git a/video/manimgl/mapbox-earcut.nix b/video/manimgl/mapbox-earcut.nix
new file mode 100644
index 0000000..d325401
--- /dev/null
+++ b/video/manimgl/mapbox-earcut.nix
@@ -0,0 +1,25 @@
+{ lib, pkgs, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "mapbox_earcut";
+ version = "0.12.10";
+ src = fetchPypi {
+ inherit pname version;
+ format = "setuptools";
+ sha256 = "0ly48lijgd9inq07x42pfp9c24fn16vn9axpmfwqrkn979krbnah";
+ };
+
+ dontUseCmakeConfigure = true;
+
+ nativeBuildInputs = with pkgs; [ cmake ];
+
+ buildInputs = with pkgs.python3Packages; [
+ setuptools_scm pybind11
+ ];
+
+ propagatedBuildInputs = with pkgs.python3Packages; [
+ numpy
+ ];
+
+ meta = with lib; {};
+}
diff --git a/video/manimpango/default.nix b/video/manimpango/default.nix
new file mode 100644
index 0000000..97b5e97
--- /dev/null
+++ b/video/manimpango/default.nix
@@ -0,0 +1,22 @@
+{ lib, pkgs, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+ pname = "ManimPango";
+ version = "0.3.1";
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "09fc7zv953ni7pilv869ldbjgz59j41a8vbz637rqzjh2yjfb9x3";
+ };
+
+ nativeBuildInputs = with pkgs; [
+ gcc pkgconfig
+ ];
+
+ propagatedBuildInputs = with pkgs; [ pango ]
+ ++ (with pkgs.python3Packages; [
+ cython pytest numpy pillow
+ ]);
+
+ meta = with lib; {};
+}
diff --git a/video/qam.py b/video/qam.py
new file mode 100644
index 0000000..917fdeb
--- /dev/null
+++ b/video/qam.py
@@ -0,0 +1,14 @@
+from manimlib import *
+
+class QamModulation(Scene):
+ CONFIG = {
+ "camera_class": ThreeDCamera,
+ }
+
+ def construct(self):
+ circle = Circle()
+ self.play(FadeIn(circle))
+ self.wait(3)
+
+ # open an interactive IPython shell here
+ self.embed()
diff --git a/video/shell.nix b/video/shell.nix
new file mode 100644
index 0000000..bdb2575
--- /dev/null
+++ b/video/shell.nix
@@ -0,0 +1,27 @@
+with import <nixpkgs> {};
+let
+ manimpango = callPackage manimpango/default.nix {
+ buildPythonPackage = pkgs.python3Packages.buildPythonPackage;
+ fetchPypi = pkgs.python3Packages.fetchPypi;
+ };
+
+ mapbox-earcut = callPackage manimgl/mapbox-earcut.nix {
+ buildPythonPackage = pkgs.python3Packages.buildPythonPackage;
+ fetchPypi = pkgs.python3Packages.fetchPypi;
+ };
+
+ manimgl = callPackage manimgl/default.nix {
+ buildPythonApplication = pkgs.python3Packages.buildPythonApplication;
+ buildPythonPackage = pkgs.python3Packages.buildPythonPackage;
+ fetchPypi = pkgs.python3Packages.fetchPypi;
+ pythonOlder = pkgs.python3Packages.pythonOlder;
+ manimpango = manimpango;
+ mapbox-earcut = mapbox-earcut;
+ };
+
+in mkShell {
+ buildInputs = [ manimpango manimgl ];
+ shellHook = ''
+ manimgl qam.py
+ '';
+}