From fa8a2b5bc4d6aa9117e95cd0a64078fb669027aa Mon Sep 17 00:00:00 2001
From: Marc 'risson' Schmitt <marc.schmitt@risson.space>
Date: Mon, 23 Nov 2020 19:01:29 +0100
Subject: [PATCH 1/2] python3Packages.kivy-garden: init at 0.1.4

Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>
---
 .../python-modules/kivy-garden/default.nix    | 30 +++++++++++++++++++
 pkgs/top-level/python-packages.nix            |  2 ++
 2 files changed, 32 insertions(+)
 create mode 100644 pkgs/development/python-modules/kivy-garden/default.nix

diff --git a/pkgs/development/python-modules/kivy-garden/default.nix b/pkgs/development/python-modules/kivy-garden/default.nix
new file mode 100644
index 000000000000..edfad0c9b91d
--- /dev/null
+++ b/pkgs/development/python-modules/kivy-garden/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage, fetchPypi
+, requests
+}:
+
+buildPythonPackage rec {
+  pname = "kivy-garden";
+  version = "0.1.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0wkcpr2zc1q5jb0bi7v2dgc0vs5h1y7j42mviyh764j2i0kz8mn2";
+  };
+
+  propagatedBuildInputs = [ requests ];
+
+  pythonImportsCheck = [ "garden" ];
+
+  # There are no tests in the Pypi archive and building from source is not
+  # easily feasible because the build is done using buildozer and multiple
+  # repositories.
+  doCheck = false;
+
+  meta = with lib; {
+    description = "The kivy garden installation script, split into its own package for convenient use in buildozer.";
+    homepage = "https://pypi.python.org/pypi/kivy-garden";
+    license = licenses.mit;
+    maintainers = with maintainers; [ risson ];
+  };
+}
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 23dd4638b989..528820dda618 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -3507,6 +3507,8 @@ in {
 
   kitchen = callPackage ../development/python-modules/kitchen { };
 
+  kivy-garden = callPackage ../development/python-modules/kivy-garden { };
+
   kiwisolver = if isPy3k then
     callPackage ../development/python-modules/kiwisolver { }
   else

From 4d27c0ebf7ae3cfd8adaa76f6ea2da97b3978c58 Mon Sep 17 00:00:00 2001
From: Marc 'risson' Schmitt <marc.schmitt@risson.space>
Date: Mon, 23 Nov 2020 19:01:47 +0100
Subject: [PATCH 2/2] python3Packages.kivy: init at 2.0.0

Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>
---
 .../python-modules/kivy/default.nix           | 68 +++++++++++++++++++
 pkgs/top-level/python-packages.nix            |  4 ++
 2 files changed, 72 insertions(+)
 create mode 100644 pkgs/development/python-modules/kivy/default.nix

diff --git a/pkgs/development/python-modules/kivy/default.nix b/pkgs/development/python-modules/kivy/default.nix
new file mode 100644
index 000000000000..d4fa39c0c363
--- /dev/null
+++ b/pkgs/development/python-modules/kivy/default.nix
@@ -0,0 +1,68 @@
+{ lib
+, buildPythonPackage, fetchPypi
+, pkg-config, cython, docutils
+, kivy-garden
+, mesa, mtdev, SDL2, SDL2_image, SDL2_ttf, SDL2_mixer, gst_all_1
+, pillow, requests, pygments
+}:
+
+buildPythonPackage rec {
+  pname = "Kivy";
+  version = "2.0.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1n0j9046vgjncy50v06r3wcg3q2l37jp8n0cznr64dz48kml8pnj";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    cython
+    docutils
+  ];
+
+  buildInputs = [
+    mesa
+    mtdev
+    SDL2
+    SDL2_image
+    SDL2_ttf
+    SDL2_mixer
+
+    # NOTE: The degree to which gstreamer actually works is unclear
+    gst_all_1.gstreamer
+    gst_all_1.gst-plugins-base
+    gst_all_1.gst-plugins-good
+    gst_all_1.gst-plugins-bad
+  ];
+
+  propagatedBuildInputs = [
+    kivy-garden
+    pillow
+    pygments
+    requests
+  ];
+
+  KIVY_NO_CONFIG = 1;
+  KIVY_NO_ARGS = 1;
+  KIVY_NO_FILELOG = 1;
+
+  postPatch = ''
+    substituteInPlace kivy/lib/mtdev.py \
+      --replace "LoadLibrary('libmtdev.so.1')" "LoadLibrary('${mtdev}/lib/libmtdev.so.1')"
+  '';
+
+  /*
+    We cannot run tests as Kivy tries to import itself before being fully
+    installed.
+  */
+  doCheck = false;
+  pythonImportsCheck = [ "kivy" ];
+
+  meta = with lib; {
+    description = "Library for rapid development of hardware-accelerated multitouch applications.";
+    homepage = "https://pypi.python.org/pypi/kivy";
+    license = licenses.mit;
+    maintainers = with maintainers; [ risson ];
+  };
+}
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 528820dda618..f24dd4467d45 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -3507,6 +3507,10 @@ in {
 
   kitchen = callPackage ../development/python-modules/kitchen { };
 
+  kivy = callPackage ../development/python-modules/kivy {
+    inherit (pkgs) mesa;
+  };
+
   kivy-garden = callPackage ../development/python-modules/kivy-garden { };
 
   kiwisolver = if isPy3k then