about summary refs log tree commit diff
path: root/pkgs/applications/video/kodi/addons
diff options
context:
space:
mode:
authorAndersonTorres <torres.anderson.85@protonmail.com>2021-12-18 22:34:47 -0300
committerAndersonTorres <torres.anderson.85@protonmail.com>2021-12-18 22:34:47 -0300
commit4ec32d1ba344253edb654567df4b0a2794d4fd7e (patch)
tree3c69ec5481d404f617ad55e28bb761360348f9f1 /pkgs/applications/video/kodi/addons
parentcf66057e81c0327efd905d5f6316124b56eee515 (diff)
kodi: move kodi-packages/ to kodi/addons/
Diffstat (limited to 'pkgs/applications/video/kodi/addons')
-rw-r--r--pkgs/applications/video/kodi/addons/a4ksubtitles/default.nix26
-rw-r--r--pkgs/applications/video/kodi/addons/addon-update-script/default.nix23
-rw-r--r--pkgs/applications/video/kodi/addons/archive_tool/default.nix28
-rw-r--r--pkgs/applications/video/kodi/addons/certifi/default.nix25
-rw-r--r--pkgs/applications/video/kodi/addons/chardet/default.nix25
-rw-r--r--pkgs/applications/video/kodi/addons/controllers/default.nix22
-rw-r--r--pkgs/applications/video/kodi/addons/dateutil/default.nix30
-rw-r--r--pkgs/applications/video/kodi/addons/defusedxml/default.nix26
-rw-r--r--pkgs/applications/video/kodi/addons/iagl/default.nix30
-rw-r--r--pkgs/applications/video/kodi/addons/idna/default.nix25
-rw-r--r--pkgs/applications/video/kodi/addons/inputstream-adaptive/default.nix31
-rw-r--r--pkgs/applications/video/kodi/addons/inputstream-ffmpegdirect/default.nix24
-rw-r--r--pkgs/applications/video/kodi/addons/inputstream-rtmp/default.nix24
-rw-r--r--pkgs/applications/video/kodi/addons/inputstreamhelper/default.nix25
-rw-r--r--pkgs/applications/video/kodi/addons/jellyfin/default.nix50
-rw-r--r--pkgs/applications/video/kodi/addons/joystick/default.nix22
-rw-r--r--pkgs/applications/video/kodi/addons/keymap/default.nix24
-rw-r--r--pkgs/applications/video/kodi/addons/kodi-platform/default.nix15
-rw-r--r--pkgs/applications/video/kodi/addons/kodi-six/default.nix26
-rw-r--r--pkgs/applications/video/kodi/addons/libretro-genplus/default.nix31
-rw-r--r--pkgs/applications/video/kodi/addons/libretro-mgba/default.nix31
-rw-r--r--pkgs/applications/video/kodi/addons/libretro-snes9x/default.nix31
-rw-r--r--pkgs/applications/video/kodi/addons/libretro/default.nix24
-rw-r--r--pkgs/applications/video/kodi/addons/myconnpy/default.nix25
-rw-r--r--pkgs/applications/video/kodi/addons/netflix/default.nix29
-rw-r--r--pkgs/applications/video/kodi/addons/osmc-skin/default.nix21
-rw-r--r--pkgs/applications/video/kodi/addons/pdfreader/default.nix22
-rw-r--r--pkgs/applications/video/kodi/addons/pvr-hdhomerun/default.nix23
-rw-r--r--pkgs/applications/video/kodi/addons/pvr-hts/default.nix21
-rw-r--r--pkgs/applications/video/kodi/addons/pvr-iptvsimple/default.nix36
-rw-r--r--pkgs/applications/video/kodi/addons/requests-cache/default.nix29
-rw-r--r--pkgs/applications/video/kodi/addons/requests/default.nix32
-rw-r--r--pkgs/applications/video/kodi/addons/routing/default.nix25
-rw-r--r--pkgs/applications/video/kodi/addons/signals/default.nix25
-rw-r--r--pkgs/applications/video/kodi/addons/six/default.nix23
-rw-r--r--pkgs/applications/video/kodi/addons/steam-controller/default.nix21
-rw-r--r--pkgs/applications/video/kodi/addons/steam-launcher/default.nix29
-rw-r--r--pkgs/applications/video/kodi/addons/steam-library/default.nix27
-rw-r--r--pkgs/applications/video/kodi/addons/svtplay/default.nix27
-rw-r--r--pkgs/applications/video/kodi/addons/urllib3/default.nix25
-rw-r--r--pkgs/applications/video/kodi/addons/vfs-libarchive/default.nix22
-rw-r--r--pkgs/applications/video/kodi/addons/vfs-sftp/default.nix22
-rw-r--r--pkgs/applications/video/kodi/addons/websocket/default.nix30
-rw-r--r--pkgs/applications/video/kodi/addons/youtube/default.nix32
44 files changed, 1164 insertions, 0 deletions
diff --git a/pkgs/applications/video/kodi/addons/a4ksubtitles/default.nix b/pkgs/applications/video/kodi/addons/a4ksubtitles/default.nix
new file mode 100644
index 0000000000000..9c62198cb0f3a
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/a4ksubtitles/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildKodiAddon, fetchFromGitHub, requests, vfs-libarchive  }:
+
+buildKodiAddon rec {
+  pname = "a4ksubtitles";
+  namespace = "service.subtitles.a4ksubtitles";
+  version = "2.8.0";
+
+  src = fetchFromGitHub {
+    owner = "a4k-openproject";
+    repo = "a4kSubtitles";
+    rev = "${namespace}/${namespace}-${version}";
+    sha256 = "0fg5mcvxdc3hqybp1spy7d1nnqirwhcvrblbwksikym9m3qgw2m5";
+  };
+
+  propagatedBuildInputs = [
+    requests
+    vfs-libarchive
+  ];
+
+  meta = with lib; {
+    homepage = "https://a4k-openproject.github.io/a4kSubtitles/";
+    description = "Multi-Source Subtitles Addon";
+    license = licenses.mit;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/addon-update-script/default.nix b/pkgs/applications/video/kodi/addons/addon-update-script/default.nix
new file mode 100644
index 0000000000000..17c1d45783fa0
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/addon-update-script/default.nix
@@ -0,0 +1,23 @@
+{ writeShellScript
+, nix
+, curl
+, gzip
+, xmlstarlet
+, common-updater-scripts
+}:
+
+{ attrPath }:
+
+let
+  url = "http://mirrors.kodi.tv/addons/matrix/addons.xml.gz";
+  updateScript = writeShellScript "update.sh" ''
+    set -ex
+
+    attrPath=$1
+    namespace=$(${nix}/bin/nix-instantiate $systemArg --eval -E "with import ./. {}; $attrPath.namespace" | tr -d '"')
+    version=$(${curl}/bin/curl -s -L ${url} | ${gzip}/bin/gunzip -c | ${xmlstarlet}/bin/xml select -T -t -m "//addons/addon[@id='$namespace']" -v @version)
+
+    ${common-updater-scripts}/bin/update-source-version "$attrPath" "$version"
+  '';
+in
+  [ updateScript attrPath ]
diff --git a/pkgs/applications/video/kodi/addons/archive_tool/default.nix b/pkgs/applications/video/kodi/addons/archive_tool/default.nix
new file mode 100644
index 0000000000000..4788556a8793a
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/archive_tool/default.nix
@@ -0,0 +1,28 @@
+{ lib, buildKodiAddon, fetchFromGitHub, vfs-libarchive }:
+buildKodiAddon rec {
+  pname = "archive_tool";
+  namespace = "script.module.archive_tool";
+  version = "2.0.3";
+
+  src = fetchFromGitHub {
+    owner = "zach-morris";
+    repo = "script.module.archive_tool";
+    rev = version;
+    sha256 = "0hbkyk59xxfjv6vzfjplahmqxi5564qjlwyq6k8ijy6jjcwnd3p7";
+  };
+
+  propagatedBuildInputs = [
+    vfs-libarchive
+  ];
+
+  passthru = {
+    pythonPath = "lib";
+  };
+
+  meta = with lib; {
+    homepage = "https://github.com/zach-morris/script.module.archive_tool";
+    description = "A set of common python functions to work with the Kodi archive virtual file system (vfs) binary addons";
+    license = licenses.gpl3Plus;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/certifi/default.nix b/pkgs/applications/video/kodi/addons/certifi/default.nix
new file mode 100644
index 0000000000000..1088f560adf90
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/certifi/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
+buildKodiAddon rec {
+  pname = "certifi";
+  namespace = "script.module.certifi";
+  version = "2020.12.05+matrix.1";
+
+  src = fetchzip {
+    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
+    sha256 = "1z49b8va7wdyr714c8ixb2sldi0igffcjj3xpbmga58ph0z985vy";
+  };
+
+  passthru = {
+    pythonPath = "lib";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.certifi";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://certifi.io";
+    description = "Python package for providing Mozilla's CA Bundle";
+    license = licenses.mpl20;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/chardet/default.nix b/pkgs/applications/video/kodi/addons/chardet/default.nix
new file mode 100644
index 0000000000000..fe482447cfa3e
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/chardet/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
+buildKodiAddon rec {
+  pname = "chardet";
+  namespace = "script.module.chardet";
+  version = "4.0.0+matrix.1";
+
+  src = fetchzip {
+    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
+    sha256 = "1jsd165mb1b8jdan2jbjd3y3xa0xam2cxcccmwazkybpa0r6a7dj";
+  };
+
+  passthru = {
+    pythonPath = "lib";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.chardet";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://github.com/Freso/script.module.chardet";
+    description = "Universal encoding detector";
+    license = licenses.lgpl2Only;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/controllers/default.nix b/pkgs/applications/video/kodi/addons/controllers/default.nix
new file mode 100644
index 0000000000000..825ad5d53fc40
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/controllers/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildKodiAddon, fetchFromGitHub, controller }:
+buildKodiAddon rec {
+  pname = "game-controller-${controller}";
+  namespace = "game.controller.${controller}";
+  version = "1.0.3";
+
+  sourceDir = "addons/" + namespace;
+
+  src = fetchFromGitHub {
+    owner = "kodi-game";
+    repo = "kodi-game-controllers";
+    rev = "01acb5b6e8b85392b3cb298b034aadb1b24ccf18";
+    sha256 = "0sbc0w0fwbp7rbmbgb6a1kglhnn5g85hijcbbvf5x6jdq9v3f1qb";
+  };
+
+  meta = with lib; {
+    description = "Add support for different gaming controllers.";
+    platforms = platforms.all;
+    license = licenses.odbl;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/dateutil/default.nix b/pkgs/applications/video/kodi/addons/dateutil/default.nix
new file mode 100644
index 0000000000000..54a22cedf9058
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/dateutil/default.nix
@@ -0,0 +1,30 @@
+{ lib, buildKodiAddon, fetchzip, addonUpdateScript, six }:
+
+buildKodiAddon rec {
+  pname = "dateutil";
+  namespace = "script.module.dateutil";
+  version = "2.8.1+matrix.1";
+
+  src = fetchzip {
+    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
+    sha256 = "1jr77017ihs7j3455i72af71wyvs792kbizq4539ccd98far8lm7";
+  };
+
+  propagatedBuildInputs = [
+    six
+  ];
+
+  passthru = {
+    pythonPath = "lib";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.dateutil";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://dateutil.readthedocs.io/en/stable/";
+    description = "Extensions to the standard Python datetime module";
+    license = with licenses; [ asl20 bsd3 ];
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/defusedxml/default.nix b/pkgs/applications/video/kodi/addons/defusedxml/default.nix
new file mode 100644
index 0000000000000..11738065ff601
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/defusedxml/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
+
+buildKodiAddon rec {
+  pname = "defusedxml";
+  namespace = "script.module.defusedxml";
+  version = "0.6.0+matrix.1";
+
+  src = fetchzip {
+    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
+    sha256 = "026i5rx9rmxcc18ixp6qhbryqdl4pn7cbwqicrishivan6apnacd";
+  };
+
+  passthru = {
+    pythonPath = "lib";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.defusedxml";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://github.com/tiran/defusedxml";
+    description = "defusing XML bombs and other exploits";
+    license = licenses.psfl;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/iagl/default.nix b/pkgs/applications/video/kodi/addons/iagl/default.nix
new file mode 100644
index 0000000000000..8ca0abdf960b9
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/iagl/default.nix
@@ -0,0 +1,30 @@
+{ lib, buildKodiAddon, fetchFromGitHub, fetchzip, dateutil, requests, routing, vfs-libarchive, archive_tool, youtube }:
+
+buildKodiAddon rec {
+  pname = "iagl";
+  namespace = "plugin.program.iagl";
+  version = "1101521-2";
+
+  src = fetchFromGitHub {
+    owner = "zach-morris";
+    repo = "plugin.program.iagl";
+    rev = "30e82eec1a909b31767f0e298cf77fc970b256d3";
+    sha256 = "11y05i5f7lzik23w2kr52jdgr8db3gin8i683sy1hzxlmplk4699";
+  };
+
+  propagatedBuildInputs = [
+    dateutil
+    requests
+    routing
+    vfs-libarchive
+    archive_tool
+    youtube
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/zach-morris/plugin.program.iagl";
+    description = "Launch Games from the Internet using Kodi";
+    license = licenses.gpl3Plus;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/idna/default.nix b/pkgs/applications/video/kodi/addons/idna/default.nix
new file mode 100644
index 0000000000000..01f16696faeec
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/idna/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
+buildKodiAddon rec {
+  pname = "idna";
+  namespace = "script.module.idna";
+  version = "2.10.0+matrix.1";
+
+  src = fetchzip {
+    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
+    sha256 = "0pm86m8kh2p0brps3xzxcmmabvb4izkglzkj8dsn33br3vlc7cm7";
+  };
+
+  passthru = {
+    pythonPath = "lib";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.idna";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://github.com/Freso/script.module.idna";
+    description = "Internationalized Domain Names for Python";
+    license = licenses.bsd3;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/inputstream-adaptive/default.nix b/pkgs/applications/video/kodi/addons/inputstream-adaptive/default.nix
new file mode 100644
index 0000000000000..e029bd9742956
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/inputstream-adaptive/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, lib, rel, addonDir, buildKodiBinaryAddon, fetchFromGitHub, expat, glib, nspr, nss, gtest }:
+buildKodiBinaryAddon rec {
+  pname = "inputstream-adaptive";
+  namespace = "inputstream.adaptive";
+  version = "19.0.0";
+
+  src = fetchFromGitHub {
+    owner = "xbmc";
+    repo = "inputstream.adaptive";
+    rev = "${version}-${rel}";
+    sha256 = "sha256-o3tiNEVc17RIlEgf3V2oOK04da0DpmexT9m8m/xtI4I=";
+  };
+
+  extraNativeBuildInputs = [ gtest ];
+
+  extraBuildInputs = [ expat ];
+
+  extraRuntimeDependencies = [ glib nspr nss stdenv.cc.cc.lib ];
+
+  extraInstallPhase = let n = namespace; in ''
+    ln -s $out/lib/addons/${n}/libssd_wv.so $out/${addonDir}/${n}/libssd_wv.so
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/xbmc/inputstream.adaptive";
+    description = "Kodi inputstream addon for several manifest types";
+    platforms = platforms.all;
+    license = licenses.gpl2Only;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/inputstream-ffmpegdirect/default.nix b/pkgs/applications/video/kodi/addons/inputstream-ffmpegdirect/default.nix
new file mode 100644
index 0000000000000..313456bbfa7cf
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/inputstream-ffmpegdirect/default.nix
@@ -0,0 +1,24 @@
+{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub, kodi, bzip2, zlib }:
+
+buildKodiBinaryAddon rec {
+  pname = "inputstream-ffmpegdirect";
+  namespace = "inputstream.ffmpegdirect";
+  version = "19.0.0";
+
+  src = fetchFromGitHub {
+    owner = "xbmc";
+    repo = "inputstream.ffmpegdirect";
+    rev = "${version}-${rel}";
+    sha256 = "sha256-qdN2tmwS6uD9wrHnKC3iNvHnA2WlJAoNhdwvw16/L0U=";
+  };
+
+  extraBuildInputs = [ bzip2 zlib kodi.ffmpeg ];
+
+  meta = with lib; {
+    homepage = "https://github.com/xbmc/inputstream.ffmpegdirect/";
+    description = "InputStream Client for streams that can be opened by either FFmpeg's libavformat or Kodi's cURL";
+    platforms = platforms.all;
+    license = licenses.gpl2Plus;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/inputstream-rtmp/default.nix b/pkgs/applications/video/kodi/addons/inputstream-rtmp/default.nix
new file mode 100644
index 0000000000000..eb53aee68bb42
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/inputstream-rtmp/default.nix
@@ -0,0 +1,24 @@
+{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub, openssl, rtmpdump, zlib }:
+
+buildKodiBinaryAddon rec {
+  pname = "inputstream-rtmp";
+  namespace = "inputstream.rtmp";
+  version = "19.0.0";
+
+  src = fetchFromGitHub {
+    owner = "xbmc";
+    repo = "inputstream.rtmp";
+    rev = "${version}-${rel}";
+    sha256 = "sha256-76yGttcLJJ5XJKsFJ3GnEuPs9+9J0Tr8Znm45676OI8=";
+  };
+
+  extraBuildInputs = [ openssl rtmpdump zlib ];
+
+  meta = with lib; {
+    homepage = "https://github.com/xbmc/inputstream.rtmp/";
+    description = "Client for RTMP streams";
+    platforms = platforms.all;
+    license = licenses.gpl2Plus;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/inputstreamhelper/default.nix b/pkgs/applications/video/kodi/addons/inputstreamhelper/default.nix
new file mode 100644
index 0000000000000..7698e6619d91c
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/inputstreamhelper/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
+buildKodiAddon rec {
+  pname = "inputstreamhelper";
+  namespace = "script.module.inputstreamhelper";
+  version = "0.5.8+matrix.1";
+
+  src = fetchzip {
+    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
+    sha256 = "xdsUzmz8ji9JcYLEUFWwvXq0Oig5i08VPQD93K8R9hk=";
+  };
+
+  passthru = {
+    pythonPath = "lib";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.inputstreamhelper";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://github.com/emilsvennesson/script.module.inputstreamhelper";
+    description = "A simple Kodi module that makes life easier for add-on developers relying on InputStream based add-ons and DRM playback";
+    license = licenses.mit;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/jellyfin/default.nix b/pkgs/applications/video/kodi/addons/jellyfin/default.nix
new file mode 100644
index 0000000000000..59aaa2e8b2613
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/jellyfin/default.nix
@@ -0,0 +1,50 @@
+{ lib, addonDir, buildKodiAddon, fetchFromGitHub, kodi, requests, dateutil, six, kodi-six, signals, websocket }:
+let
+  python = kodi.pythonPackages.python.withPackages (p: with p; [ pyyaml ]);
+in
+buildKodiAddon rec {
+  pname = "jellyfin";
+  namespace = "plugin.video.jellyfin";
+  version = "0.7.7";
+
+  src = fetchFromGitHub {
+    owner = "jellyfin";
+    repo = "jellyfin-kodi";
+    rev = "v${version}";
+    sha256 = "06glhnpayldficvvhlkbxg7zizl2wqms66fnc3p63nm3y7mqa9dd";
+  };
+
+  nativeBuildInputs = [
+    python
+  ];
+
+  prePatch = ''
+    # ZIP does not support timestamps before 1980 - https://bugs.python.org/issue34097
+    substituteInPlace build.py \
+      --replace "with zipfile.ZipFile('{}/{}'.format(target, archive_name), 'w') as z:" "with zipfile.ZipFile('{}/{}'.format(target, archive_name), 'w', strict_timestamps=False) as z:"
+  '';
+
+  buildPhase = ''
+    ${python}/bin/python3 build.py --version=py3
+  '';
+
+  postInstall = ''
+    mv /build/source/addon.xml $out${addonDir}/${namespace}/
+  '';
+
+  propagatedBuildInputs = [
+    requests
+    dateutil
+    six
+    kodi-six
+    signals
+    websocket
+  ];
+
+  meta = with lib; {
+    homepage = "https://jellyfin.org/";
+    description = "A whole new way to manage and view your media library";
+    license = licenses.gpl3Only;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/joystick/default.nix b/pkgs/applications/video/kodi/addons/joystick/default.nix
new file mode 100644
index 0000000000000..a1b9c3eeeefdb
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/joystick/default.nix
@@ -0,0 +1,22 @@
+{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub, tinyxml, udev }:
+buildKodiBinaryAddon rec {
+  pname = namespace;
+  namespace = "peripheral.joystick";
+  version = "1.7.1";
+
+  src = fetchFromGitHub {
+    owner = "xbmc";
+    repo = namespace;
+    rev = "${version}-${rel}";
+    sha256 = "1dhj4afr9kj938xx70fq5r409mz6lbw4n581ljvdjj9lq7akc914";
+  };
+
+  extraBuildInputs = [ tinyxml udev ];
+
+  meta = with lib; {
+    description = "Binary addon for raw joystick input.";
+    platforms = platforms.all;
+    license = licenses.gpl2Only;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/keymap/default.nix b/pkgs/applications/video/kodi/addons/keymap/default.nix
new file mode 100644
index 0000000000000..d7b45485d6837
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/keymap/default.nix
@@ -0,0 +1,24 @@
+{ lib, addonDir, buildKodiAddon, fetchzip, defusedxml, kodi-six }:
+
+buildKodiAddon rec {
+  pname = "keymap";
+  namespace = "script.keymap";
+  version = "1.1.3+matrix.1";
+
+  src = fetchzip {
+    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
+    sha256 = "1icrailzpf60nw62xd0khqdp66dnr473m2aa9wzpmkk3qj1ay6jv";
+  };
+
+  propagatedBuildInputs = [
+    defusedxml
+    kodi-six
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/tamland/xbmc-keymap-editor";
+    description = "A GUI for configuring mappings for remotes, keyboard and other inputs supported by Kodi";
+    license = licenses.gpl3Plus;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/kodi-platform/default.nix b/pkgs/applications/video/kodi/addons/kodi-platform/default.nix
new file mode 100644
index 0000000000000..6d458f7377d72
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/kodi-platform/default.nix
@@ -0,0 +1,15 @@
+{ stdenv, fetchFromGitHub, cmake, kodi, libcec_platform, tinyxml }:
+stdenv.mkDerivation rec {
+  pname = "kodi-platform";
+  version = "17.1";
+
+  src = fetchFromGitHub {
+    owner = "xbmc";
+    repo = pname;
+    rev = "c8188d82678fec6b784597db69a68e74ff4986b5";
+    sha256 = "1r3gs3c6zczmm66qcxh9mr306clwb3p7ykzb70r3jv5jqggiz199";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ kodi libcec_platform tinyxml ];
+}
diff --git a/pkgs/applications/video/kodi/addons/kodi-six/default.nix b/pkgs/applications/video/kodi/addons/kodi-six/default.nix
new file mode 100644
index 0000000000000..24404ef349e28
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/kodi-six/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
+
+buildKodiAddon rec {
+  pname = "kodi-six";
+  namespace = "script.module.kodi-six";
+  version = "0.1.3.1";
+
+  src = fetchzip {
+    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
+    sha256 = "14m232p9hx925pbk8knsg994m1nbpa5278zmcrnfblh4z84gjv4x";
+  };
+
+  passthru = {
+    pythonPath = "libs";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.kodi-six";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://github.com/romanvm/kodi.six";
+    description = "Wrappers around Kodi Python API for seamless Python 2/3 compatibility";
+    license = licenses.gpl3Only;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/libretro-genplus/default.nix b/pkgs/applications/video/kodi/addons/libretro-genplus/default.nix
new file mode 100644
index 0000000000000..064375107e26e
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/libretro-genplus/default.nix
@@ -0,0 +1,31 @@
+{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub, libretro, genesis-plus-gx }:
+
+buildKodiBinaryAddon rec {
+  pname = "kodi-libretro-genplus";
+  namespace = "game.libretro.genplus";
+  version = "1.7.4.31";
+
+  src = fetchFromGitHub {
+    owner = "kodi-game";
+    repo = "game.libretro.genplus";
+    rev = "${version}-${rel}";
+    sha256 = "0lcii32wzpswjjkwhv250l238g31akr66dhkbv8gj4v1i4z7hry8";
+  };
+
+  extraCMakeFlags = [
+    "-DGENPLUS_LIB=${genesis-plus-gx}/lib/retroarch/cores/genesis_plus_gx_libretro.so"
+  ];
+
+  extraBuildInputs = [ genesis-plus-gx ];
+  propagatedBuildInputs = [
+    libretro
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/kodi-game/game.libretro.genplus";
+    description = "Genesis Plus GX GameClient for Kodi";
+    platforms = platforms.all;
+    license = licenses.gpl2Only;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/libretro-mgba/default.nix b/pkgs/applications/video/kodi/addons/libretro-mgba/default.nix
new file mode 100644
index 0000000000000..a58f1c51b295f
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/libretro-mgba/default.nix
@@ -0,0 +1,31 @@
+{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub, libretro, mgba }:
+
+buildKodiBinaryAddon rec {
+  pname = "kodi-libretro-mgba";
+  namespace = "game.libretro.mgba";
+  version = "0.9.2.31";
+
+  src = fetchFromGitHub {
+    owner = "kodi-game";
+    repo = "game.libretro.mgba";
+    rev = "${version}-${rel}";
+    sha256 = "sha256-eZLuNhLwMTtzpLGkymc9cLC83FQJWZ2ZT0iyz4sY4EA=";
+  };
+
+  extraCMakeFlags = [
+    "-DMGBA_LIB=${mgba}/lib/retroarch/cores/mgba_libretro.so"
+  ];
+
+  extraBuildInputs = [ mgba ];
+  propagatedBuildInputs = [
+    libretro
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/kodi-game/game.libretro.mgba";
+    description = "mGBA for Kodi";
+    platforms = platforms.all;
+    license = licenses.gpl2Only;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/libretro-snes9x/default.nix b/pkgs/applications/video/kodi/addons/libretro-snes9x/default.nix
new file mode 100644
index 0000000000000..640aec3d49714
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/libretro-snes9x/default.nix
@@ -0,0 +1,31 @@
+{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub, libretro, snes9x }:
+
+buildKodiBinaryAddon rec {
+  pname = "kodi-libretro-snes9x";
+  namespace = "game.libretro.snes9x";
+  version = "1.60.0.29";
+
+  src = fetchFromGitHub {
+    owner = "kodi-game";
+    repo = "game.libretro.snes9x";
+    rev = "${version}-${rel}";
+    sha256 = "1wyfkg4fncc604alnbaqk92fi1h80n7bwiqfkb8479x5517byab1";
+  };
+
+  extraCMakeFlags = [
+    "-DSNES9X_LIB=${snes9x}/lib/retroarch/cores/snes9x_libretro.so"
+  ];
+
+  extraBuildInputs = [ snes9x ];
+  propagatedBuildInputs = [
+    libretro
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/kodi-game/game.libretro.snes9x";
+    description = "Snes9X GameClient for Kodi";
+    platforms = platforms.all;
+    license = licenses.gpl2Only;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/libretro/default.nix b/pkgs/applications/video/kodi/addons/libretro/default.nix
new file mode 100644
index 0000000000000..d1fc3d4afd2b0
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/libretro/default.nix
@@ -0,0 +1,24 @@
+{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub, tinyxml }:
+
+buildKodiBinaryAddon rec {
+  pname = "libretro";
+  namespace = "game.libretro";
+  version = "19.0.0";
+
+  src = fetchFromGitHub {
+    owner = "kodi-game";
+    repo = "game.libretro";
+    rev = "${version}-${rel}";
+    sha256 = "1831wbbc4a545lr4mg1fm4sbx75k5lkrfqaa5fh308aar0nm974d";
+  };
+
+  extraBuildInputs = [ tinyxml ];
+
+  meta = with lib; {
+    homepage = "https://github.com/kodi-game/game.libretro";
+    description = "Libretro wrapper for Kodi's Game API";
+    platforms = platforms.all;
+    license = licenses.gpl2Only;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/myconnpy/default.nix b/pkgs/applications/video/kodi/addons/myconnpy/default.nix
new file mode 100644
index 0000000000000..e39625545f6ac
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/myconnpy/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
+buildKodiAddon rec {
+  pname = "myconnpy";
+  namespace = "script.module.myconnpy";
+  version = "8.0.18+matrix.1";
+
+  src = fetchzip {
+    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
+    sha256 = "1cx3qdzw9lkkmbyvyrmc2i193is20fihn2sfl7kmv43f708vam0k";
+  };
+
+  passthru = {
+    pythonPath = "lib";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.myconnpy";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "http://dev.mysql.com/doc/connector-python/en/index.html";
+    description = "MySQL Connector/Python";
+    license = licenses.gpl2Only;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/netflix/default.nix b/pkgs/applications/video/kodi/addons/netflix/default.nix
new file mode 100644
index 0000000000000..d9d11657e8b95
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/netflix/default.nix
@@ -0,0 +1,29 @@
+{ lib, buildKodiAddon, fetchFromGitHub, signals, inputstream-adaptive, inputstreamhelper, requests, myconnpy }:
+
+buildKodiAddon rec {
+  pname = "netflix";
+  namespace = "plugin.video.netflix";
+  version = "1.16.2";
+
+  src = fetchFromGitHub {
+    owner = "CastagnaIT";
+    repo = namespace;
+    rev = "v${version}";
+    sha256 = "0yycwm8vrpkr4fsbf713mhpnaxfd849nhzp5r1898sb9vldab4xk";
+  };
+
+  propagatedBuildInputs = [
+    signals
+    inputstream-adaptive
+    inputstreamhelper
+    requests
+    myconnpy
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/CastagnaIT/plugin.video.netflix";
+    description = "Netflix VOD Services Add-on";
+    license = licenses.mit;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/osmc-skin/default.nix b/pkgs/applications/video/kodi/addons/osmc-skin/default.nix
new file mode 100644
index 0000000000000..7bbb62029bba2
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/osmc-skin/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildKodiAddon, fetchFromGitHub }:
+buildKodiAddon rec {
+  pname = "osmc-skin";
+  namespace = "skin.osmc";
+  version = "18.0.0";
+
+  src = fetchFromGitHub {
+    owner = "osmc";
+    repo = namespace;
+    rev = "40a6c318641e2cbeac58fb0e7dde9c2beac737a0";
+    sha256 = "1l7hyfj5zvjxjdm94y325bmy1naak455b9l8952sb0gllzrcwj6s";
+  };
+
+  meta = with lib; {
+    homepage = "https://github.com/osmc/skin.osmc";
+    description = "The default skin for OSMC";
+    platforms = platforms.all;
+    maintainers = with maintainers; [ ];
+    license = licenses.cc-by-nc-sa-30;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/pdfreader/default.nix b/pkgs/applications/video/kodi/addons/pdfreader/default.nix
new file mode 100644
index 0000000000000..62a5853c796b8
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/pdfreader/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildKodiAddon, fetchFromGitHub }:
+buildKodiAddon rec {
+  pname = "pdfreader";
+  namespace = "plugin.image.pdf";
+  version = "2.0.2";
+
+  src = fetchFromGitHub {
+    owner = "i96751414";
+    repo = "plugin.image.pdfreader";
+    rev = "v${version}";
+    sha256 = "0nkqhlm1gyagq6xpdgqvd5qxyr2ngpml9smdmzfabc8b972mwjml";
+  };
+
+  passthru.pythonPath = "lib/api";
+
+  meta = with lib; {
+    homepage = "https://forum.kodi.tv/showthread.php?tid=187421";
+    description = "A comic book reader";
+    license = licenses.gpl2Plus;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/pvr-hdhomerun/default.nix b/pkgs/applications/video/kodi/addons/pvr-hdhomerun/default.nix
new file mode 100644
index 0000000000000..093322b231c45
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/pvr-hdhomerun/default.nix
@@ -0,0 +1,23 @@
+{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub, jsoncpp, libhdhomerun }:
+buildKodiBinaryAddon rec {
+  pname = "pvr-hdhomerun";
+  namespace = "pvr.hdhomerun";
+  version = "19.0.0";
+
+  src = fetchFromGitHub {
+    owner = "kodi-pvr";
+    repo = "pvr.hdhomerun";
+    rev = "${version}-${rel}";
+    sha256 = "sha256-KaT+BPRrkhw5R18aUNdnA9PKXF87EzwQLaY9ep86OvE=";
+  };
+
+  extraBuildInputs = [ jsoncpp libhdhomerun ];
+
+  meta = with lib; {
+    homepage = "https://github.com/kodi-pvr/pvr.hdhomerun";
+    description = "Kodi's HDHomeRun PVR client addon";
+    platforms = platforms.all;
+    license = licenses.gpl2Only;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/pvr-hts/default.nix b/pkgs/applications/video/kodi/addons/pvr-hts/default.nix
new file mode 100644
index 0000000000000..30f56b2c3c7be
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/pvr-hts/default.nix
@@ -0,0 +1,21 @@
+{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub }:
+buildKodiBinaryAddon rec {
+  pname = "pvr-hts";
+  namespace = "pvr.hts";
+  version = "19.0.3";
+
+  src = fetchFromGitHub {
+    owner = "kodi-pvr";
+    repo = "pvr.hts";
+    rev = "${version}-${rel}";
+    sha256 = "sha256-kO+wRFt4MudYP9UOTaruRCWs/QMla+BYTRfSUdlVpR8=";
+  };
+
+  meta = with lib; {
+    homepage = "https://github.com/kodi-pvr/pvr.hts";
+    description = "Kodi's Tvheadend HTSP client addon";
+    platforms = platforms.all;
+    license = licenses.gpl2Only;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/pvr-iptvsimple/default.nix b/pkgs/applications/video/kodi/addons/pvr-iptvsimple/default.nix
new file mode 100644
index 0000000000000..17811c162920b
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/pvr-iptvsimple/default.nix
@@ -0,0 +1,36 @@
+{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub
+, xz, pugixml, zlib
+, inputstream-adaptive, inputstream-ffmpegdirect, inputstream-rtmp
+}:
+
+buildKodiBinaryAddon rec {
+  pname = "pvr-iptvsimple";
+  namespace = "pvr.iptvsimple";
+  version = "19.0.2";
+
+  src = fetchFromGitHub {
+    owner = "kodi-pvr";
+    repo = "pvr.iptvsimple";
+    rev = "${version}-${rel}";
+    sha256 = "sha256-WPLXESP5QvjroCygzMQc3+QKbsA05ri0oKvsqBQv8w0=";
+  };
+
+  extraBuildInputs = [
+    xz
+    pugixml
+    zlib
+  ];
+  propagatedBuildInputs = [
+    inputstream-adaptive
+    inputstream-ffmpegdirect
+    inputstream-rtmp
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/kodi-pvr/pvr.iptvsimple";
+    description = "Kodi's IPTV Simple client addon";
+    platforms = platforms.all;
+    license = licenses.gpl2Plus;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/requests-cache/default.nix b/pkgs/applications/video/kodi/addons/requests-cache/default.nix
new file mode 100644
index 0000000000000..de785ab9bb523
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/requests-cache/default.nix
@@ -0,0 +1,29 @@
+{ lib, buildKodiAddon, fetchzip, addonUpdateScript, requests }:
+buildKodiAddon rec {
+  pname = "requests-cache";
+  namespace = "script.module.requests-cache";
+  version = "0.5.2+matrix.2";
+
+  src = fetchzip {
+    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
+    sha256 = "0fgl4jayq6hbhqxg16nfy9qizwf54c8nvg0icv93knaj13zfzkz8";
+  };
+
+  propagatedBuildInputs = [
+    requests
+  ];
+
+  passthru = {
+    pythonPath = "lib";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.requests-cache";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://github.com/reclosedev/requests-cache";
+    description = "Persistent cache for requests library";
+    license = licenses.bsd2;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/requests/default.nix b/pkgs/applications/video/kodi/addons/requests/default.nix
new file mode 100644
index 0000000000000..c5759fcc325b8
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/requests/default.nix
@@ -0,0 +1,32 @@
+{ lib, buildKodiAddon, fetchzip, addonUpdateScript, certifi, chardet, idna, urllib3 }:
+buildKodiAddon rec {
+  pname = "requests";
+  namespace = "script.module.requests";
+  version = "2.25.1+matrix.1";
+
+  src = fetchzip {
+    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
+    sha256 = "00qhykizvspzfwgl7qz9cyxrazs54jgin40g49v5nzmjq3qf62hb";
+  };
+
+  propagatedBuildInputs = [
+    certifi
+    chardet
+    idna
+    urllib3
+  ];
+
+  passthru = {
+    pythonPath = "lib";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.requests";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "http://python-requests.org";
+    description = "Python HTTP for Humans";
+    license = licenses.asl20;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/routing/default.nix b/pkgs/applications/video/kodi/addons/routing/default.nix
new file mode 100644
index 0000000000000..a75e786cf1ffe
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/routing/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
+buildKodiAddon rec {
+  pname = "routing";
+  namespace = "script.module.routing";
+  version = "0.2.3+matrix.1";
+
+  src = fetchzip {
+    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
+    sha256 = "1qhp40xd8mbcvzwlamqw1j5l224ry086593948g24drpqiiyc8x6";
+  };
+
+  passthru = {
+    pythonPath = "lib";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.routing";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://github.com/tamland/kodi-plugin-routing";
+    description = "A routing module for kodi plugins";
+    license = licenses.gpl3Plus;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/signals/default.nix b/pkgs/applications/video/kodi/addons/signals/default.nix
new file mode 100644
index 0000000000000..b66b1e99a8bf3
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/signals/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
+buildKodiAddon rec {
+  pname = "signals";
+  namespace = "script.module.addon.signals";
+  version = "0.0.6+matrix.1";
+
+  src = fetchzip {
+    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
+    sha256 = "1qcjbakch8hvx02wc01zv014nmzgn6ahc4n2bj5mzr114ppd3hjs";
+  };
+
+  passthru= {
+    pythonPath = "lib";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.signals";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://github.com/ruuk/script.module.addon.signals";
+    description = "Provides signal/slot mechanism for inter-addon communication";
+    license = licenses.lgpl21Only;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/six/default.nix b/pkgs/applications/video/kodi/addons/six/default.nix
new file mode 100644
index 0000000000000..1742d1f6f0492
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/six/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
+
+buildKodiAddon rec {
+  pname = "six";
+  namespace = "script.module.six";
+  version = "1.15.0+matrix.1";
+
+  src = fetchzip {
+    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
+    sha256 = "0c8vb0c4vhknkqqgvzj8l2ddgcm4iah0ca686slxbxbp800cydnf";
+  };
+
+  passthru.updateScript = addonUpdateScript {
+    attrPath = "kodi.packages.six";
+  };
+
+  meta = with lib; {
+    homepage = "https://pypi.org/project/six/";
+    description = "Python 2 and 3 compatibility utilities";
+    license = licenses.mit;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/steam-controller/default.nix b/pkgs/applications/video/kodi/addons/steam-controller/default.nix
new file mode 100644
index 0000000000000..d2b79029f7ccc
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/steam-controller/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildKodiBinaryAddon, fetchFromGitHub, libusb1 }:
+buildKodiBinaryAddon rec {
+  pname = namespace;
+  namespace = "peripheral.steamcontroller";
+  version = "0.11.0";
+
+  src = fetchFromGitHub {
+    owner = "kodi-game";
+    repo = namespace;
+    rev = "f68140ca44f163a03d3a625d1f2005a6edef96cb";
+    sha256 = "09lm8i119xlsxxk0c64rnp8iw0crr90v7m8iwi9r31qdmxrdxpmg";
+  };
+
+  extraBuildInputs = [ libusb1 ];
+
+  meta = with lib; {
+    description = "Binary addon for steam controller.";
+    platforms = platforms.all;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/steam-launcher/default.nix b/pkgs/applications/video/kodi/addons/steam-launcher/default.nix
new file mode 100644
index 0000000000000..c4a695b8f8137
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/steam-launcher/default.nix
@@ -0,0 +1,29 @@
+{ lib, buildKodiAddon, fetchFromGitHub, steam }:
+buildKodiAddon {
+  pname = "steam-launcher";
+  namespace = "script.steam.launcher";
+  version = "3.5.1";
+
+  src = fetchFromGitHub rec {
+    owner = "teeedubb";
+    repo = owner + "-xbmc-repo";
+    rev = "8260bf9b464846a1f1965da495d2f2b7ceb81d55";
+    sha256 = "1fj3ry5s44nf1jzxk4bmnpa4b9p23nrpmpj2a4i6xf94h7jl7p5k";
+  };
+
+  propagatedBuildInputs = [ steam ];
+
+  meta = with lib; {
+    homepage = "https://forum.kodi.tv/showthread.php?tid=157499";
+    description = "Launch Steam in Big Picture Mode from Kodi";
+    longDescription = ''
+      This add-on will close/minimise Kodi, launch Steam in Big
+      Picture Mode and when Steam BPM is exited (either by quitting
+      Steam or returning to the desktop) Kodi will
+      restart/maximise. Running pre/post Steam scripts can be
+      configured via the addon.
+    '';
+    license = licenses.gpl2Only;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/steam-library/default.nix b/pkgs/applications/video/kodi/addons/steam-library/default.nix
new file mode 100644
index 0000000000000..fe772c9f732a9
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/steam-library/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildKodiAddon, fetchFromGitHub, requests, requests-cache, routing }:
+
+buildKodiAddon rec {
+  pname = "steam-library";
+  namespace = "plugin.program.steam.library";
+  version = "0.8.1";
+
+  src = fetchFromGitHub {
+    owner = "aanderse";
+    repo = namespace;
+    rev = "v${version}";
+    sha256 = "1ai8k55bamzkx7awk3dl8ksw93pan3h9b1xlylcldy7a0ddldzdg";
+  };
+
+  propagatedBuildInputs = [
+    requests
+    requests-cache
+    routing
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/aanderse/plugin.program.steam.library";
+    description = "View your entire Steam library right from Kodi";
+    license = licenses.gpl3Plus;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/svtplay/default.nix b/pkgs/applications/video/kodi/addons/svtplay/default.nix
new file mode 100644
index 0000000000000..db4fbb642c05c
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/svtplay/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildKodiAddon, fetchFromGitHub }:
+buildKodiAddon rec {
+  pname = "svtplay";
+  namespace = "plugin.video.svtplay";
+  version = "5.1.12";
+
+  src = fetchFromGitHub {
+    owner = "nilzen";
+    repo = "xbmc-" + pname;
+    rev = "v${version}";
+    sha256 = "04j1nhm7mh9chs995lz6bv1vsq5xzk7a7c0lmk4bnfv8jrfpj0w6";
+  };
+
+  meta = with lib; {
+    homepage = "https://forum.kodi.tv/showthread.php?tid=67110";
+    description = "Watch content from SVT Play";
+    longDescription = ''
+      With this addon you can stream content from SVT Play
+      (svtplay.se). The plugin fetches the video URL from the SVT
+      Play website and feeds it to the Kodi video player. HLS (m3u8)
+      is the preferred video format by the plugin.
+    '';
+    platforms = platforms.all;
+    license = licenses.gpl3Plus;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/urllib3/default.nix b/pkgs/applications/video/kodi/addons/urllib3/default.nix
new file mode 100644
index 0000000000000..de0fbb997654e
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/urllib3/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
+buildKodiAddon rec {
+  pname = "urllib3";
+  namespace = "script.module.urllib3";
+  version = "1.26.4+matrix.1";
+
+  src = fetchzip {
+    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
+    sha256 = "1d2k6gbsnhdadcl1xc7igz4m71z2fcnpln5ppfjv455cmkk110vf";
+  };
+
+  passthru = {
+    pythonPath = "lib";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.urllib3";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://urllib3.readthedocs.io/en/latest/";
+    description = "HTTP library with thread-safe connection pooling, file post, and more";
+    license = licenses.mit;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/vfs-libarchive/default.nix b/pkgs/applications/video/kodi/addons/vfs-libarchive/default.nix
new file mode 100644
index 0000000000000..2db17f17abad9
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/vfs-libarchive/default.nix
@@ -0,0 +1,22 @@
+{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub, libarchive, xz, bzip2, zlib, lz4, lzo, openssl }:
+buildKodiBinaryAddon rec {
+  pname = namespace;
+  namespace = "vfs.libarchive";
+  version = "2.0.0";
+
+  src = fetchFromGitHub {
+    owner = "xbmc";
+    repo = namespace;
+    rev = "${version}-${rel}";
+    sha256 = "1q62p1i6rvqk2zv6f1cpffkh95lgclys2xl4dwyhj3acmqdxd9i5";
+  };
+
+  extraBuildInputs = [ libarchive xz bzip2 zlib lz4 lzo openssl ];
+
+  meta = with lib; {
+    description = "LibArchive Virtual Filesystem add-on for Kodi";
+    license = licenses.gpl2Plus;
+    platforms = platforms.all;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/vfs-sftp/default.nix b/pkgs/applications/video/kodi/addons/vfs-sftp/default.nix
new file mode 100644
index 0000000000000..e41f008281ad8
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/vfs-sftp/default.nix
@@ -0,0 +1,22 @@
+{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub, openssl, libssh, zlib }:
+buildKodiBinaryAddon rec {
+  pname = namespace;
+  namespace = "vfs.sftp";
+  version = "2.0.0";
+
+  src = fetchFromGitHub {
+    owner = "xbmc";
+    repo = namespace;
+    rev = "${version}-${rel}";
+    sha256 = "06w74sh8yagrrp7a7rjaz3xrh1j3wdqald9c4b72c33gpk5997dk";
+  };
+
+  extraBuildInputs = [ openssl libssh zlib ];
+
+  meta = with lib; {
+    description = "SFTP Virtual Filesystem add-on for Kodi";
+    license = licenses.gpl2Plus;
+    platforms = platforms.all;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/websocket/default.nix b/pkgs/applications/video/kodi/addons/websocket/default.nix
new file mode 100644
index 0000000000000..423dfa73f34f8
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/websocket/default.nix
@@ -0,0 +1,30 @@
+{ lib, buildKodiAddon, fetchzip, addonUpdateScript, six, addonDir }:
+
+buildKodiAddon rec {
+  pname = "websocket";
+  namespace = "script.module.websocket";
+  version = "0.58.0+matrix.2";
+
+  src = fetchzip {
+    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
+    sha256 = "0j2fcrn3hc6207g0k0gx5ypj4j3ww9pd7rnlzq1fgdig00laa8y7";
+  };
+
+  propagatedBuildInputs = [
+    six
+  ];
+
+  passthru = {
+    pythonPath = "lib";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.websocket";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://github.com/websocket-client/websocket-client";
+    description = "A WebSocket client for Python";
+    license = licenses.lgpl2Only;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/youtube/default.nix b/pkgs/applications/video/kodi/addons/youtube/default.nix
new file mode 100644
index 0000000000000..090e09d55ef6d
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/youtube/default.nix
@@ -0,0 +1,32 @@
+{ lib, buildKodiAddon, fetchzip, addonUpdateScript, six, requests, inputstreamhelper }:
+
+buildKodiAddon rec {
+  pname = "youtube";
+  namespace = "plugin.video.youtube";
+  version = "6.8.18+matrix.1";
+
+  src = fetchzip {
+    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
+    sha256 = "F950rnE/YxwWI0ieHC2TdGNSfrQDHlStnxLbA6UjEaM=";
+  };
+
+  propagatedBuildInputs = [
+    six
+    requests
+    inputstreamhelper
+  ];
+
+  passthru = {
+    pythonPath = "resources/lib";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.youtube";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://github.com/anxdpanic/plugin.video.youtube";
+    description = "YouTube is one of the biggest video-sharing websites of the world";
+    license = licenses.gpl2Only;
+    maintainers = teams.kodi.members;
+  };
+}