about summary refs log tree commit diff
path: root/pkgs/applications/video
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/video')
-rw-r--r--pkgs/applications/video/jellyfin-mpv-shim/default.nix4
-rw-r--r--pkgs/applications/video/kodi/add-KODI_WEBSERVER_EXTRA_WHITELIST.patch88
-rw-r--r--pkgs/applications/video/kodi/addons/addon-update-script/default.nix2
-rw-r--r--pkgs/applications/video/kodi/addons/arrow/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/arteplussept/default.nix2
-rw-r--r--pkgs/applications/video/kodi/addons/certifi/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/chardet/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/dateutil/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/defusedxml/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/future/default.nix2
-rw-r--r--pkgs/applications/video/kodi/addons/idna/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/inputstream-adaptive/default.nix17
-rw-r--r--pkgs/applications/video/kodi/addons/inputstream-ffmpegdirect/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/inputstream-rtmp/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/inputstreamhelper/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/joystick/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/keymap/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/kodi-six/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/libretro-genplus/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/libretro-mgba/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/libretro-snes9x/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/libretro/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/myconnpy/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/pvr-hdhomerun/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/pvr-hts/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/pvr-iptvsimple/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/requests-cache/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/requests/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/routing/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/signals/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/simplejson/default.nix2
-rw-r--r--pkgs/applications/video/kodi/addons/six/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/steam-controller/default.nix6
-rw-r--r--pkgs/applications/video/kodi/addons/trakt-module/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/trakt/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/typing_extensions/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/urllib3/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/vfs-libarchive/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/vfs-sftp/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/visualization-waveform/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/websocket/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/youtube/default.nix4
-rw-r--r--pkgs/applications/video/kodi/unwrapped.nix47
-rw-r--r--pkgs/applications/video/media-downloader/default.nix4
-rw-r--r--pkgs/applications/video/mkvtoolnix/default.nix4
-rw-r--r--pkgs/applications/video/mpv/default.nix12
-rw-r--r--pkgs/applications/video/mpv/scripts/uosc.nix48
-rw-r--r--pkgs/applications/video/mpv/wrapper.nix3
-rw-r--r--pkgs/applications/video/obs-studio/plugins/advanced-scene-switcher/default.nix54
-rw-r--r--pkgs/applications/video/obs-studio/plugins/default.nix2
-rw-r--r--pkgs/applications/video/obs-studio/plugins/obs-hyperion/default.nix17
-rw-r--r--pkgs/applications/video/peek/default.nix4
-rw-r--r--pkgs/applications/video/youtube-tui/default.nix50
53 files changed, 286 insertions, 218 deletions
diff --git a/pkgs/applications/video/jellyfin-mpv-shim/default.nix b/pkgs/applications/video/jellyfin-mpv-shim/default.nix
index c1e0488c01425..81bfbe4a39b0c 100644
--- a/pkgs/applications/video/jellyfin-mpv-shim/default.nix
+++ b/pkgs/applications/video/jellyfin-mpv-shim/default.nix
@@ -18,11 +18,11 @@
 
 buildPythonApplication rec {
   pname = "jellyfin-mpv-shim";
-  version = "2.4.2";
+  version = "2.6.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-hz6uIzlVuocSZRDYLnJ3/OZ4UDNlavJFky4CuyggANI=";
+    sha256 = "sha256-90Z2vgYT/9hBQZgfXeY7l6sGwT5KEY8X4rZMgrbTwrM=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/video/kodi/add-KODI_WEBSERVER_EXTRA_WHITELIST.patch b/pkgs/applications/video/kodi/add-KODI_WEBSERVER_EXTRA_WHITELIST.patch
deleted file mode 100644
index ae221eff60450..0000000000000
--- a/pkgs/applications/video/kodi/add-KODI_WEBSERVER_EXTRA_WHITELIST.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From 620c3eb38f0dbea6e877e37e97508513e87a0732 Mon Sep 17 00:00:00 2001
-From: Jeremy Fleischman <jeremyfleischman@gmail.com>
-Date: Sun, 27 Mar 2022 00:44:52 -0700
-Subject: [PATCH] Add new KODI_WEBSERVER_EXTRA_WHITELIST cmake var to allow
- access to more directories
-
-(This is a backport of
-https://github.com/xbmc/xbmc/commit/a6dedce7ba1f03bdd83b019941d1e369a06f7888
-to Kodi 19.4 Matrix)
-
-This is useful for NixOS, which often ends up creating a `KODI_HOME`
-with symlinks to other files (including the chorus2 interface). Kodi's
-webserver cautiously refuses to follow these symlinks, and you end up
-getting 404s rather than the web page.
-
-See https://forum.kodi.tv/showthread.php?tid=366338&pid=3079493 for a
-discussion of this on the Kodi forum.
----
- CMakeLists.txt           | 1 +
- xbmc/CompileInfo.cpp.in  | 5 +++++
- xbmc/CompileInfo.h       | 1 +
- xbmc/utils/FileUtils.cpp | 6 +++++-
- 4 files changed, 12 insertions(+), 1 deletion(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 2d5369798df23..d5ef6d9390ef0 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -243,6 +243,7 @@ add_custom_command(OUTPUT ${CORE_BUILD_DIR}/xbmc/CompileInfo.cpp
-                                             -DAPP_BUILD_DATE=${APP_BUILD_DATE}
-                                             -DAPP_SHARED_LIBRARY_SUFFIX="${APP_SHARED_LIBRARY_SUFFIX}"
-                                             -Dprefix=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}
-+                                            -DKODI_WEBSERVER_EXTRA_WHITELIST="${KODI_WEBSERVER_EXTRA_WHITELIST}"
-                                             -P ${CMAKE_SOURCE_DIR}/cmake/scripts/common/GenerateVersionedFiles.cmake
-                    DEPENDS ${CMAKE_SOURCE_DIR}/version.txt
-                            export-files
-diff --git a/xbmc/CompileInfo.cpp.in b/xbmc/CompileInfo.cpp.in
-index f81fe77902236..4f19203a89cde 100644
---- a/xbmc/CompileInfo.cpp.in
-+++ b/xbmc/CompileInfo.cpp.in
-@@ -105,3 +105,8 @@ std::vector<std::string> CCompileInfo::GetAvailableWindowSystems()
- {
-   return StringUtils::Split("@CORE_PLATFORM_NAME_LC@", ' ');
- }
-+
-+const std::vector<std::string> CCompileInfo::GetWebserverExtraWhitelist()
-+{
-+  return StringUtils::Split("@KODI_WEBSERVER_EXTRA_WHITELIST@", ',');
-+}
-diff --git a/xbmc/CompileInfo.h b/xbmc/CompileInfo.h
-index 553a0194ee77f..e2521324e6576 100644
---- a/xbmc/CompileInfo.h
-+++ b/xbmc/CompileInfo.h
-@@ -32,4 +32,5 @@ class CCompileInfo
-   static const char* GetVersionCode();
-   static std::vector<std::string> GetAvailableWindowSystems();
-   static std::vector<ADDON::RepoInfo> LoadOfficialRepoInfos();
-+  static const std::vector<std::string> GetWebserverExtraWhitelist();
- };
-diff --git a/xbmc/utils/FileUtils.cpp b/xbmc/utils/FileUtils.cpp
-index e51f3d631c256..fc717c9608098 100644
---- a/xbmc/utils/FileUtils.cpp
-+++ b/xbmc/utils/FileUtils.cpp
-@@ -6,6 +6,7 @@
-  *  See LICENSES/README.md for more information.
-  */
- 
-+#include "CompileInfo.h"
- #include "FileUtils.h"
- #include "ServiceBroker.h"
- #include "guilib/GUIKeyboardFactory.h"
-@@ -261,12 +262,15 @@ bool CFileUtils::CheckFileAccessAllowed(const std::string &filePath)
-     "/.ssh/",
-   };
-   // ALLOW kodi paths
--  const std::vector<std::string> whitelist = {
-+  std::vector<std::string> whitelist = {
-     CSpecialProtocol::TranslatePath("special://home"),
-     CSpecialProtocol::TranslatePath("special://xbmc"),
-     CSpecialProtocol::TranslatePath("special://musicartistsinfo")
-   };
- 
-+  auto kodiExtraWhitelist = CCompileInfo::GetWebserverExtraWhitelist();
-+  whitelist.insert(whitelist.end(), kodiExtraWhitelist.begin(), kodiExtraWhitelist.end());
-+
-   // image urls come in the form of image://... sometimes with a / appended at the end
-   // and can be embedded in a music or video file image://music@...
-   // strip this off to get the real file path
diff --git a/pkgs/applications/video/kodi/addons/addon-update-script/default.nix b/pkgs/applications/video/kodi/addons/addon-update-script/default.nix
index 17c1d45783fa0..abcdefaf02dd6 100644
--- a/pkgs/applications/video/kodi/addons/addon-update-script/default.nix
+++ b/pkgs/applications/video/kodi/addons/addon-update-script/default.nix
@@ -9,7 +9,7 @@
 { attrPath }:
 
 let
-  url = "http://mirrors.kodi.tv/addons/matrix/addons.xml.gz";
+  url = "http://mirrors.kodi.tv/addons/nexus/addons.xml.gz";
   updateScript = writeShellScript "update.sh" ''
     set -ex
 
diff --git a/pkgs/applications/video/kodi/addons/arrow/default.nix b/pkgs/applications/video/kodi/addons/arrow/default.nix
index bca61e902eb74..931667d8a58a5 100644
--- a/pkgs/applications/video/kodi/addons/arrow/default.nix
+++ b/pkgs/applications/video/kodi/addons/arrow/default.nix
@@ -5,8 +5,8 @@ buildKodiAddon rec {
   version = "1.0.3.1";
 
   src = fetchzip {
-    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
-    sha256 = "0xa16sb2hls59l4gsg1xwb1qbkhcvbykq02l05n5rcm0alg80l3l";
+    url = "https://mirrors.kodi.tv/addons/nexus/script.module.arrow/script.module.arrow-${version}.zip";
+    sha256 = "sha256-dFCAHlWgslxsAVQAPP3aDM6Fw+I9PP0ITUVTKJY2QXU=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/applications/video/kodi/addons/arteplussept/default.nix b/pkgs/applications/video/kodi/addons/arteplussept/default.nix
index 1053ca11cb3c4..7d58625d2d71b 100644
--- a/pkgs/applications/video/kodi/addons/arteplussept/default.nix
+++ b/pkgs/applications/video/kodi/addons/arteplussept/default.nix
@@ -6,7 +6,7 @@ buildKodiAddon rec {
   version = "1.1.8";
 
   src = fetchzip {
-    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
+    url = "https://mirrors.kodi.tv/addons/nexus/${namespace}/${namespace}-${version}.zip";
     hash = "sha256-1f+oEHEhSsDMXH7WssSVjjuDjK3UNyMiNhaw7mh/xjI=";
   };
 
diff --git a/pkgs/applications/video/kodi/addons/certifi/default.nix b/pkgs/applications/video/kodi/addons/certifi/default.nix
index 7becbd2252de0..0e0699752a91b 100644
--- a/pkgs/applications/video/kodi/addons/certifi/default.nix
+++ b/pkgs/applications/video/kodi/addons/certifi/default.nix
@@ -5,8 +5,8 @@ buildKodiAddon rec {
   version = "2022.9.24";
 
   src = fetchzip {
-    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
-    sha256 = "kIPGEjmnHlgVb11W2RKBlrMy3/+kUOcQZiLCcnHCcno=";
+    url = "https://mirrors.kodi.tv/addons/nexus/${namespace}/${namespace}-${version}.zip";
+    sha256 = "sha256-kIPGEjmnHlgVb11W2RKBlrMy3/+kUOcQZiLCcnHCcno=";
   };
 
   passthru = {
diff --git a/pkgs/applications/video/kodi/addons/chardet/default.nix b/pkgs/applications/video/kodi/addons/chardet/default.nix
index fe482447cfa3e..0d20853412f5c 100644
--- a/pkgs/applications/video/kodi/addons/chardet/default.nix
+++ b/pkgs/applications/video/kodi/addons/chardet/default.nix
@@ -5,8 +5,8 @@ buildKodiAddon rec {
   version = "4.0.0+matrix.1";
 
   src = fetchzip {
-    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
-    sha256 = "1jsd165mb1b8jdan2jbjd3y3xa0xam2cxcccmwazkybpa0r6a7dj";
+    url = "https://mirrors.kodi.tv/addons/nexus/${namespace}/${namespace}-${version}.zip";
+    sha256 = "sha256-sh1lMlB3+fkVr4yxzkRVHag+/GhySWFVk2iFVYsJTcs=";
   };
 
   passthru = {
diff --git a/pkgs/applications/video/kodi/addons/dateutil/default.nix b/pkgs/applications/video/kodi/addons/dateutil/default.nix
index 94ca38dd08612..9adcf3303bb5c 100644
--- a/pkgs/applications/video/kodi/addons/dateutil/default.nix
+++ b/pkgs/applications/video/kodi/addons/dateutil/default.nix
@@ -6,8 +6,8 @@ buildKodiAddon rec {
   version = "2.8.2";
 
   src = fetchzip {
-    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
-    sha256 = "iQnyS0GjYcPbnBDUxmMrmDxHOA3K8RbTVke/HF4d5u4=";
+    url = "https://mirrors.kodi.tv/addons/nexus/${namespace}/${namespace}-${version}.zip";
+    sha256 = "sha256-iQnyS0GjYcPbnBDUxmMrmDxHOA3K8RbTVke/HF4d5u4=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/applications/video/kodi/addons/defusedxml/default.nix b/pkgs/applications/video/kodi/addons/defusedxml/default.nix
index 11738065ff601..12a9f82e3f6e2 100644
--- a/pkgs/applications/video/kodi/addons/defusedxml/default.nix
+++ b/pkgs/applications/video/kodi/addons/defusedxml/default.nix
@@ -6,8 +6,8 @@ buildKodiAddon rec {
   version = "0.6.0+matrix.1";
 
   src = fetchzip {
-    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
-    sha256 = "026i5rx9rmxcc18ixp6qhbryqdl4pn7cbwqicrishivan6apnacd";
+    url = "https://mirrors.kodi.tv/addons/nexus/${namespace}/${namespace}-${version}.zip";
+    sha256 = "sha256-jSl7lbFqR6hjZhHzxY69hDbs84LY3B5RYKzXnHou0Qg=";
   };
 
   passthru = {
diff --git a/pkgs/applications/video/kodi/addons/future/default.nix b/pkgs/applications/video/kodi/addons/future/default.nix
index 0f2815fe5f993..30a1db9d6b2b6 100644
--- a/pkgs/applications/video/kodi/addons/future/default.nix
+++ b/pkgs/applications/video/kodi/addons/future/default.nix
@@ -6,7 +6,7 @@ buildKodiAddon rec {
   version = "0.18.2+matrix.1";
 
   src = fetchzip {
-    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
+    url = "https://mirrors.kodi.tv/addons/nexus/${namespace}/${namespace}-${version}.zip";
     sha256 = "sha256-QBG7V70Dwmfq8ISILxGNvtmQT9fJp2e5gs2C9skRwIw=";
   };
 
diff --git a/pkgs/applications/video/kodi/addons/idna/default.nix b/pkgs/applications/video/kodi/addons/idna/default.nix
index 44bda1278bbd3..d752cb93b01ad 100644
--- a/pkgs/applications/video/kodi/addons/idna/default.nix
+++ b/pkgs/applications/video/kodi/addons/idna/default.nix
@@ -5,8 +5,8 @@ buildKodiAddon rec {
   version = "3.4.0";
 
   src = fetchzip {
-    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
-    sha256 = "wS1d1L18v4+RGwxDh7OpKRHB2A4qYwiq6b5mAz7l8Pk=";
+    url = "https://mirrors.kodi.tv/addons/nexus/${namespace}/${namespace}-${version}.zip";
+    sha256 = "sha256-wS1d1L18v4+RGwxDh7OpKRHB2A4qYwiq6b5mAz7l8Pk=";
   };
 
   passthru = {
diff --git a/pkgs/applications/video/kodi/addons/inputstream-adaptive/default.nix b/pkgs/applications/video/kodi/addons/inputstream-adaptive/default.nix
index 684e73a632a46..6f5a8cc85be40 100644
--- a/pkgs/applications/video/kodi/addons/inputstream-adaptive/default.nix
+++ b/pkgs/applications/video/kodi/addons/inputstream-adaptive/default.nix
@@ -1,16 +1,29 @@
 { stdenv, lib, rel, addonDir, buildKodiBinaryAddon, fetchFromGitHub, expat, glib, nspr, nss, gtest }:
+let
+  bento4 = fetchFromGitHub {
+    owner = "xbmc";
+    repo = "Bento4";
+    rev = "1.6.0-639-5-${rel}";
+    sha256 = "sha256-jjeBy3LmnN7hPjnbBSPcdtPD+MdbG+0kU8mekM2/ZFw=";
+  };
+in
 buildKodiBinaryAddon rec {
   pname = "inputstream-adaptive";
   namespace = "inputstream.adaptive";
-  version = "19.0.7";
+  version = "20.3.2";
 
   src = fetchFromGitHub {
     owner = "xbmc";
     repo = "inputstream.adaptive";
     rev = "${version}-${rel}";
-    sha256 = "sha256-2bQVTSMznh7soeL1VJJpXrlZd4ONmP9wq9pYLnwPnZE=";
+    sha256 = "sha256-QG0qBRbUJJgsRLS2cQIDeTDYLjqVD0dRaZ7pCxpxNcs=";
   };
 
+  extraCMakeFlags = [
+    "-DENABLE_INTERNAL_BENTO4=ON"
+    "-DBENTO4_URL=${bento4}"
+  ];
+
   extraNativeBuildInputs = [ gtest ];
 
   extraBuildInputs = [ expat ];
diff --git a/pkgs/applications/video/kodi/addons/inputstream-ffmpegdirect/default.nix b/pkgs/applications/video/kodi/addons/inputstream-ffmpegdirect/default.nix
index 520dafff0b748..92fc9dc553996 100644
--- a/pkgs/applications/video/kodi/addons/inputstream-ffmpegdirect/default.nix
+++ b/pkgs/applications/video/kodi/addons/inputstream-ffmpegdirect/default.nix
@@ -3,13 +3,13 @@
 buildKodiBinaryAddon rec {
   pname = "inputstream-ffmpegdirect";
   namespace = "inputstream.ffmpegdirect";
-  version = "19.0.3";
+  version = "20.5.0";
 
   src = fetchFromGitHub {
     owner = "xbmc";
     repo = "inputstream.ffmpegdirect";
     rev = "${version}-${rel}";
-    sha256 = "sha256-G1+WhF0iEOhgQPXPv0LjpLSvDk3JpkryaGJYuG+5P40=";
+    sha256 = "sha256-2Xa5q+o/AYDwG+JYeXTUfMTJk/kln16J8KRcXILNE6c=";
   };
 
   extraBuildInputs = [ bzip2 zlib kodi.ffmpeg ];
diff --git a/pkgs/applications/video/kodi/addons/inputstream-rtmp/default.nix b/pkgs/applications/video/kodi/addons/inputstream-rtmp/default.nix
index 0e3d06c3be57e..561ef2cc5577a 100644
--- a/pkgs/applications/video/kodi/addons/inputstream-rtmp/default.nix
+++ b/pkgs/applications/video/kodi/addons/inputstream-rtmp/default.nix
@@ -3,13 +3,13 @@
 buildKodiBinaryAddon rec {
   pname = "inputstream-rtmp";
   namespace = "inputstream.rtmp";
-  version = "19.0.1";
+  version = "20.3.0";
 
   src = fetchFromGitHub {
     owner = "xbmc";
     repo = "inputstream.rtmp";
     rev = "${version}-${rel}";
-    sha256 = "sha256-BNc9HJ4Yq1WTxTr7AUHBB9yDz8oefy2EtFRwVYVGcaY=";
+    sha256 = "sha256-VF2DpQXXU+rj76e/de5YB1T7dzeOjmO0dpsPVqEnMy4=";
   };
 
   extraBuildInputs = [ openssl rtmpdump zlib ];
diff --git a/pkgs/applications/video/kodi/addons/inputstreamhelper/default.nix b/pkgs/applications/video/kodi/addons/inputstreamhelper/default.nix
index 1319f72f4e975..500a48532cac8 100644
--- a/pkgs/applications/video/kodi/addons/inputstreamhelper/default.nix
+++ b/pkgs/applications/video/kodi/addons/inputstreamhelper/default.nix
@@ -5,8 +5,8 @@ buildKodiAddon rec {
   version = "0.5.10+matrix.1";
 
   src = fetchzip {
-    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
-    sha256 = "FcOktwtOT7kDM+3y9qPDk3xU1qVeCduyAdUzebtJzv4=";
+    url = "https://mirrors.kodi.tv/addons/nexus/${namespace}/${namespace}-${version}.zip";
+    sha256 = "sha256-FcOktwtOT7kDM+3y9qPDk3xU1qVeCduyAdUzebtJzv4=";
   };
 
   passthru = {
diff --git a/pkgs/applications/video/kodi/addons/joystick/default.nix b/pkgs/applications/video/kodi/addons/joystick/default.nix
index 310cd4d08345c..506bbf5f0f121 100644
--- a/pkgs/applications/video/kodi/addons/joystick/default.nix
+++ b/pkgs/applications/video/kodi/addons/joystick/default.nix
@@ -2,13 +2,13 @@
 buildKodiBinaryAddon rec {
   pname = namespace;
   namespace = "peripheral.joystick";
-  version = "19.0.1";
+  version = "20.1.0";
 
   src = fetchFromGitHub {
     owner = "xbmc";
     repo = namespace;
     rev = "${version}-${rel}";
-    sha256 = "sha256-jSz0AgxhbCIbbZJxm4oq22y/hqew949UsqEAPoqEnHA=";
+    sha256 = "sha256-LdagiN0bVanmGkAy9APbP1TW68KES7BIy5PXgUzksJQ=";
   };
 
   extraBuildInputs = [ tinyxml udev ];
diff --git a/pkgs/applications/video/kodi/addons/keymap/default.nix b/pkgs/applications/video/kodi/addons/keymap/default.nix
index 6c42bd78f45cf..a98b8d2d76687 100644
--- a/pkgs/applications/video/kodi/addons/keymap/default.nix
+++ b/pkgs/applications/video/kodi/addons/keymap/default.nix
@@ -6,8 +6,8 @@ buildKodiAddon rec {
   version = "1.1.4";
 
   src = fetchzip {
-    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
-    sha256 = "eWzMqsE8H0wUvPyd3wvjiaXEg4+sgkQ3CQYjE0VS+9g=";
+    url = "https://mirrors.kodi.tv/addons/nexus/${namespace}/${namespace}-${version}.zip";
+    sha256 = "sha256-eWzMqsE8H0wUvPyd3wvjiaXEg4+sgkQ3CQYjE0VS+9g=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/applications/video/kodi/addons/kodi-six/default.nix b/pkgs/applications/video/kodi/addons/kodi-six/default.nix
index 24404ef349e28..638b7c3b500b8 100644
--- a/pkgs/applications/video/kodi/addons/kodi-six/default.nix
+++ b/pkgs/applications/video/kodi/addons/kodi-six/default.nix
@@ -6,8 +6,8 @@ buildKodiAddon rec {
   version = "0.1.3.1";
 
   src = fetchzip {
-    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
-    sha256 = "14m232p9hx925pbk8knsg994m1nbpa5278zmcrnfblh4z84gjv4x";
+    url = "https://mirrors.kodi.tv/addons/nexus/${namespace}/${namespace}-${version}.zip";
+    sha256 = "sha256-nWz5CPoE0uVsZvWjI4q6y4ZKUnraTjTXLSJ1mK4YopI=";
   };
 
   passthru = {
diff --git a/pkgs/applications/video/kodi/addons/libretro-genplus/default.nix b/pkgs/applications/video/kodi/addons/libretro-genplus/default.nix
index 4e2a700101066..3d58ddd64303c 100644
--- a/pkgs/applications/video/kodi/addons/libretro-genplus/default.nix
+++ b/pkgs/applications/video/kodi/addons/libretro-genplus/default.nix
@@ -1,4 +1,4 @@
-{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub, libretro, genesis-plus-gx }:
+{ lib, buildKodiBinaryAddon, fetchFromGitHub, libretro, genesis-plus-gx }:
 
 buildKodiBinaryAddon rec {
   pname = "kodi-libretro-genplus";
@@ -8,7 +8,7 @@ buildKodiBinaryAddon rec {
   src = fetchFromGitHub {
     owner = "kodi-game";
     repo = "game.libretro.genplus";
-    rev = "${version}-${rel}";
+    rev = "${version}-Matrix";
     sha256 = "sha256-F3bt129lBZKlDtp7X0S0q10T9k9C2zNeHG+yIP3818Q=";
   };
 
diff --git a/pkgs/applications/video/kodi/addons/libretro-mgba/default.nix b/pkgs/applications/video/kodi/addons/libretro-mgba/default.nix
index f669e24f8bd49..231c769fa7523 100644
--- a/pkgs/applications/video/kodi/addons/libretro-mgba/default.nix
+++ b/pkgs/applications/video/kodi/addons/libretro-mgba/default.nix
@@ -1,4 +1,4 @@
-{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub, libretro, mgba }:
+{ lib, buildKodiBinaryAddon, fetchFromGitHub, libretro, mgba }:
 
 buildKodiBinaryAddon rec {
   pname = "kodi-libretro-mgba";
@@ -8,7 +8,7 @@ buildKodiBinaryAddon rec {
   src = fetchFromGitHub {
     owner = "kodi-game";
     repo = "game.libretro.mgba";
-    rev = "${version}-${rel}";
+    rev = "${version}-Matrix";
     sha256 = "sha256-lxpj6Y34apYcE22q4W3Anhigp79r4RgiJ36DbES1kzU=";
   };
 
diff --git a/pkgs/applications/video/kodi/addons/libretro-snes9x/default.nix b/pkgs/applications/video/kodi/addons/libretro-snes9x/default.nix
index 7994016b6cd5b..7b52988e80cff 100644
--- a/pkgs/applications/video/kodi/addons/libretro-snes9x/default.nix
+++ b/pkgs/applications/video/kodi/addons/libretro-snes9x/default.nix
@@ -1,4 +1,4 @@
-{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub, libretro, snes9x }:
+{ lib, buildKodiBinaryAddon, fetchFromGitHub, libretro, snes9x }:
 
 buildKodiBinaryAddon rec {
   pname = "kodi-libretro-snes9x";
@@ -8,7 +8,7 @@ buildKodiBinaryAddon rec {
   src = fetchFromGitHub {
     owner = "kodi-game";
     repo = "game.libretro.snes9x";
-    rev = "${version}-${rel}";
+    rev = "${version}-Matrix";
     sha256 = "sha256-LniZf8Gae4+4Rgc9OGhMCkOI3IA7CPjVrN/gbz9te38=";
   };
 
diff --git a/pkgs/applications/video/kodi/addons/libretro/default.nix b/pkgs/applications/video/kodi/addons/libretro/default.nix
index d1fc3d4afd2b0..208f832d69443 100644
--- a/pkgs/applications/video/kodi/addons/libretro/default.nix
+++ b/pkgs/applications/video/kodi/addons/libretro/default.nix
@@ -3,13 +3,13 @@
 buildKodiBinaryAddon rec {
   pname = "libretro";
   namespace = "game.libretro";
-  version = "19.0.0";
+  version = "20.1.0";
 
   src = fetchFromGitHub {
     owner = "kodi-game";
     repo = "game.libretro";
     rev = "${version}-${rel}";
-    sha256 = "1831wbbc4a545lr4mg1fm4sbx75k5lkrfqaa5fh308aar0nm974d";
+    sha256 = "sha256-RwaLGAJt13PLKy45HU64TvQFyY532WWq2YX34Eyu+6o=";
   };
 
   extraBuildInputs = [ tinyxml ];
diff --git a/pkgs/applications/video/kodi/addons/myconnpy/default.nix b/pkgs/applications/video/kodi/addons/myconnpy/default.nix
index e39625545f6ac..5a649b70413ed 100644
--- a/pkgs/applications/video/kodi/addons/myconnpy/default.nix
+++ b/pkgs/applications/video/kodi/addons/myconnpy/default.nix
@@ -5,8 +5,8 @@ buildKodiAddon rec {
   version = "8.0.18+matrix.1";
 
   src = fetchzip {
-    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
-    sha256 = "1cx3qdzw9lkkmbyvyrmc2i193is20fihn2sfl7kmv43f708vam0k";
+    url = "https://mirrors.kodi.tv/addons/nexus/${namespace}/${namespace}-${version}.zip";
+    sha256 = "sha256-E1S1EThukF3noU4LC6MDQseRQhSsZr/9qnPSxH/Do7M=";
   };
 
   passthru = {
diff --git a/pkgs/applications/video/kodi/addons/pvr-hdhomerun/default.nix b/pkgs/applications/video/kodi/addons/pvr-hdhomerun/default.nix
index 9c7041441ff1b..6308a6470acdd 100644
--- a/pkgs/applications/video/kodi/addons/pvr-hdhomerun/default.nix
+++ b/pkgs/applications/video/kodi/addons/pvr-hdhomerun/default.nix
@@ -2,13 +2,13 @@
 buildKodiBinaryAddon rec {
   pname = "pvr-hdhomerun";
   namespace = "pvr.hdhomerun";
-  version = "19.1.0";
+  version = "20.4.0";
 
   src = fetchFromGitHub {
     owner = "kodi-pvr";
     repo = "pvr.hdhomerun";
     rev = "${version}-${rel}";
-    sha256 = "sha256-sYVb4nhUz2j19yv3/cyLyUAC+1K0c05+iAMEfpPifjs=";
+    sha256 = "sha256-FKxoPD8t5JbouhvQtMVMFjk3O5zB9kVgrn0eC2RPDvQ=";
   };
 
   extraBuildInputs = [ jsoncpp libhdhomerun ];
diff --git a/pkgs/applications/video/kodi/addons/pvr-hts/default.nix b/pkgs/applications/video/kodi/addons/pvr-hts/default.nix
index 4b13e4a617ecf..fbace20ac6eaa 100644
--- a/pkgs/applications/video/kodi/addons/pvr-hts/default.nix
+++ b/pkgs/applications/video/kodi/addons/pvr-hts/default.nix
@@ -2,13 +2,13 @@
 buildKodiBinaryAddon rec {
   pname = "pvr-hts";
   namespace = "pvr.hts";
-  version = "19.0.6";
+  version = "20.6.0";
 
   src = fetchFromGitHub {
     owner = "kodi-pvr";
     repo = "pvr.hts";
     rev = "${version}-${rel}";
-    sha256 = "sha256-Lc3B1TdQ4oQIEIyKuQju+5cpInF5i2u4WFe3okFhe+I=";
+    sha256 = "sha256-D6t61/KUEQBMw5WrCfiWyFHnGbnpHWVKzzdgiRpviig=";
   };
 
   meta = with lib; {
diff --git a/pkgs/applications/video/kodi/addons/pvr-iptvsimple/default.nix b/pkgs/applications/video/kodi/addons/pvr-iptvsimple/default.nix
index 736ea03843bbb..1758818b4116f 100644
--- a/pkgs/applications/video/kodi/addons/pvr-iptvsimple/default.nix
+++ b/pkgs/applications/video/kodi/addons/pvr-iptvsimple/default.nix
@@ -6,13 +6,13 @@
 buildKodiBinaryAddon rec {
   pname = "pvr-iptvsimple";
   namespace = "pvr.iptvsimple";
-  version = "19.2.2";
+  version = "20.6.1";
 
   src = fetchFromGitHub {
     owner = "kodi-pvr";
     repo = "pvr.iptvsimple";
     rev = "${version}-${rel}";
-    sha256 = "sha256-snW6sgbdyGqdZtd7HU5FTf4Kx5/Zjk2fLLi0MS+9tTU=";
+    sha256 = "sha256-fJDMxNDXDijPL0sg86LB6nYQwjTdInf3dyOr8Lkydmg=";
   };
 
   extraBuildInputs = [
diff --git a/pkgs/applications/video/kodi/addons/requests-cache/default.nix b/pkgs/applications/video/kodi/addons/requests-cache/default.nix
index de785ab9bb523..6800ecde832ad 100644
--- a/pkgs/applications/video/kodi/addons/requests-cache/default.nix
+++ b/pkgs/applications/video/kodi/addons/requests-cache/default.nix
@@ -5,8 +5,8 @@ buildKodiAddon rec {
   version = "0.5.2+matrix.2";
 
   src = fetchzip {
-    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
-    sha256 = "0fgl4jayq6hbhqxg16nfy9qizwf54c8nvg0icv93knaj13zfzkz8";
+    url = "https://mirrors.kodi.tv/addons/nexus/${namespace}/${namespace}-${version}.zip";
+    sha256 = "sha256-6M/v/ghS2TnSZhG8bREjxfEfcfLOmvA6hgsa7JUk9Dk=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/applications/video/kodi/addons/requests/default.nix b/pkgs/applications/video/kodi/addons/requests/default.nix
index 3361a03f5d285..7f505f5532ef3 100644
--- a/pkgs/applications/video/kodi/addons/requests/default.nix
+++ b/pkgs/applications/video/kodi/addons/requests/default.nix
@@ -5,8 +5,8 @@ buildKodiAddon rec {
   version = "2.27.1+matrix.1";
 
   src = fetchzip {
-    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
-    sha256 = "QxxVT6XaEYQtAFkZde8EaTXzGO7cjG2pApQZcA32xA0=";
+    url = "https://mirrors.kodi.tv/addons/nexus/${namespace}/${namespace}-${version}.zip";
+    sha256 = "sha256-QxxVT6XaEYQtAFkZde8EaTXzGO7cjG2pApQZcA32xA0=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/applications/video/kodi/addons/routing/default.nix b/pkgs/applications/video/kodi/addons/routing/default.nix
index a75e786cf1ffe..a96c16b8629c2 100644
--- a/pkgs/applications/video/kodi/addons/routing/default.nix
+++ b/pkgs/applications/video/kodi/addons/routing/default.nix
@@ -5,8 +5,8 @@ buildKodiAddon rec {
   version = "0.2.3+matrix.1";
 
   src = fetchzip {
-    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
-    sha256 = "1qhp40xd8mbcvzwlamqw1j5l224ry086593948g24drpqiiyc8x6";
+    url = "https://mirrors.kodi.tv/addons/nexus/${namespace}/${namespace}-${version}.zip";
+    sha256 = "sha256-piPmY8Q3NyIeImmkYhDwmQhBiwwcV0X532xV1DogF+I=";
   };
 
   passthru = {
diff --git a/pkgs/applications/video/kodi/addons/signals/default.nix b/pkgs/applications/video/kodi/addons/signals/default.nix
index b66b1e99a8bf3..4d84bcafeeef2 100644
--- a/pkgs/applications/video/kodi/addons/signals/default.nix
+++ b/pkgs/applications/video/kodi/addons/signals/default.nix
@@ -5,8 +5,8 @@ buildKodiAddon rec {
   version = "0.0.6+matrix.1";
 
   src = fetchzip {
-    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
-    sha256 = "1qcjbakch8hvx02wc01zv014nmzgn6ahc4n2bj5mzr114ppd3hjs";
+    url = "https://mirrors.kodi.tv/addons/nexus/${namespace}/${namespace}-${version}.zip";
+    sha256 = "sha256-WsLR7iUh5F+LXMISBpWx71dLAtg/AMYF6BsiyKZakuE=";
   };
 
   passthru= {
diff --git a/pkgs/applications/video/kodi/addons/simplejson/default.nix b/pkgs/applications/video/kodi/addons/simplejson/default.nix
index e9293d6258dfb..fad6efec15868 100644
--- a/pkgs/applications/video/kodi/addons/simplejson/default.nix
+++ b/pkgs/applications/video/kodi/addons/simplejson/default.nix
@@ -6,7 +6,7 @@ buildKodiAddon rec {
   version = "3.17.0+matrix.2";
 
   src = fetchzip {
-    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
+    url = "https://mirrors.kodi.tv/addons/nexus/${namespace}/${namespace}-${version}.zip";
     sha256 = "sha256-XLE4x0qr3CFwWqh1BfSg9q+w6pWgFBXG7TyVJWeGQIs=";
   };
 
diff --git a/pkgs/applications/video/kodi/addons/six/default.nix b/pkgs/applications/video/kodi/addons/six/default.nix
index 1742d1f6f0492..5933c544735a5 100644
--- a/pkgs/applications/video/kodi/addons/six/default.nix
+++ b/pkgs/applications/video/kodi/addons/six/default.nix
@@ -6,8 +6,8 @@ buildKodiAddon rec {
   version = "1.15.0+matrix.1";
 
   src = fetchzip {
-    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
-    sha256 = "0c8vb0c4vhknkqqgvzj8l2ddgcm4iah0ca686slxbxbp800cydnf";
+    url = "https://mirrors.kodi.tv/addons/nexus/${namespace}/${namespace}-${version}.zip";
+    sha256 = "sha256-zjbPAEB39dWpNsgoBqCKpLLXmqBI/v0wnnbCTRhYGzE=";
   };
 
   passthru.updateScript = addonUpdateScript {
diff --git a/pkgs/applications/video/kodi/addons/steam-controller/default.nix b/pkgs/applications/video/kodi/addons/steam-controller/default.nix
index d2b79029f7ccc..20488d8a3ffc3 100644
--- a/pkgs/applications/video/kodi/addons/steam-controller/default.nix
+++ b/pkgs/applications/video/kodi/addons/steam-controller/default.nix
@@ -2,13 +2,13 @@
 buildKodiBinaryAddon rec {
   pname = namespace;
   namespace = "peripheral.steamcontroller";
-  version = "0.11.0";
+  version = "20.0.2";
 
   src = fetchFromGitHub {
     owner = "kodi-game";
     repo = namespace;
-    rev = "f68140ca44f163a03d3a625d1f2005a6edef96cb";
-    sha256 = "09lm8i119xlsxxk0c64rnp8iw0crr90v7m8iwi9r31qdmxrdxpmg";
+    rev = "b3174673c6feb34325975b6c007581c39bf3e4a5";
+    sha256 = "sha256-Q+eJfbD4NpAPANm9Mx9/pD29L5tdS4gxhQqNufufYdw=";
   };
 
   extraBuildInputs = [ libusb1 ];
diff --git a/pkgs/applications/video/kodi/addons/trakt-module/default.nix b/pkgs/applications/video/kodi/addons/trakt-module/default.nix
index ad7610e0f023a..1c9680147cb52 100644
--- a/pkgs/applications/video/kodi/addons/trakt-module/default.nix
+++ b/pkgs/applications/video/kodi/addons/trakt-module/default.nix
@@ -5,8 +5,8 @@ buildKodiAddon rec {
   version = "4.4.0+matrix.1";
 
   src = fetchzip {
-    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
-    sha256 = "19kjhrykx92sy67cajxjckzdwgq47ipwml0bx9vmdr9d191h14p8";
+    url = "https://mirrors.kodi.tv/addons/nexus/${namespace}/${namespace}-${version}.zip";
+    sha256 = "sha256-6JIAQwot5VZ36gvQym88BD/e/mSyS8WO8VqkPn2GcqY=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/applications/video/kodi/addons/trakt/default.nix b/pkgs/applications/video/kodi/addons/trakt/default.nix
index f2a662616ccf0..64113cb0139ba 100644
--- a/pkgs/applications/video/kodi/addons/trakt/default.nix
+++ b/pkgs/applications/video/kodi/addons/trakt/default.nix
@@ -5,8 +5,8 @@ buildKodiAddon rec {
   version = "3.5.0";
 
   src = fetchzip {
-    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
-    sha256 = "07fb0wjcr8ggidswrjs1r1hzi6grykiyi855bgm7pjzzk95kl99v";
+    url = "https://mirrors.kodi.tv/addons/nexus/${namespace}/${namespace}-${version}.zip";
+    sha256 = "sha256-OyU6S5r/y3vqW6Wg6OP0+Zn4YchBy8x1i++hzCQHyx0=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/applications/video/kodi/addons/typing_extensions/default.nix b/pkgs/applications/video/kodi/addons/typing_extensions/default.nix
index 0fddddfb1b601..f1c203a2b9581 100644
--- a/pkgs/applications/video/kodi/addons/typing_extensions/default.nix
+++ b/pkgs/applications/video/kodi/addons/typing_extensions/default.nix
@@ -5,8 +5,8 @@ buildKodiAddon rec {
   version = "3.7.4.3";
 
   src = fetchzip {
-    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
-    sha256 = "0p28hchj05hmccs6b2836kh4vqdqnl169409f2845d0nw9y4wkqq";
+    url = "https://mirrors.kodi.tv/addons/nexus/${namespace}/${namespace}-${version}.zip";
+    sha256 = "sha256-GE9OfOIWtEKQcAmQZAK1uOFN4DQDiWU0YxUWICGDSFw=";
   };
 
   passthru = {
diff --git a/pkgs/applications/video/kodi/addons/urllib3/default.nix b/pkgs/applications/video/kodi/addons/urllib3/default.nix
index 90900f3060738..02d7fde864cdc 100644
--- a/pkgs/applications/video/kodi/addons/urllib3/default.nix
+++ b/pkgs/applications/video/kodi/addons/urllib3/default.nix
@@ -6,8 +6,8 @@ buildKodiAddon rec {
   version = "1.26.13+matrix.1";
 
   src = fetchzip {
-    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
-    sha256 = "pymhHS1TqRv9o/3zBtmP8QSLMXSgFYno0VaR+YqhJqY=";
+    url = "https://mirrors.kodi.tv/addons/nexus/${namespace}/${namespace}-${version}.zip";
+    sha256 = "sha256-pymhHS1TqRv9o/3zBtmP8QSLMXSgFYno0VaR+YqhJqY=";
   };
 
   passthru = {
diff --git a/pkgs/applications/video/kodi/addons/vfs-libarchive/default.nix b/pkgs/applications/video/kodi/addons/vfs-libarchive/default.nix
index 4288d4e039a3e..674495f9d8486 100644
--- a/pkgs/applications/video/kodi/addons/vfs-libarchive/default.nix
+++ b/pkgs/applications/video/kodi/addons/vfs-libarchive/default.nix
@@ -2,13 +2,13 @@
 buildKodiBinaryAddon rec {
   pname = namespace;
   namespace = "vfs.libarchive";
-  version = "19.0.1";
+  version = "20.1.0";
 
   src = fetchFromGitHub {
     owner = "xbmc";
     repo = namespace;
     rev = "${version}-${rel}";
-    sha256 = "sha256-4sERFC/XBEE46n+iq6YJg/5Wz0+223tq4+O5cIf6X6E=";
+    sha256 = "sha256-D0eLH+G+qF5xLBBX/FdJC+gKNQpqSb7LjRmi/99rPNg=";
   };
 
   extraBuildInputs = [ libarchive xz bzip2 zlib lz4 lzo openssl ];
diff --git a/pkgs/applications/video/kodi/addons/vfs-sftp/default.nix b/pkgs/applications/video/kodi/addons/vfs-sftp/default.nix
index a9c37cc30a5c7..b8e2213fec3a7 100644
--- a/pkgs/applications/video/kodi/addons/vfs-sftp/default.nix
+++ b/pkgs/applications/video/kodi/addons/vfs-sftp/default.nix
@@ -2,13 +2,13 @@
 buildKodiBinaryAddon rec {
   pname = namespace;
   namespace = "vfs.sftp";
-  version = "19.0.1";
+  version = "20.1.0";
 
   src = fetchFromGitHub {
     owner = "xbmc";
     repo = namespace;
     rev = "${version}-${rel}";
-    sha256 = "sha256-UXycPqPEn3W5X3SQs1fxgkdV5PSkzs3pjYyuhAVngt8=";
+    sha256 = "sha256-Dv/C8PHaSx13JoGp77rQPtp5G5EH5tqKqzjwZZA7+80=";
   };
 
   extraBuildInputs = [ openssl libssh zlib ];
diff --git a/pkgs/applications/video/kodi/addons/visualization-waveform/default.nix b/pkgs/applications/video/kodi/addons/visualization-waveform/default.nix
index a4036be735d06..20acfad234ac3 100644
--- a/pkgs/applications/video/kodi/addons/visualization-waveform/default.nix
+++ b/pkgs/applications/video/kodi/addons/visualization-waveform/default.nix
@@ -3,13 +3,13 @@
 buildKodiBinaryAddon rec {
   pname = "visualization-waveform";
   namespace = "visualization.waveform";
-  version = "19.0.3";
+  version = "20.2.1";
 
   src = fetchFromGitHub {
     owner = "xbmc";
     repo = namespace;
     rev = "${version}-${rel}";
-    hash = "sha256-3mTfL1UjPLDKardJy4IDNyzvHnkF//4nmWInOxP/XhQ=";
+    hash = "sha256-e1SIpMmfnS92X4f114MKch4o9Ke80aIzw6OQPrEb8d0=";
   };
 
   extraBuildInputs = [ pkg-config libGL ];
diff --git a/pkgs/applications/video/kodi/addons/websocket/default.nix b/pkgs/applications/video/kodi/addons/websocket/default.nix
index 423dfa73f34f8..9a15ab0a49470 100644
--- a/pkgs/applications/video/kodi/addons/websocket/default.nix
+++ b/pkgs/applications/video/kodi/addons/websocket/default.nix
@@ -6,8 +6,8 @@ buildKodiAddon rec {
   version = "0.58.0+matrix.2";
 
   src = fetchzip {
-    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
-    sha256 = "0j2fcrn3hc6207g0k0gx5ypj4j3ww9pd7rnlzq1fgdig00laa8y7";
+    url = "https://mirrors.kodi.tv/addons/nexus/${namespace}/${namespace}-${version}.zip";
+    sha256 = "sha256-xyOlKAAvtucC/tTm027ifEgiry/9gQneAcIwOGxmTkg=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/applications/video/kodi/addons/youtube/default.nix b/pkgs/applications/video/kodi/addons/youtube/default.nix
index 8dab69bb56ac3..d256dad39343f 100644
--- a/pkgs/applications/video/kodi/addons/youtube/default.nix
+++ b/pkgs/applications/video/kodi/addons/youtube/default.nix
@@ -6,8 +6,8 @@ buildKodiAddon rec {
   version = "6.8.24+matrix.1";
 
   src = fetchzip {
-    url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
-    sha256 = "/yQML2iK5jcIhN6RJC+WJ8EnH640qFJFdaaVeGPEg9U=";
+    url = "https://mirrors.kodi.tv/addons/nexus/${namespace}/${namespace}-${version}.zip";
+    sha256 = "sha256-/yQML2iK5jcIhN6RJC+WJ8EnH640qFJFdaaVeGPEg9U=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/applications/video/kodi/unwrapped.nix b/pkgs/applications/video/kodi/unwrapped.nix
index 05e594d80aa23..1a3b8135e0177 100644
--- a/pkgs/applications/video/kodi/unwrapped.nix
+++ b/pkgs/applications/video/kodi/unwrapped.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, fetchFromGitHub, fetchpatch, autoconf, automake, libtool, makeWrapper
+{ stdenv, lib, fetchFromGitHub, autoconf, automake, libtool, makeWrapper
 , pkg-config, cmake, yasm, python3Packages
 , libxcrypt, libgcrypt, libgpg-error, libunistring
 , boost, avahi, lame
@@ -38,25 +38,27 @@ assert usbSupport -> !udevSupport; # libusb-compat-0_1 won't be used if udev is
 assert gbmSupport || waylandSupport || x11Support;
 
 let
-  kodiReleaseDate = "20221204";
-  kodiVersion = "19.5";
-  rel = "Matrix";
+  kodiReleaseDate = "20230115";
+  kodiVersion = "20.0";
+  rel = "Nexus";
 
   kodi_src = fetchFromGitHub {
     owner  = "xbmc";
     repo   = "xbmc";
     rev    = "${kodiVersion}-${rel}";
-    sha256 = "sha256-vprhEPxYpY3/AsUgvPNnhBlh0Dl73ekALAblHaUKzd0=";
+    sha256 = "sha256-0BkbA1iovouwjQVtiKFw3+64i7sMWZNiCUfOQ0EsslY=";
   };
 
+  # see https://github.com/xbmc/xbmc/blob/${kodiVersion}-${rel}/tools/depends/target/ to get suggested versions for all dependencies
+
   ffmpeg = stdenv.mkDerivation rec {
     pname = "kodi-ffmpeg";
-    version = "4.3.2"; # see https://github.com/xbmc/xbmc/blob/${kodiVersion}-${rel}/tools/depends/target/ffmpeg/FFMPEG-VERSION
+    version = "4.4.1";
     src = fetchFromGitHub {
       owner   = "xbmc";
       repo    = "FFmpeg";
-      rev     = "${version}-${rel}-19.2";
-      sha256  = "14s215sgc93ds1mrdbkgb7fvy94lpgv2ldricyxzis0gbzqfgs4f";
+      rev     = "${version}-${rel}-Alpha1";
+      sha256  = "sha256-EQHmmWnDw+/udKYq7Nrf00nL7I5XWUtmzdauDryfTII=";
     };
     preConfigure = ''
       cp ${kodi_src}/tools/depends/target/ffmpeg/{CMakeLists.txt,*.cmake} .
@@ -79,22 +81,22 @@ let
   libdvdcss = fetchFromGitHub {
     owner = "xbmc";
     repo = "libdvdcss";
-    rev = "1.4.2-Leia-Beta-5";
-    sha256 = "0j41ydzx0imaix069s3z07xqw9q95k7llh06fc27dcn6f7b8ydyl";
+    rev = "1.4.3-Next-Nexus-Alpha2-2";
+    sha256 = "sha256-CJMGH50mNAkovccNcol5ArF3zUnZKfbVB9EXyQgu5k4=";
   };
 
   libdvdnav = fetchFromGitHub {
     owner = "xbmc";
     repo = "libdvdnav";
-    rev = "6.0.0-Leia-Alpha-3";
-    sha256 = "0qwlf4lgahxqxk1r2pzl866mi03pbp7l1fc0rk522sc0ak2s9jhb";
+    rev = "6.1.1-Next-Nexus-Alpha2-2";
+    sha256 = "sha256-m8SCjOokVbwJ7eVfYKHap1pQjVbI+BXaoxhGZQIg0+k=";
   };
 
   libdvdread = fetchFromGitHub {
     owner = "xbmc";
     repo = "libdvdread";
-    rev = "6.0.0-Leia-Alpha-3";
-    sha256 = "1xxn01mhkdnp10cqdr357wx77vyzfb5glqpqyg8m0skyi75aii59";
+    rev = "6.1.3-Next-Nexus-Alpha2-2";
+    sha256 = "sha256-AphBQhXud+a6wm52zjzC5biz53NnqWdgpL2QDt2ZuXc=";
   };
 
   kodi_platforms = lib.optional gbmSupport "gbm"
@@ -107,22 +109,6 @@ in stdenv.mkDerivation {
 
     src = kodi_src;
 
-    patches = [
-      # This is a backport of
-      # https://github.com/xbmc/xbmc/commit/a6dedce7ba1f03bdd83b019941d1e369a06f7888
-      # to Kodi 19.4 Matrix.
-      # This can be removed once a new major release of Kodi comes out and we upgrade
-      # to it.
-      ./add-KODI_WEBSERVER_EXTRA_WHITELIST.patch
-
-      # A patch to fix build until the next major release of Kodi comes out and we upgrade
-      # https://github.com/xbmc/xbmc/pull/22291
-      (fetchpatch {
-        url = "https://github.com/xbmc/xbmc/commit/5449652abf0bb9dddd0d796de4120e60f19f89a5.patch";
-        sha256 = "sha256-vqX08dTSPhIur4aVu2BzXEpAxMOjaadwRNI43GSV9Og=";
-      })
-    ];
-
     buildInputs = [
       gnutls libidn libtasn1 nasm p11-kit
       libxml2 python3Packages.python
@@ -196,6 +182,7 @@ in stdenv.mkDerivation {
       "-DGIT_VERSION=${kodiReleaseDate}"
       "-DENABLE_EVENTCLIENTS=ON"
       "-DENABLE_INTERNAL_CROSSGUID=OFF"
+      "-DENABLE_INTERNAL_RapidJSON=OFF"
       "-DENABLE_OPTICAL=ON"
       "-DLIRC_DEVICE=/run/lirc/lircd"
       "-DSWIG_EXECUTABLE=${buildPackages.swig}/bin/swig"
diff --git a/pkgs/applications/video/media-downloader/default.nix b/pkgs/applications/video/media-downloader/default.nix
index 1b62c89c6ae8c..ab7f9030faa8b 100644
--- a/pkgs/applications/video/media-downloader/default.nix
+++ b/pkgs/applications/video/media-downloader/default.nix
@@ -11,13 +11,13 @@
 
 stdenv.mkDerivation rec {
   pname = "media-downloader";
-  version = "2.8.0";
+  version = "2.9.0";
 
   src = fetchFromGitHub {
     owner = "mhogomchungu";
     repo = pname;
     rev = "${version}";
-    sha256 = "sha256-RMZG+rPbwJFL2AzEZlTrc8/bQCx8CWCWppEBjCj5hnU=";
+    sha256 = "sha256-3tVOyIwdGcSVnEJWQWh6HIsjY6uEzWkTs45qf81r/+0=";
   };
 
   nativeBuildInputs = [ cmake qt5.wrapQtAppsHook ];
diff --git a/pkgs/applications/video/mkvtoolnix/default.nix b/pkgs/applications/video/mkvtoolnix/default.nix
index bce50b43a07c4..3befb8534916e 100644
--- a/pkgs/applications/video/mkvtoolnix/default.nix
+++ b/pkgs/applications/video/mkvtoolnix/default.nix
@@ -47,13 +47,13 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "mkvtoolnix";
-  version = "73.0.0";
+  version = "74.0.0";
 
   src = fetchFromGitLab {
     owner = "mbunkus";
     repo = "mkvtoolnix";
     rev = "release-${version}";
-    sha256 = "HGoT3t/ooRMiyjUkHnvVGOB04IU5U8VEKDixhE57kR8=";
+    sha256 = "sha256-p8rIAHSqYCOlNbuxisQlIkMh2OArc+MOYn1kgC5kJsc=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/video/mpv/default.nix b/pkgs/applications/video/mpv/default.nix
index 28e0d1d469a07..0fa8486e15b0a 100644
--- a/pkgs/applications/video/mpv/default.nix
+++ b/pkgs/applications/video/mpv/default.nix
@@ -66,7 +66,7 @@
 , sdl2Support        ? true,           SDL2
 , sixelSupport       ? false,          libsixel
 , speexSupport       ? true,           speex
-, swiftSupport       ? false,          swift
+, swiftSupport       ? stdenv.isDarwin && stdenv.isAarch64, swift
 , theoraSupport      ? true,           libtheora
 , vaapiSupport       ? stdenv.isLinux, libva
 , vapoursynthSupport ? false,          vapoursynth
@@ -78,7 +78,7 @@
 }:
 
 let
-  inherit (darwin.apple_sdk.frameworks) CoreFoundation Cocoa CoreAudio MediaPlayer;
+  inherit (darwin.apple_sdk_11_0.frameworks) AVFoundation CoreFoundation CoreMedia Cocoa CoreAudio MediaPlayer;
   luaEnv = lua.withPackages (ps: with ps; [ luasocket ]);
 in stdenv.mkDerivation (self: {
   pname = "mpv";
@@ -99,6 +99,11 @@ in stdenv.mkDerivation (self: {
 
   NIX_LDFLAGS = lib.optionalString x11Support "-lX11 -lXext ";
 
+  preConfigure = lib.optionalString swiftSupport ''
+    # Ensure we reference 'lib' (not 'out') of Swift.
+    export SWIFT_LIB_DYNAMIC=${lib.getLib swift.swift}/lib/swift/macosx
+  '';
+
   mesonFlags = [
     (lib.mesonOption "default_library" "shared")
     (lib.mesonBool "libmpv" true)
@@ -167,7 +172,8 @@ in stdenv.mkDerivation (self: {
     ++ lib.optionals zimgSupport        [ zimg ]
     ++ lib.optionals stdenv.isLinux     [ nv-codec-headers ]
     ++ lib.optionals stdenv.isDarwin    [ libiconv ]
-    ++ lib.optionals stdenv.isDarwin    [ CoreFoundation Cocoa CoreAudio MediaPlayer ];
+    ++ lib.optionals stdenv.isDarwin    [ CoreFoundation Cocoa CoreAudio MediaPlayer ]
+    ++ lib.optionals (stdenv.isDarwin && swiftSupport) [ AVFoundation CoreMedia ];
 
   postBuild = lib.optionalString stdenv.isDarwin ''
     pushd .. # Must be run from the source dir because it uses relative paths
diff --git a/pkgs/applications/video/mpv/scripts/uosc.nix b/pkgs/applications/video/mpv/scripts/uosc.nix
new file mode 100644
index 0000000000000..1a486dbf556d4
--- /dev/null
+++ b/pkgs/applications/video/mpv/scripts/uosc.nix
@@ -0,0 +1,48 @@
+{ stdenvNoCC, lib, fetchFromGitHub, makeFontsConf }:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "uosc";
+  version = "4.6.0";
+
+  src = fetchFromGitHub {
+    owner = "tomasklaen";
+    repo = "uosc";
+    rev = finalAttrs.version;
+    hash = "sha256-AxApKlSaRLPl6VsXsARfaT3kWDK6AB2AAEmIHYiuFaM=";
+  };
+
+  postPatch = ''
+    substituteInPlace scripts/uosc.lua \
+      --replace "mp.find_config_file('scripts')" "\"$out/share/mpv/scripts\""
+  '';
+
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/mpv/
+    cp -r scripts $out/share/mpv
+    cp -r fonts $out/share
+
+    runHook postInstall
+  '';
+
+  passthru.scriptName = "uosc.lua";
+  # the script uses custom "texture" fonts as the background for ui elements.
+  # In order for mpv to find them, we need to adjust the fontconfig search path.
+  passthru.extraWrapperArgs = [
+    "--set"
+    "FONTCONFIG_FILE"
+    (toString (makeFontsConf {
+      fontDirectories = [ "${finalAttrs.finalPackage}/share/fonts" ];
+    }))
+  ];
+
+  meta = with lib; {
+    description = "Feature-rich minimalist proximity-based UI for MPV player";
+    homepage = "https://github.com/tomasklaen/uosc";
+    license = licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ apfelkuchen6 ];
+  };
+})
diff --git a/pkgs/applications/video/mpv/wrapper.nix b/pkgs/applications/video/mpv/wrapper.nix
index e9be744ed01c9..0dd735071f005 100644
--- a/pkgs/applications/video/mpv/wrapper.nix
+++ b/pkgs/applications/video/mpv/wrapper.nix
@@ -18,6 +18,7 @@ let
     # expected to have a `scriptName` passthru attribute that points to the
     # name of the script that would reside in the script's derivation's
     # `$out/share/mpv/scripts/`.
+    # A script can optionally also provide an `extraWrapperArgs` passthru attribute.
     scripts ? [],
     extraUmpvWrapperArgs ? []
   }:
@@ -49,6 +50,8 @@ let
           # attribute of the script derivation from the `scripts`
           "--script=${script}/share/mpv/scripts/${script.scriptName}"
         ]
+        # scripts can also set the `extraWrapperArgs` passthru
+        ++ (script.extraWrapperArgs or [])
       ) scripts
     )) ++ extraMakeWrapperArgs)
     ;
diff --git a/pkgs/applications/video/obs-studio/plugins/advanced-scene-switcher/default.nix b/pkgs/applications/video/obs-studio/plugins/advanced-scene-switcher/default.nix
new file mode 100644
index 0000000000000..ffd7cd600d56e
--- /dev/null
+++ b/pkgs/applications/video/obs-studio/plugins/advanced-scene-switcher/default.nix
@@ -0,0 +1,54 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, asio
+, cmake
+, curl
+, obs-studio
+, opencv
+, procps
+, qtbase
+, websocketpp
+, xorg
+}:
+
+stdenv.mkDerivation rec {
+  pname = "advanced-scene-switcher";
+  version = "1.20.5";
+
+  src = fetchFromGitHub {
+    owner = "WarmUpTill";
+    repo = "SceneSwitcher";
+    rev = version;
+    sha256 = "04k7f7v756vdsan95g73cc29lrs61jis738v37a3ihi3ivps3ma3";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [
+    asio
+    curl
+    obs-studio
+    opencv
+    procps
+    qtbase
+    websocketpp
+    xorg.libXScrnSaver
+  ];
+
+  dontWrapQtApps = true;
+
+  postInstall = ''
+    mkdir $out/lib $out/share
+    mv $out/obs-plugins/64bit $out/lib/obs-plugins
+    mv $out/data $out/share/obs
+  '';
+
+  meta = {
+    description = "An automated scene switcher for OBS Studio";
+    homepage = "https://github.com/WarmUpTill/SceneSwitcher";
+    maintainers = with lib.maintainers; [ paveloom ];
+    license = lib.licenses.gpl2Plus;
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/pkgs/applications/video/obs-studio/plugins/default.nix b/pkgs/applications/video/obs-studio/plugins/default.nix
index c796b2d84fa05..049636dd59d31 100644
--- a/pkgs/applications/video/obs-studio/plugins/default.nix
+++ b/pkgs/applications/video/obs-studio/plugins/default.nix
@@ -6,6 +6,8 @@
 # - Add plugin to it's own directory (because of future patches).
 
 {
+  advanced-scene-switcher = qt6Packages.callPackage ./advanced-scene-switcher { };
+
   droidcam-obs = callPackage ./droidcam-obs { };
 
   input-overlay = qt6Packages.callPackage ./input-overlay.nix { };
diff --git a/pkgs/applications/video/obs-studio/plugins/obs-hyperion/default.nix b/pkgs/applications/video/obs-studio/plugins/obs-hyperion/default.nix
index 8a3af27c90753..c92bdd9346c86 100644
--- a/pkgs/applications/video/obs-studio/plugins/obs-hyperion/default.nix
+++ b/pkgs/applications/video/obs-studio/plugins/obs-hyperion/default.nix
@@ -3,35 +3,28 @@
 
 stdenv.mkDerivation rec {
   pname = "obs-hyperion";
-  version = "1.0.1";
+  version = "1.0.2";
 
   src = fetchFromGitHub {
     owner = "hyperion-project";
     repo = "hyperion-obs-plugin";
     rev = version;
-    sha256 = "sha256-pfWfJWuIoa+74u5J76/GE+OuHkksbwOAPfsR9OGX3L4=";
+    sha256 = "sha256-UAfjafoZhhhHRSo+eUBLhHaCmn2GYFcYyRb9wHIp/9I=";
   };
 
-  nativeBuildInputs = [ cmake pkg-config ];
-  buildInputs = [ obs-studio libGL qtbase ];
+  nativeBuildInputs = [ cmake flatbuffers pkg-config ];
+  buildInputs = [ obs-studio flatbuffers libGL qtbase ];
 
   dontWrapQtApps = true;
 
   cmakeFlags = [
     "-DOBS_SOURCE=${obs-studio.src}"
     "-DGLOBAL_INSTALLATION=ON"
+    "-DUSE_SYSTEM_FLATBUFFERS_LIBS=ON"
   ];
 
   preConfigure = ''
-    # https://github.com/hyperion-project/hyperion-obs-plugin/issues/7
     rm -rf external/flatbuffers
-    cp -r ${flatbuffers.src} external/flatbuffers
-    chmod -R a+w external
-  '';
-
-  postInstall = ''
-    # Remove flatbuffers install
-    rm -rf $out/bin $out/lib/{libflatbuffers.a,cmake,pkgconfig} $out/include
   '';
 
   meta = with lib; {
diff --git a/pkgs/applications/video/peek/default.nix b/pkgs/applications/video/peek/default.nix
index f2b5f6c504ab9..b8dff4f1af773 100644
--- a/pkgs/applications/video/peek/default.nix
+++ b/pkgs/applications/video/peek/default.nix
@@ -17,7 +17,7 @@
 , glib
 , cairo
 , keybinder3
-, ffmpeg
+, ffmpeg-full
 , python3
 , libxml2
 , gst_all_1
@@ -75,7 +75,7 @@ stdenv.mkDerivation rec {
   '';
 
   preFixup = ''
-    gappsWrapperArgs+=(--prefix PATH : ${lib.makeBinPath [ which ffmpeg gifski ]})
+    gappsWrapperArgs+=(--prefix PATH : ${lib.makeBinPath [ which ffmpeg-full gifski ]})
   '';
 
   passthru = {
diff --git a/pkgs/applications/video/youtube-tui/default.nix b/pkgs/applications/video/youtube-tui/default.nix
new file mode 100644
index 0000000000000..1ecea6c321839
--- /dev/null
+++ b/pkgs/applications/video/youtube-tui/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, rustPlatform
+, fetchFromGitHub
+, pkg-config
+, openssl
+, xorg
+, stdenv
+, python3
+, libsixel
+, CoreFoundation
+, Security
+, AppKit
+,
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "youtube-tui";
+  version = "0.7.0";
+
+  src = fetchFromGitHub {
+    owner = "Siriusmart";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-YQj+hmNh8rqP7bKeFDQhZIf79WG7vqg31oReb0jrmg4=";
+  };
+
+  cargoHash = "sha256-qcWuh8qaOQBBebdX3D01k5yXZfifbFC+ZP0d6bJeOr0=";
+
+  nativeBuildInputs = [
+    pkg-config
+    python3
+  ];
+
+  buildInputs = [
+    openssl
+    xorg.libxcb
+    libsixel
+  ] ++ lib.optionals stdenv.isDarwin [
+    CoreFoundation
+    Security
+    AppKit
+  ];
+
+  meta = with lib; {
+    description = "An aesthetically pleasing YouTube TUI written in Rust";
+    homepage = "https://siriusmart.github.io/youtube-tui";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ Ruixi-rebirth ];
+  };
+}