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/alass/default.nix2
-rw-r--r--pkgs/applications/video/anilibria-winmaclinux/default.nix4
-rw-r--r--pkgs/applications/video/animdl/default.nix2
-rw-r--r--pkgs/applications/video/anime-downloader/default.nix2
-rw-r--r--pkgs/applications/video/bino3d/default.nix55
-rw-r--r--pkgs/applications/video/bombono/default.nix41
-rw-r--r--pkgs/applications/video/byzanz/default.nix4
-rw-r--r--pkgs/applications/video/catt/default.nix3
-rw-r--r--pkgs/applications/video/ccextractor/default.nix71
-rw-r--r--pkgs/applications/video/clapper/default.nix7
-rw-r--r--pkgs/applications/video/coriander/default.nix45
-rw-r--r--pkgs/applications/video/davinci-resolve/default.nix8
-rw-r--r--pkgs/applications/video/deface/default.nix1
-rw-r--r--pkgs/applications/video/devede/default.nix2
-rw-r--r--pkgs/applications/video/dmlive/default.nix8
-rw-r--r--pkgs/applications/video/dvdstyler/default.nix4
-rw-r--r--pkgs/applications/video/epgstation/default.nix1
-rw-r--r--pkgs/applications/video/ffmpeg-normalize/default.nix2
-rw-r--r--pkgs/applications/video/filebot/default.nix4
-rw-r--r--pkgs/applications/video/freetube/default.nix27
-rw-r--r--pkgs/applications/video/frigate/default.nix13
-rw-r--r--pkgs/applications/video/frigate/mpl-3.9.0.patch42
-rw-r--r--pkgs/applications/video/glaxnimate/default.nix2
-rw-r--r--pkgs/applications/video/gnome-mplayer/default.nix2
-rw-r--r--pkgs/applications/video/go-chromecast/default.nix2
-rw-r--r--pkgs/applications/video/gpac/default.nix99
-rw-r--r--pkgs/applications/video/gpu-screen-recorder/0001-Don-t-install-systemd-unit-files-using-absolute-path.patch25
-rw-r--r--pkgs/applications/video/gpu-screen-recorder/default.nix31
-rw-r--r--pkgs/applications/video/gpu-screen-recorder/gpu-screen-recorder-gtk.nix45
-rw-r--r--pkgs/applications/video/handbrake/default.nix16
-rw-r--r--pkgs/applications/video/hyperion-ng/default.nix2
-rw-r--r--pkgs/applications/video/hypnotix/default.nix10
-rw-r--r--pkgs/applications/video/jellyfin-mpv-shim/default.nix2
-rw-r--r--pkgs/applications/video/jftui/default.nix2
-rw-r--r--pkgs/applications/video/kaffeine/default.nix1
-rw-r--r--pkgs/applications/video/kodi/addons/inputstreamhelper/default.nix9
-rw-r--r--pkgs/applications/video/kodi/addons/jellyfin/default.nix29
-rw-r--r--pkgs/applications/video/kodi/addons/jellyfin/no-strict-zip-timestamp.patch15
-rw-r--r--pkgs/applications/video/kodi/addons/orftvthek/default.nix14
-rw-r--r--pkgs/applications/video/kodi/addons/osmc-skin/default.nix2
-rw-r--r--pkgs/applications/video/kodi/addons/pdfreader/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/pvr-vdr-vnsi/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/sendtokodi/default.nix15
-rw-r--r--pkgs/applications/video/kodi/addons/sendtokodi/use-packaged-yt-dlp.patch (renamed from pkgs/applications/video/kodi/addons/sendtokodi/use-packaged-deps.patch)16
-rw-r--r--pkgs/applications/video/kodi/addons/websocket/default.nix2
-rw-r--r--pkgs/applications/video/kodi/no-python-lib.patch13
-rw-r--r--pkgs/applications/video/kodi/unwrapped.nix12
-rw-r--r--pkgs/applications/video/lightworks/default.nix56
-rw-r--r--pkgs/applications/video/losslesscut-bin/build-from-appimage.nix5
-rw-r--r--pkgs/applications/video/memento/default.nix4
-rw-r--r--pkgs/applications/video/minitube/default.nix4
-rw-r--r--pkgs/applications/video/mkvtoolnix/default.nix4
-rw-r--r--pkgs/applications/video/mlv-app/default.nix2
-rw-r--r--pkgs/applications/video/mpc-qt/default.nix4
-rw-r--r--pkgs/applications/video/mplayer/default.nix93
-rw-r--r--pkgs/applications/video/mpv/default.nix9
-rw-r--r--pkgs/applications/video/mpv/scripts/default.nix78
-rw-r--r--pkgs/applications/video/mpv/scripts/dynamic-crop.nix2
-rw-r--r--pkgs/applications/video/mpv/scripts/manga-reader.nix6
-rw-r--r--pkgs/applications/video/mpv/scripts/memo.nix6
-rw-r--r--pkgs/applications/video/mpv/scripts/modernx-zydezu.nix11
-rw-r--r--pkgs/applications/video/mpv/scripts/mpv-playlistmanager.nix6
-rw-r--r--pkgs/applications/video/mpv/scripts/mpv-webm.nix6
-rw-r--r--pkgs/applications/video/mpv/scripts/mpv.nix6
-rw-r--r--pkgs/applications/video/mpv/scripts/mpvacious.nix4
-rw-r--r--pkgs/applications/video/mpv/scripts/occivink.nix13
-rw-r--r--pkgs/applications/video/mpv/scripts/sponsorblock.nix2
-rw-r--r--pkgs/applications/video/mpv/scripts/videoclip.nix6
-rw-r--r--pkgs/applications/video/mpv/wrapper.nix1
-rw-r--r--pkgs/applications/video/multiviewer-for-f1/default.nix7
-rw-r--r--pkgs/applications/video/obs-studio/Enable-file-access-and-universal-access-for-file-URL.patch11
-rw-r--r--pkgs/applications/video/obs-studio/default.nix21
-rw-r--r--pkgs/applications/video/obs-studio/fix-nix-plugin-path.patch12
-rw-r--r--pkgs/applications/video/obs-studio/plugins/advanced-scene-switcher/default.nix6
-rw-r--r--pkgs/applications/video/obs-studio/plugins/input-overlay.nix4
-rw-r--r--pkgs/applications/video/obs-studio/plugins/obs-freeze-filter.nix2
-rw-r--r--pkgs/applications/video/obs-studio/plugins/obs-move-transition.nix4
-rw-r--r--pkgs/applications/video/obs-studio/plugins/obs-nvfbc.nix2
-rw-r--r--pkgs/applications/video/obs-studio/plugins/obs-source-record.nix33
-rw-r--r--pkgs/applications/video/obs-studio/plugins/obs-vertical-canvas.nix4
-rw-r--r--pkgs/applications/video/obs-studio/plugins/obs-vkcapture.nix6
-rw-r--r--pkgs/applications/video/obs-studio/plugins/waveform/default.nix4
-rw-r--r--pkgs/applications/video/obs-studio/wrapper.nix8
-rw-r--r--pkgs/applications/video/olive-editor/default.nix2
-rw-r--r--pkgs/applications/video/openshot-qt/default.nix8
-rw-r--r--pkgs/applications/video/pipe-viewer/default.nix9
-rw-r--r--pkgs/applications/video/pitivi/default.nix2
-rw-r--r--pkgs/applications/video/plex-media-player/default.nix2
-rw-r--r--pkgs/applications/video/pyca/default.nix2
-rw-r--r--pkgs/applications/video/qmplay2/default.nix85
-rw-r--r--pkgs/applications/video/rtabmap/default.nix4
-rw-r--r--pkgs/applications/video/shaka-packager/default.nix2
-rw-r--r--pkgs/applications/video/shotcut/default.nix91
-rw-r--r--pkgs/applications/video/shotcut/fix-mlt-ffmpeg-path.patch80
-rw-r--r--pkgs/applications/video/simplescreenrecorder/default.nix2
-rw-r--r--pkgs/applications/video/streamlink/default.nix4
-rw-r--r--pkgs/applications/video/stremio/default.nix3
-rw-r--r--pkgs/applications/video/sub-batch/default.nix2
-rw-r--r--pkgs/applications/video/subtitleedit/default.nix97
-rw-r--r--pkgs/applications/video/timelens/default.nix2
-rw-r--r--pkgs/applications/video/ustreamer/default.nix3
-rw-r--r--pkgs/applications/video/vcs/default.nix5
-rw-r--r--pkgs/applications/video/vdr/default.nix4
-rw-r--r--pkgs/applications/video/vdr/markad/default.nix13
-rw-r--r--pkgs/applications/video/vdr/plugins.nix2
-rw-r--r--pkgs/applications/video/vdr/softhddevice/default.nix4
-rw-r--r--pkgs/applications/video/wf-recorder/default.nix2
-rw-r--r--pkgs/applications/video/xplayer/default.nix97
-rw-r--r--pkgs/applications/video/xplayer/plparser.nix44
-rw-r--r--pkgs/applications/video/xscast/default.nix2
112 files changed, 632 insertions, 1123 deletions
diff --git a/pkgs/applications/video/alass/default.nix b/pkgs/applications/video/alass/default.nix
index d6b6da1fd6b5b..bbbbe91beb64a 100644
--- a/pkgs/applications/video/alass/default.nix
+++ b/pkgs/applications/video/alass/default.nix
@@ -16,7 +16,7 @@ rustPlatform.buildRustPackage rec {
     sha256 = "sha256-q1IV9TtmznpR7RO75iN0p16nmTja5ADWqFj58EOPWvU=";
   };
 
-  cargoSha256 = "sha256-6swIoVp1B4CMvaGvq868LTKkzpI6zFKJNgUVqjdyH20=";
+  cargoHash = "sha256-6swIoVp1B4CMvaGvq868LTKkzpI6zFKJNgUVqjdyH20=";
 
   nativeBuildInputs = [ makeWrapper ];
 
diff --git a/pkgs/applications/video/anilibria-winmaclinux/default.nix b/pkgs/applications/video/anilibria-winmaclinux/default.nix
index b9679d1fd49f6..3369316621713 100644
--- a/pkgs/applications/video/anilibria-winmaclinux/default.nix
+++ b/pkgs/applications/video/anilibria-winmaclinux/default.nix
@@ -18,13 +18,13 @@
 
 mkDerivation rec {
   pname = "anilibria-winmaclinux";
-  version = "1.2.17";
+  version = "2.2.18";
 
   src = fetchFromGitHub {
     owner = "anilibria";
     repo = "anilibria-winmaclinux";
     rev = version;
-    hash = "sha256-Ij4F5UCt1YOB4MLTlUTAiTt2zN4TkJuf5v6sWb9pJ6k=";
+    hash = "sha256-gFIz2tkuBaC4DoN/oVNra5pQi23MAuhFJRGxEcZgvAo=";
   };
 
   sourceRoot = "${src.name}/src";
diff --git a/pkgs/applications/video/animdl/default.nix b/pkgs/applications/video/animdl/default.nix
index c8ba0264e36aa..ebe13e8b12e26 100644
--- a/pkgs/applications/video/animdl/default.nix
+++ b/pkgs/applications/video/animdl/default.nix
@@ -2,7 +2,6 @@
   buildPythonApplication,
   fetchFromGitHub,
   poetry-core,
-  pythonRelaxDepsHook,
   anchor-kr,
   anitopy,
   click,
@@ -47,7 +46,6 @@ buildPythonApplication {
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
   propagatedBuildInputs = [
     anchor-kr
diff --git a/pkgs/applications/video/anime-downloader/default.nix b/pkgs/applications/video/anime-downloader/default.nix
index 99323ef960516..bf8fa063bd92d 100644
--- a/pkgs/applications/video/anime-downloader/default.nix
+++ b/pkgs/applications/video/anime-downloader/default.nix
@@ -49,7 +49,7 @@ python3.pkgs.buildPythonApplication rec {
     description = "Simple but powerful anime downloader and streamer";
     license = licenses.unlicense;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     mainProgram = "anime";
   };
 }
diff --git a/pkgs/applications/video/bino3d/default.nix b/pkgs/applications/video/bino3d/default.nix
index 92096c6a34746..e0ebccac96b82 100644
--- a/pkgs/applications/video/bino3d/default.nix
+++ b/pkgs/applications/video/bino3d/default.nix
@@ -1,26 +1,49 @@
-{ mkDerivation, lib, fetchurl, pkg-config, ffmpeg_4, glew, libass, openal, qtbase }:
+{
+  lib,
+  stdenv,
+  fetchgit,
+  cmake,
+  ninja,
+  pkg-config,
+  pandoc,
+  wrapQtAppsHook,
+  qtbase,
+  qtmultimedia,
+  qttools,
+}:
 
-mkDerivation rec {
+stdenv.mkDerivation (finalAttrs: {
   pname = "bino";
-  version = "1.6.8";
+  version = "2.2";
 
-  src = fetchurl {
-    url = "https://bino3d.org/releases/${pname}-${version}.tar.xz";
-    sha256 = "sha256-8sIdX+qm7CGPHIziFBHHIe+KEbhbwDY6w/iRm1V+so4=";
+  src = fetchgit {
+    url = "https://git.marlam.de/git/bino.git";
+    rev = "bino-${finalAttrs.version}";
+    hash = "sha256-t7bkpYOswGEjUg+k2gjUkWwZJjj44KIVrEQs5P4DoSI=";
   };
 
-  nativeBuildInputs = [ pkg-config ];
+  nativeBuildInputs = [
+    cmake
+    ninja
+    pkg-config
+    pandoc
+    wrapQtAppsHook
+  ];
 
-  buildInputs = [ ffmpeg_4 glew libass openal qtbase ];
+  buildInputs = [
+    qtbase
+    qtmultimedia
+    qttools
+    # The optional QVR dependency is not currently packaged.
+  ];
 
-  enableParallelBuilding = true;
-
-  meta = with lib; {
-    description = "Stereoscopic 3D and multi-display video player";
+  meta = {
+    description = "Video player with a focus on 3D and Virtual Reality";
     homepage = "https://bino3d.org/";
-    license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ orivej ];
-    platforms = platforms.linux;
+    sourceProvenance = [ lib.sourceTypes.fromSource ];
+    license = lib.licenses.gpl3Plus;
+    maintainers = [ lib.maintainers.orivej ];
+    platforms = lib.platforms.unix;
     mainProgram = "bino";
   };
-}
+})
diff --git a/pkgs/applications/video/bombono/default.nix b/pkgs/applications/video/bombono/default.nix
index 73471a7564d2c..ebbdf9dbeb087 100644
--- a/pkgs/applications/video/bombono/default.nix
+++ b/pkgs/applications/video/bombono/default.nix
@@ -2,13 +2,14 @@
 , fetchFromGitHub
 , pkg-config
 , fetchpatch
+, fetchpatch2
 , scons
 , boost
 , dvdauthor
 , dvdplusrwtools
 , enca
 , cdrkit
-, ffmpeg_4
+, ffmpeg_6
 , gettext
 , gtk2
 , gtkmm2
@@ -18,22 +19,15 @@
 , wrapGAppsHook3
 }:
 
-let
-  fetchPatchFromAur = {name, sha256}:
-    fetchpatch {
-      inherit name sha256;
-      url = "https://aur.archlinux.org/cgit/aur.git/plain/${name}?h=766dd4ba1715fc921fe26ce1bdcf22c30f4fc073";
-    };
-in
-stdenv.mkDerivation rec {
+stdenv.mkDerivation {
   pname = "bombono";
-  version = "1.2.4";
+  version = "1.2.4-unstable-2022-02-06";
 
   src = fetchFromGitHub {
     owner = "bombono-dvd";
     repo = "bombono-dvd";
-    rev = version;
-    sha256 = "sha256-aRW8H8+ca/61jGLxUs7u3R7yEiulwr5viMEuZWbc4dM=";
+    rev = "8680f5803314e4bcfbdae44f555c47ad345dae72";
+    hash = "sha256-8AxXIvShH4HwlPZWAszku33rts13HiNoRsHiLYdZAHA=";
   };
 
   patches = [
@@ -42,17 +36,14 @@ stdenv.mkDerivation rec {
       url = "https://svnweb.mageia.org/packages/cauldron/bombono-dvd/current/SOURCES/bombono-dvd-1.2.4-scons-python3.patch?revision=1447925&view=co&pathrev=1484457";
       sha256 = "sha256-5OKBWrRZvHem2MTdAObfdw76ig3Z4ZdDFtq4CJoJISA=";
     })
-  ] ++ (map fetchPatchFromAur [
-    {name="fix_ffmpeg_codecid.patch";         sha256="sha256-58L+1BJy5HK/R+xALbq2z4+Se4i6yp21lo/MjylgTqs=";}
-    {name="fix_ptr2bool_cast.patch";          sha256="sha256-DyqMw/m2Op9+gBq1CTCjSZ1qM9igV5Y6gTOi8VbNH0c=";}
-    {name="fix_c++11_literal_warnings.patch"; sha256="sha256-iZ/CN5+xg7jPXl5r/KGCys+jyPu0/AsSABLcc6IIbv0=";}
-    {name="autoptr2uniqueptr.patch";          sha256="sha256-teGp6uICB4jAJk18pdbBMcDxC/JJJGkdihtXeh3ffCg=";}
-    {name="fix_deprecated_boost_api.patch";   sha256="sha256-qD5QuO/ndEU1N7vueQiNpPVz8OaX6Y6ahjCWxMdvj6A=";}
-    {name="fix_throw_specifications.patch";   sha256="sha256-NjCDGwXRCSLcuW2HbPOpXRgNvNQHy7i7hoOgyvGIr7g=";}
-    {name="fix_operator_ambiguity.patch";     sha256="sha256-xx7WyrxEdDrDuz5YoFrM/u2qJru9u6X/4+Y5rJdmmmQ=";}
-    {name="fix_ffmpeg30.patch";               sha256="sha256-vKEbvbjYVRzEaVYC8XOJBPmk6FDXI/WA0X/dldRRO8c=";}
-    {name="inc_boost_header.patch";           sha256="sha256-76vjkf62VsNJ5FmBEs+X7ZBqjvJ372mjSIreBxNQym8=";}
-  ]);
+
+    # Fix compilation errors having ffmpeg 2:5.1
+    # https://github.com/bombono-dvd/bombono-dvd/pull/28
+    (fetchpatch2 {
+      url = "https://github.com/bombono-dvd/bombono-dvd/commit/9f2cde1ddc22705bf58264739685086755b2138b.patch?full_index=1";
+      hash = "sha256-ks6c04HEYF4nPfSOjzG+dUt9v7ZmNBb0XH6byPYqX5I=";
+    })
+  ];
 
   postPatch = ''
     substituteInPlace src/mbase/SConscript \
@@ -66,7 +57,7 @@ stdenv.mkDerivation rec {
     dvdauthor
     dvdplusrwtools
     enca
-    ffmpeg_4
+    ffmpeg_6
     gtk2
     gtkmm2
     libdvdread
@@ -82,7 +73,7 @@ stdenv.mkDerivation rec {
     # fix iso authoring
     install -Dt  $out/share/bombono/resources/scons_authoring tools/scripts/SConsTwin.py
 
-    wrapProgram $out/bin/bombono-dvd --prefix PATH : ${lib.makeBinPath [ ffmpeg_4 dvdauthor cdrkit ]}
+    wrapProgram $out/bin/bombono-dvd --prefix PATH : ${lib.makeBinPath [ ffmpeg_6 dvdauthor cdrkit ]}
   '';
 
   meta = with lib; {
diff --git a/pkgs/applications/video/byzanz/default.nix b/pkgs/applications/video/byzanz/default.nix
index bc88c24814678..a19f03727023b 100644
--- a/pkgs/applications/video/byzanz/default.nix
+++ b/pkgs/applications/video/byzanz/default.nix
@@ -3,7 +3,7 @@
 , wrapGAppsHook3
 , cairo
 , glib
-, gnome
+, gnome-common
 , gst_all_1
 , gtk3
 , intltool
@@ -37,7 +37,7 @@ stdenv.mkDerivation {
   nativeBuildInputs = [ pkg-config intltool ];
   buildInputs = [
     which
-    gnome.gnome-common
+    gnome-common
     glib
     libtool
     cairo
diff --git a/pkgs/applications/video/catt/default.nix b/pkgs/applications/video/catt/default.nix
index 608236d688300..f6bdde3577be6 100644
--- a/pkgs/applications/video/catt/default.nix
+++ b/pkgs/applications/video/catt/default.nix
@@ -6,6 +6,7 @@
 
 let
   python = python3.override {
+    self = python;
     packageOverrides = self: super: {
       pychromecast = super.pychromecast.overridePythonAttrs (_: rec {
         version = "13.1.0";
@@ -63,7 +64,7 @@ python.pkgs.buildPythonApplication rec {
     description = "Tool to send media from online sources to Chromecast devices";
     homepage = "https://github.com/skorokithakis/catt";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ dtzWill ];
+    maintainers = [ ];
     mainProgram = "catt";
   };
 }
diff --git a/pkgs/applications/video/ccextractor/default.nix b/pkgs/applications/video/ccextractor/default.nix
deleted file mode 100644
index 399287c93f7ff..0000000000000
--- a/pkgs/applications/video/ccextractor/default.nix
+++ /dev/null
@@ -1,71 +0,0 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, pkg-config
-, cmake
-, libiconv
-, zlib
-, enableOcr ? true
-, makeWrapper
-, tesseract4
-, leptonica
-, ffmpeg_4
-}:
-
-stdenv.mkDerivation rec {
-  pname = "ccextractor";
-  version = "0.93";
-
-  src = fetchFromGitHub {
-    owner = "CCExtractor";
-    repo = pname;
-    rev = "v${version}";
-    sha256 = "sha256-usVAKBkdd8uz9cD5eLd0hnwGonOJLscRdc+iWDlNXVc=";
-  };
-
-  postPatch = ''
-    # https://github.com/CCExtractor/ccextractor/issues/1467
-    sed -i '/allheaders.h/a#include <leptonica/pix_internal.h>' src/lib_ccx/ocr.c
-  '' + lib.optionalString stdenv.isDarwin ''
-    substituteInPlace src/CMakeLists.txt \
-    --replace 'add_definitions(-DGPAC_CONFIG_LINUX)' 'add_definitions(-DGPAC_CONFIG_DARWIN)'
-  '';
-
-  cmakeDir = "../src";
-
-  nativeBuildInputs = [ pkg-config cmake makeWrapper ];
-
-  buildInputs = [ zlib ]
-    ++ lib.optional (!stdenv.isLinux) libiconv
-    ++ lib.optionals enableOcr [ leptonica tesseract4 ffmpeg_4 ];
-
-  cmakeFlags = [
-    # file RPATH_CHANGE could not write new RPATH:
-    "-DCMAKE_SKIP_BUILD_RPATH=ON"
-  ] ++ lib.optionals enableOcr [ "-DWITH_OCR=on" "-DWITH_HARDSUBX=on" ];
-
-  postInstall = lib.optionalString enableOcr ''
-    wrapProgram "$out/bin/ccextractor" \
-      --set TESSDATA_PREFIX "${tesseract4}/share/"
-  '';
-
-  meta = with lib; {
-    homepage = "https://www.ccextractor.org";
-    description = "Tool that produces subtitles from closed caption data in videos";
-    longDescription = ''
-      A tool that analyzes video files and produces independent subtitle files from
-      closed captions data. CCExtractor is portable, small, and very fast.
-      It works on Linux, Windows, and OSX.
-    '';
-    platforms = platforms.unix;
-    # undefined reference to `png_do_expand_palette_rgba8_neon'
-    # undefined reference to `png_riffle_palette_neon'
-    # undefined reference to `png_do_expand_palette_rgb8_neon'
-    # undefined reference to `png_init_filter_functions_neon'
-    # during Linking C executable ccextractor
-    broken = stdenv.isAarch64;
-    license = licenses.gpl2Only;
-    maintainers = with maintainers; [ ];
-    mainProgram = "ccextractor";
-  };
-}
diff --git a/pkgs/applications/video/clapper/default.nix b/pkgs/applications/video/clapper/default.nix
index 78bfaa2b46373..dfdcacc3b3185 100644
--- a/pkgs/applications/video/clapper/default.nix
+++ b/pkgs/applications/video/clapper/default.nix
@@ -1,5 +1,4 @@
-{ config
-, lib
+{ lib
 , stdenv
 , fetchFromGitHub
 , gobject-introspection
@@ -22,13 +21,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "clapper";
-  version = "0.6.0";
+  version = "0.6.1";
 
   src = fetchFromGitHub {
     owner  = "Rafostar";
     repo   = "clapper";
     rev    = finalAttrs.version;
-    hash = "sha256-5fD1OnVcY3ZC+QfoFqe2jV43/J36r85SpLUYF2ti7dY=";
+    hash = "sha256-IQJTnLB6FzYYPONOqBkvi89iF0U6fx/aWYvNOOJpBvc=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/video/coriander/default.nix b/pkgs/applications/video/coriander/default.nix
deleted file mode 100644
index 80892b96c94b6..0000000000000
--- a/pkgs/applications/video/coriander/default.nix
+++ /dev/null
@@ -1,45 +0,0 @@
-{ lib
-, stdenv
-, fetchurl
-, pkg-config
-, glib
-, gtk2
-, libgnomeui
-, libXv
-, libraw1394
-, libdc1394
-, SDL
-, automake
-, GConf
-}:
-
-stdenv.mkDerivation rec {
-  pname = "coriander";
-  version = "2.0.1";
-
-  src = fetchurl {
-    url = "http://damien.douxchamps.net/ieee1394/coriander/archives/coriander-${version}.tar.gz";
-    sha256 = "0l6hpfgy5r4yardilmdrggsnn1fbfww516sk5a90g1740cd435x5";
-  };
-
-  # Workaround build failure on -fno-common toolchains:
-  #   ld: subtitles.o:src/coriander.h:110: multiple definition of
-  #     `main_window'; main.o:src/coriander.h:110: first defined here
-  env.NIX_CFLAGS_COMPILE = "-fcommon";
-
-  preConfigure = ''
-    cp ${automake}/share/automake-*/mkinstalldirs .
-  '';
-
-  nativeBuildInputs = [ pkg-config ];
-  buildInputs = [ glib gtk2 libgnomeui libXv libraw1394 libdc1394 SDL GConf ];
-
-  meta = {
-    homepage = "https://damien.douxchamps.net/ieee1394/coriander/";
-    description = "GUI for controlling a Digital Camera through the IEEE1394 bus";
-    license = lib.licenses.gpl3Plus;
-    maintainers = with lib.maintainers; [ viric ];
-    platforms = with lib.platforms; linux;
-    mainProgram = "coriander";
-  };
-}
diff --git a/pkgs/applications/video/davinci-resolve/default.nix b/pkgs/applications/video/davinci-resolve/default.nix
index be18304386cbd..574de6f427b1f 100644
--- a/pkgs/applications/video/davinci-resolve/default.nix
+++ b/pkgs/applications/video/davinci-resolve/default.nix
@@ -5,7 +5,7 @@
 , runCommandLocal
 , unzip
 , appimage-run
-, addOpenGLRunpath
+, addDriverRunpath
 , dbus
 , libGLU
 , xorg
@@ -38,7 +38,7 @@ let
 
       nativeBuildInputs = [
         (appimage-run.override { buildFHSEnv = buildFHSEnvChroot; } )
-        addOpenGLRunpath
+        addDriverRunpath
         copyDesktopItems
         unzip
       ];
@@ -150,14 +150,14 @@ let
       postFixup = ''
         for program in $out/bin/*; do
           isELF "$program" || continue
-          addOpenGLRunpath "$program"
+          addDriverRunpath "$program"
         done
 
         for program in $out/libs/*; do
           isELF "$program" || continue
           if [[ "$program" != *"libcudnn_cnn_infer"* ]];then
             echo $program
-            addOpenGLRunpath "$program"
+            addDriverRunpath "$program"
           fi
         done
         ln -s $out/libs/libcrypto.so.1.1 $out/libs/libcrypt.so.1
diff --git a/pkgs/applications/video/deface/default.nix b/pkgs/applications/video/deface/default.nix
index 0b0a2d0859810..054bb04aee72a 100644
--- a/pkgs/applications/video/deface/default.nix
+++ b/pkgs/applications/video/deface/default.nix
@@ -2,7 +2,6 @@
 , stdenv
 , python3
 , fetchFromGitHub
-, makeWrapper
 , pkgs
 }:
 
diff --git a/pkgs/applications/video/devede/default.nix b/pkgs/applications/video/devede/default.nix
index f17638d42e3b7..798e64ff83720 100644
--- a/pkgs/applications/video/devede/default.nix
+++ b/pkgs/applications/video/devede/default.nix
@@ -12,7 +12,7 @@ in buildPythonApplication rec {
     owner = "rastersoft";
     repo = "devedeng";
     rev = version;
-    sha256 = "sha256-CdntdD5DRA/eXTBRBRszkbYFeFxj+0odb8XHkAFdobU=";
+    hash = "sha256-CdntdD5DRA/eXTBRBRszkbYFeFxj+0odb8XHkAFdobU=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/video/dmlive/default.nix b/pkgs/applications/video/dmlive/default.nix
index 03affd1e00a7a..db34d1da27497 100644
--- a/pkgs/applications/video/dmlive/default.nix
+++ b/pkgs/applications/video/dmlive/default.nix
@@ -14,16 +14,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "dmlive";
-  version = "5.3.2";
+  version = "5.5.4";
 
   src = fetchFromGitHub {
     owner = "THMonster";
     repo = pname;
-    rev = "3736d83ac0920de78ac82fe331bc6b16dc72b5cd"; # no tag
-    hash = "sha256-3agUeAv6Nespn6GNw4wmy8HNPQ0VIgZAMnKiV/myKbA=";
+    rev = "688ddda12ed70a7ad25ede63e948e1cba143a307"; # no tag
+    hash = "sha256-M7IZ2UzusWovyhigyUXasmSEz4J79gnFyivHVUqfUKg=";
   };
 
-  cargoHash = "sha256-MxkWaEn/gMMOuje7lu7PlqsQjnF0LWpV9JzmFBG1ukU=";
+  cargoHash = "sha256-d3vI2iv2Db1XZQc3uaNfkUpDyNKPvHkb/0zEwRTOWZ0=";
 
   OPENSSL_NO_VENDOR = true;
 
diff --git a/pkgs/applications/video/dvdstyler/default.nix b/pkgs/applications/video/dvdstyler/default.nix
index db3f6e7f9a54e..ec15a47090fdb 100644
--- a/pkgs/applications/video/dvdstyler/default.nix
+++ b/pkgs/applications/video/dvdstyler/default.nix
@@ -24,7 +24,6 @@
 , zip
 
 , dvdisasterSupport ? true, dvdisaster ? null
-, thumbnailSupport ? true, libgnomeui ? null
 , udevSupport ? true, udev ? null
 , dbusSupport ? true, dbus ? null
 }:
@@ -72,8 +71,7 @@ in stdenv.mkDerivation rec {
  ]
   ++ optionals dvdisasterSupport [ dvdisaster ]
   ++ optionals udevSupport [ udev ]
-  ++ optionals dbusSupport [ dbus ]
-  ++ optionals thumbnailSupport [ libgnomeui ];
+  ++ optionals dbusSupport [ dbus ];
 
   enableParallelBuilding = true;
 
diff --git a/pkgs/applications/video/epgstation/default.nix b/pkgs/applications/video/epgstation/default.nix
index c5d12c8403c12..63c1e050e7de1 100644
--- a/pkgs/applications/video/epgstation/default.nix
+++ b/pkgs/applications/video/epgstation/default.nix
@@ -6,7 +6,6 @@
 , makeWrapper
 , bash
 , nodejs
-, gzip
 , python3
 }:
 
diff --git a/pkgs/applications/video/ffmpeg-normalize/default.nix b/pkgs/applications/video/ffmpeg-normalize/default.nix
index a3b40daacf79a..9a5e4f64d497c 100644
--- a/pkgs/applications/video/ffmpeg-normalize/default.nix
+++ b/pkgs/applications/video/ffmpeg-normalize/default.nix
@@ -11,7 +11,7 @@ buildPythonApplication rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-OwREpfWaP0tdAjMGjGpVIAQn8rlTTjSfT+0t5g/2yjQ=";
+    hash = "sha256-OwREpfWaP0tdAjMGjGpVIAQn8rlTTjSfT+0t5g/2yjQ=";
   };
 
   propagatedBuildInputs = [ ffmpeg ffmpeg-progress-yield ];
diff --git a/pkgs/applications/video/filebot/default.nix b/pkgs/applications/video/filebot/default.nix
index acc3e9571ca0b..3fb98c8d71894 100644
--- a/pkgs/applications/video/filebot/default.nix
+++ b/pkgs/applications/video/filebot/default.nix
@@ -10,11 +10,11 @@ let
   };
 in stdenv.mkDerivation (finalAttrs: {
   pname = "filebot";
-  version = "5.1.3";
+  version = "5.1.4";
 
   src = fetchurl {
     url = "https://web.archive.org/web/20230917142929/https://get.filebot.net/filebot/FileBot_${finalAttrs.version}/FileBot_${finalAttrs.version}-portable.tar.xz";
-    hash = "sha256-1TkCV3Cjg/5YZODceV5mQDsPYk09IU7+UHwPRwt2vAQ=";
+    hash = "sha256-UEgG3bQT5GPMfh/nxC1aXGsb8HKE5Ov5ax0ULjLr73U=";
   };
 
   unpackPhase = "tar xvf $src";
diff --git a/pkgs/applications/video/freetube/default.nix b/pkgs/applications/video/freetube/default.nix
index 1f21fabb78f96..ffe9beea5cd8e 100644
--- a/pkgs/applications/video/freetube/default.nix
+++ b/pkgs/applications/video/freetube/default.nix
@@ -1,19 +1,25 @@
-{ stdenv, lib, fetchurl, appimageTools, makeWrapper, electron, nixosTests }:
+{
+  stdenv,
+  lib,
+  fetchurl,
+  appimageTools,
+  makeWrapper,
+  electron,
+  nixosTests,
+}:
 
 stdenv.mkDerivation rec {
   pname = "freetube";
-  version = "0.21.0";
+  version = "0.21.3";
 
   src = fetchurl {
     url = "https://github.com/FreeTubeApp/FreeTube/releases/download/v${version}-beta/freetube_${version}_amd64.AppImage";
-    sha256 = "sha256-jTDJ0oyDrgOM6T+nwiOakm3QUqKfK2UNY6AfpoaJzd0=";
+    hash = "sha256-sg/ycFo4roOJ2sW4naRCE6dwGXVQFzF8uwAZQkS2EY4=";
   };
 
   passthru.tests = nixosTests.freetube;
 
-  appimageContents = appimageTools.extractType2 {
-    inherit pname version src;
-  };
+  appimageContents = appimageTools.extractType2 { inherit pname version src; };
 
   dontUnpack = true;
   dontConfigure = true;
@@ -42,11 +48,14 @@ stdenv.mkDerivation rec {
       --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--enable-features=UseOzonePlatform --ozone-platform=wayland}}"
   '';
 
-  meta = with lib; {
+  meta = {
     description = "Open Source YouTube app for privacy";
     homepage = "https://freetubeapp.io/";
-    license = licenses.agpl3Only;
-    maintainers = with maintainers; [ ryneeverett alyaeanyx ];
+    license = lib.licenses.agpl3Only;
+    maintainers = with lib.maintainers; [
+      ryneeverett
+      alyaeanyx
+    ];
     inherit (electron.meta) platforms;
     mainProgram = "freetube";
   };
diff --git a/pkgs/applications/video/frigate/default.nix b/pkgs/applications/video/frigate/default.nix
index cf381a5f42658..311e585b2d47a 100644
--- a/pkgs/applications/video/frigate/default.nix
+++ b/pkgs/applications/video/frigate/default.nix
@@ -1,6 +1,6 @@
 { lib
 , callPackage
-, python3
+, python311
 , fetchFromGitHub
 , fetchurl
 , fetchpatch2
@@ -23,7 +23,8 @@ let
     inherit version src;
   };
 
-  python = python3.override {
+  python = python311.override {
+    self = python;
     packageOverrides = self: super: {
       pydantic = super.pydantic_1;
 
@@ -71,6 +72,14 @@ python.pkgs.buildPythonApplication rec {
       url = "https://github.com/blakeblackshear/frigate/commit/b65656fa8733c1c2f3d944f716d2e9493ae7c99f.patch";
       hash = "sha256-taPWFV4PldBGUKAwFMKag4W/3TLMSGdKLYG8bj1Y5mU=";
     })
+    (fetchpatch2 {
+      # https://github.com/blakeblackshear/frigate/pull/10097
+      name = "frigate-secrets-permissionerror.patch";
+      url = "https://github.com/blakeblackshear/frigate/commit/a1424bad6c0163e790129ade7a9784514d0bf89d.patch";
+      hash = "sha256-/kIy4aW9o5AKHJQfCDVY46si+DKaUb+CsZsCGIbXvUQ=";
+    })
+    # https://github.com/blakeblackshear/frigate/pull/12324
+    ./mpl-3.9.0.patch
   ];
 
   postPatch = ''
diff --git a/pkgs/applications/video/frigate/mpl-3.9.0.patch b/pkgs/applications/video/frigate/mpl-3.9.0.patch
new file mode 100644
index 0000000000000..84fe7867438d7
--- /dev/null
+++ b/pkgs/applications/video/frigate/mpl-3.9.0.patch
@@ -0,0 +1,42 @@
+From fba8cff13186bd80ceaa06806392957598139deb Mon Sep 17 00:00:00 2001
+From: Martin Weinelt <hexa@darmstadt.ccc.de>
+Date: Sun, 7 Jul 2024 14:23:29 +0200
+Subject: [PATCH] Fix colormap usage with matplotlib 3.9.0
+
+The mpl.cm toplevel registration has been removed.
+
+https://matplotlib.org/stable/api/prev_api_changes/api_changes_3.9.0.html#top-level-cmap-registration-and-access-functions-in-mpl-cm
+---
+ frigate/config.py                    | 2 +-
+ frigate/detectors/detector_config.py | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/frigate/config.py b/frigate/config.py
+index 2e8b2570..af4f3263 100644
+--- a/frigate/config.py
++++ b/frigate/config.py
+@@ -807,7 +807,7 @@ class CameraConfig(FrigateBaseModel):
+     def __init__(self, **config):
+         # Set zone colors
+         if "zones" in config:
+-            colors = plt.cm.get_cmap("tab10", len(config["zones"]))
++            colors = plt.colormaps["tab10"].resampled(len(config["zones"]))
+             config["zones"] = {
+                 name: {**z, "color": tuple(round(255 * c) for c in colors(idx)[:3])}
+                 for idx, (name, z) in enumerate(config["zones"].items())
+diff --git a/frigate/detectors/detector_config.py b/frigate/detectors/detector_config.py
+index 7fc958a3..b65631eb 100644
+--- a/frigate/detectors/detector_config.py
++++ b/frigate/detectors/detector_config.py
+@@ -125,7 +125,7 @@ class ModelConfig(BaseModel):
+ 
+     def create_colormap(self, enabled_labels: set[str]) -> None:
+         """Get a list of colors for enabled labels."""
+-        cmap = plt.cm.get_cmap("tab10", len(enabled_labels))
++        cmap = plt.colormaps["tab10"].resampled(len(enabled_labels))
+ 
+         for key, val in enumerate(enabled_labels):
+             self._colormap[val] = tuple(int(round(255 * c)) for c in cmap(key)[:3])
+-- 
+2.45.1
+
diff --git a/pkgs/applications/video/glaxnimate/default.nix b/pkgs/applications/video/glaxnimate/default.nix
index c09b2c8170d4f..9e4eda8a0790a 100644
--- a/pkgs/applications/video/glaxnimate/default.nix
+++ b/pkgs/applications/video/glaxnimate/default.nix
@@ -43,7 +43,7 @@ stdenv.mkDerivation rec {
     owner = "mattbas";
     repo = "${pname}";
     rev = version;
-    sha256 = "sha256-8oHJCQdP2xxSSDM0MDkSrG89WgCtMKm1AKlddnq3gig=";
+    hash = "sha256-8oHJCQdP2xxSSDM0MDkSrG89WgCtMKm1AKlddnq3gig=";
     fetchSubmodules = true;
   };
 
diff --git a/pkgs/applications/video/gnome-mplayer/default.nix b/pkgs/applications/video/gnome-mplayer/default.nix
index 436f31ac5a01d..3d6b281ef07b3 100644
--- a/pkgs/applications/video/gnome-mplayer/default.nix
+++ b/pkgs/applications/video/gnome-mplayer/default.nix
@@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
     mainProgram = "gnome-mplayer";
     homepage = "https://sites.google.com/site/kdekorte2/gnomemplayer";
     license = licenses.gpl2;
-    maintainers = with maintainers; [];
+    maintainers = [ ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/applications/video/go-chromecast/default.nix b/pkgs/applications/video/go-chromecast/default.nix
index 44495386d4cf3..cade6f0c7484f 100644
--- a/pkgs/applications/video/go-chromecast/default.nix
+++ b/pkgs/applications/video/go-chromecast/default.nix
@@ -19,7 +19,7 @@ buildGoModule rec {
     homepage = "https://github.com/vishen/go-chromecast";
     description = "CLI for Google Chromecast, Home devices and Cast Groups";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     mainProgram = "go-chromecast";
   };
 }
diff --git a/pkgs/applications/video/gpac/default.nix b/pkgs/applications/video/gpac/default.nix
index 7b8113e906e49..57da5147407eb 100644
--- a/pkgs/applications/video/gpac/default.nix
+++ b/pkgs/applications/video/gpac/default.nix
@@ -1,44 +1,29 @@
-{ lib, stdenv, fetchFromGitHub, fetchpatch, pkg-config, zlib }:
+{ lib, stdenv, fetchFromGitHub, cctools, pkg-config, Carbon, zlib }:
 
 stdenv.mkDerivation rec {
-  version = "2.2.1";
   pname = "gpac";
+  version = "2.4.0";
 
   src = fetchFromGitHub {
     owner = "gpac";
     repo = "gpac";
     rev = "v${version}";
-    hash = "sha256-VjA1VFMsYUJ8uJqhYgjXYtqlGWSJHr16Ck3b5stuZWw=";
+    hash = "sha256-RADDqc5RxNV2EfRTzJP/yz66p0riyn81zvwU3r9xncM=";
   };
 
-  patches = [
-    (fetchpatch {
-      name = "CVE-2023-2837.patch";
-      url = "https://github.com/gpac/gpac/commit/6f28c4cd607d83ce381f9b4a9f8101ca1e79c611.patch";
-      hash = "sha256-HA6qMungIoh1fz1R3zUvV1Ahoa2pp861JRzYY/NNDQI=";
-    })
-    (fetchpatch {
-      name = "CVE-2023-2838.patch";
-      url = "https://github.com/gpac/gpac/commit/c88df2e202efad214c25b4e586f243b2038779ba.patch";
-      hash = "sha256-gIISG7pz01iVoWqlho2BL27ki87i3pGkug2Z+KKn+xs=";
-    })
-    (fetchpatch {
-      name = "CVE-2023-2839.patch";
-      url = "https://github.com/gpac/gpac/commit/047f96fb39e6bf70cb9f344093f5886e51dce0ac.patch";
-      hash = "sha256-i+/iFrWJ+Djc8xYtIOYvlZ98fYUdJooqUz9y/uhusL4=";
-    })
-    (fetchpatch {
-      name = "CVE-2023-2840.patch";
-      url = "https://github.com/gpac/gpac/commit/ba59206b3225f0e8e95a27eff41cb1c49ddf9a37.patch";
-      hash = "sha256-mwO9Qeeufq0wa57lO+LgWGjrN3CHMYK+xr2ZBalKBQo=";
-    })
-  ];
-
   # this is the bare minimum configuration, as I'm only interested in MP4Box
   # For most other functionality, this should probably be extended
-  nativeBuildInputs = [ pkg-config ];
+  nativeBuildInputs = [
+    pkg-config
+  ] ++ lib.optionals stdenv.isDarwin [
+    cctools
+  ];
 
-  buildInputs = [ zlib ];
+  buildInputs = [
+    zlib
+  ] ++ lib.optionals stdenv.isDarwin [
+    Carbon
+  ];
 
   enableParallelBuilding = true;
 
@@ -59,62 +44,6 @@ stdenv.mkDerivation rec {
     homepage = "https://gpac.wp.imt.fr";
     license = licenses.lgpl21;
     maintainers = with maintainers; [ bluescreen303 mgdelacroix ];
-    platforms = platforms.linux;
-    knownVulnerabilities = [
-      "CVE-2023-48958"
-      "CVE-2023-48090"
-      "CVE-2023-48039"
-      "CVE-2023-48014"
-      "CVE-2023-48013"
-      "CVE-2023-48011"
-      "CVE-2023-47465"
-      "CVE-2023-47384"
-      "CVE-2023-46932"
-      "CVE-2023-46931"
-      "CVE-2023-46930"
-      "CVE-2023-46928"
-      "CVE-2023-46927"
-      "CVE-2023-46871"
-      "CVE-2023-46001"
-      "CVE-2023-42298"
-      "CVE-2023-41000"
-      "CVE-2023-39562"
-      "CVE-2023-37767"
-      "CVE-2023-37766"
-      "CVE-2023-37765"
-      "CVE-2023-37174"
-      "CVE-2023-23143"
-      "CVE-2023-5998"
-      "CVE-2023-5595"
-      "CVE-2023-5586"
-      "CVE-2023-5520"
-      "CVE-2023-5377"
-      "CVE-2023-4778"
-      "CVE-2023-4758"
-      "CVE-2023-4756"
-      "CVE-2023-4755"
-      "CVE-2023-4754"
-      "CVE-2023-4722"
-      "CVE-2023-4721"
-      "CVE-2023-4720"
-      "CVE-2023-4683"
-      "CVE-2023-4682"
-      "CVE-2023-4681"
-      "CVE-2023-4678"
-      "CVE-2023-3523"
-      "CVE-2023-3291"
-      "CVE-2023-3013"
-      "CVE-2023-3012"
-      "CVE-2023-1655"
-      "CVE-2023-1654"
-      "CVE-2023-1452"
-      "CVE-2023-1449"
-      "CVE-2023-1448"
-      "CVE-2023-0866"
-      "CVE-2023-0841"
-      "CVE-2023-0819"
-      "CVE-2023-0818"
-      "CVE-2023-0817"
-    ];
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/applications/video/gpu-screen-recorder/0001-Don-t-install-systemd-unit-files-using-absolute-path.patch b/pkgs/applications/video/gpu-screen-recorder/0001-Don-t-install-systemd-unit-files-using-absolute-path.patch
new file mode 100644
index 0000000000000..1403d59b86bac
--- /dev/null
+++ b/pkgs/applications/video/gpu-screen-recorder/0001-Don-t-install-systemd-unit-files-using-absolute-path.patch
@@ -0,0 +1,25 @@
+From cd8c6561079ee4c53b4bed390edd75a730ac685d Mon Sep 17 00:00:00 2001
+From: Tim Schumacher <timschumi@gmx.de>
+Date: Thu, 4 Jul 2024 16:26:36 +0200
+Subject: [PATCH] Don't install systemd unit files using absolute paths
+
+---
+ meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/meson.build b/meson.build
+index a188f16..7807abe 100644
+--- a/meson.build
++++ b/meson.build
+@@ -54,7 +54,7 @@ executable('gsr-kms-server', 'kms/server/kms_server.c', dependencies : dependenc
+ executable('gpu-screen-recorder', src, dependencies : dep, install : true)
+ 
+ if get_option('systemd') == true
+-    install_data(files('extra/gpu-screen-recorder.service'), install_dir : '/usr/lib/systemd/user')
++    install_data(files('extra/gpu-screen-recorder.service'), install_dir : 'lib/systemd/user')
+ endif
+ 
+ if get_option('capabilities') == true
+-- 
+2.45.1
+
diff --git a/pkgs/applications/video/gpu-screen-recorder/default.nix b/pkgs/applications/video/gpu-screen-recorder/default.nix
index 101cb3af49ddf..89fda1154232c 100644
--- a/pkgs/applications/video/gpu-screen-recorder/default.nix
+++ b/pkgs/applications/video/gpu-screen-recorder/default.nix
@@ -2,6 +2,8 @@
 , lib
 , fetchurl
 , makeWrapper
+, meson
+, ninja
 , pkg-config
 , libXcomposite
 , libpulseaudio
@@ -10,24 +12,30 @@
 , libdrm
 , libva
 , libglvnd
+, libXdamage
+, libXi
 , libXrandr
 , libXfixes
+, wrapperDir ? "/run/wrappers/bin"
 }:
 
 stdenv.mkDerivation {
   pname = "gpu-screen-recorder";
-  version = "unstable-2024-05-21";
+  version = "unstable-2024-07-05";
 
+  # Snapshot tarballs use the following versioning format:
   # printf "r%s.%s\n" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
   src = fetchurl {
-    url = "https://dec05eba.com/snapshot/gpu-screen-recorder.git.r594.e572073.tar.gz";
-    hash = "sha256-MTBxhvkoyotmRUx1sRN/7ruXBYwIbOFQNdJHhZ3DdDk=";
+    url = "https://dec05eba.com/snapshot/gpu-screen-recorder.git.r641.48cd80f.tar.gz";
+    hash = "sha256-hIEK8EYIxQTTiFePPZf4V0nsxqxkfcDeOG9GK9whn+0=";
   };
   sourceRoot = ".";
 
   nativeBuildInputs = [
     pkg-config
     makeWrapper
+    meson
+    ninja
   ];
 
   buildInputs = [
@@ -37,20 +45,29 @@ stdenv.mkDerivation {
     wayland
     libdrm
     libva
+    libXdamage
+    libXi
     libXrandr
     libXfixes
   ];
 
-  buildPhase = ''
-    ./build.sh
-  '';
+  patches = [
+    ./0001-Don-t-install-systemd-unit-files-using-absolute-path.patch
+  ];
+
+  mesonFlags = [
+    "-Dsystemd=true"
+
+    # Capabilities are handled by security.wrappers if possible.
+    "-Dcapabilities=false"
+  ];
 
   postInstall = ''
-    install -Dt $out/bin gpu-screen-recorder gsr-kms-server
     mkdir $out/bin/.wrapped
     mv $out/bin/gpu-screen-recorder $out/bin/.wrapped/
     makeWrapper "$out/bin/.wrapped/gpu-screen-recorder" "$out/bin/gpu-screen-recorder" \
     --prefix LD_LIBRARY_PATH : ${libglvnd}/lib \
+    --prefix PATH : ${wrapperDir} \
     --suffix PATH : $out/bin
   '';
 
diff --git a/pkgs/applications/video/gpu-screen-recorder/gpu-screen-recorder-gtk.nix b/pkgs/applications/video/gpu-screen-recorder/gpu-screen-recorder-gtk.nix
index 0fa023a9fc940..b0c19e80a0be0 100644
--- a/pkgs/applications/video/gpu-screen-recorder/gpu-screen-recorder-gtk.nix
+++ b/pkgs/applications/video/gpu-screen-recorder/gpu-screen-recorder-gtk.nix
@@ -1,47 +1,62 @@
 { stdenv
 , lib
-, fetchgit
+, fetchurl
 , pkg-config
+, desktop-file-utils
 , makeWrapper
+, meson
+, ninja
 , gtk3
+, libayatana-appindicator
 , libpulseaudio
 , libdrm
 , gpu-screen-recorder
 , libglvnd
+, libX11
+, libXrandr
+, wayland
 , wrapGAppsHook3
+, wrapperDir ? "/run/wrappers/bin"
 }:
 
 stdenv.mkDerivation {
   pname = "gpu-screen-recorder-gtk";
-  version = "3.7.6";
+  version = "unstable-2024-07-05";
 
-  src = fetchgit {
-    url = "https://repo.dec05eba.com/gpu-screen-recorder-gtk";
-    rev = "cd777c1506e20514df4b97345e480051cbaf9693";
-    hash = "sha256-ZBYYsW75tq8TaZp0F4v7YIHKHk/DFBIGy3X781ho2oE=";
+  # Snapshot tarballs use the following versioning format:
+  # printf "r%s.%s\n" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
+  src = fetchurl {
+    url = "https://dec05eba.com/snapshot/gpu-screen-recorder-gtk.git.r311.c611c51.tar.gz";
+    hash = "sha256-86EdmeZ2dlffSfJOrTVGPtYyL3j6DmCQIALX2rpeS1Y=";
   };
+  sourceRoot = ".";
 
   nativeBuildInputs = [
+    desktop-file-utils
     pkg-config
     makeWrapper
+    meson
+    ninja
     wrapGAppsHook3
   ];
 
   buildInputs = [
     gtk3
+    libayatana-appindicator
     libpulseaudio
     libdrm
+    libX11
+    libXrandr
+    wayland
   ];
 
-  buildPhase = ''
-    ./build.sh
-  '';
-
-  installPhase = ''
-    install -Dt $out/bin/ gpu-screen-recorder-gtk
-    install -Dt $out/share/applications/ gpu-screen-recorder-gtk.desktop
-
-    gappsWrapperArgs+=(--prefix PATH : ${lib.makeBinPath [ gpu-screen-recorder ]})
+  preFixup = let
+    gpu-screen-recorder-wrapped = gpu-screen-recorder.override {
+      inherit wrapperDir;
+    };
+  in ''
+    gappsWrapperArgs+=(--prefix PATH : ${wrapperDir})
+    gappsWrapperArgs+=(--suffix PATH : ${lib.makeBinPath [ gpu-screen-recorder-wrapped ]})
     # we also append /run/opengl-driver/lib as it otherwise fails to find libcuda.
     gappsWrapperArgs+=(--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libglvnd ]}:/run/opengl-driver/lib)
   '';
diff --git a/pkgs/applications/video/handbrake/default.nix b/pkgs/applications/video/handbrake/default.nix
index f9761bd85bb56..610f5af8046e4 100644
--- a/pkgs/applications/video/handbrake/default.nix
+++ b/pkgs/applications/video/handbrake/default.nix
@@ -90,14 +90,14 @@
 }:
 
 let
-  version = "1.8.0";
+  version = "1.8.1";
 
   src = fetchFromGitHub {
     owner = "HandBrake";
     repo = "HandBrake";
     # uses version commit for logic in version.txt
-    rev = "5edf59c1da54fe1c9a487d09e8f52561fe49cb2a";
-    hash = "sha256-gr2UhqPY5mZOP8KBvk9yydl4AkTlqE83hYAcLwSv1Is=";
+    rev = "e9ff2bdf1ac670eb9c6d6170e27c999c05535127";
+    hash = "sha256-grbT+oRIyLnyJowhdqw7qGRg11HzWGIU9yTwUQhCWtg=";
   };
 
   # Handbrake maintains a set of ffmpeg patches. In particular, these
@@ -105,10 +105,10 @@ let
   # https://github.com/HandBrake/HandBrake/issues/4029
   # base ffmpeg version is specified in:
   # https://github.com/HandBrake/HandBrake/blob/master/contrib/ffmpeg/module.defs
-  ffmpeg-version = "7.0";
+  ffmpeg-version = "7.0.1";
   ffmpeg-hb = (ffmpeg_7-full.override {
     version = ffmpeg-version;
-    hash = "sha256-RdDfv+0y90XpgjIRvTjsemKyGunzDbsh4j4WiE9rfyM=";
+    hash = "sha256-HiCT6bvLx4zmJ6ffutoimdz5ENQ55CRF64WBT3HeXMA=";
   }).overrideAttrs (old: {
     patches = (old.patches or [ ]) ++ [
       "${src}/contrib/ffmpeg/A01-mov-read-name-track-tag-written-by-movenc.patch"
@@ -133,8 +133,7 @@ let
       "${src}/contrib/ffmpeg/A16-amfenc-HDR-metadata.patch"
       "${src}/contrib/ffmpeg/A17-av1dec-dovi-rpu.patch"
       "${src}/contrib/ffmpeg/A18-avformat-mov-add-support-audio-fallback-track-ref.patch"
-      "${src}/contrib/ffmpeg/A19-mov-ignore-old-infe-box.patch"
-      "${src}/contrib/ffmpeg/A20-mov-free-infe-on-failure.patch"
+      "${src}/contrib/ffmpeg/A19-fix-qsv-on-gcc-14.patch"
     ];
   });
 
@@ -168,8 +167,7 @@ let
 
   inherit (lib) optional optionals optionalString versions;
 
-in
-let
+
   self = stdenv.mkDerivation rec {
     pname = "handbrake";
     inherit version src;
diff --git a/pkgs/applications/video/hyperion-ng/default.nix b/pkgs/applications/video/hyperion-ng/default.nix
index 67df0dd420b00..00c2467624b80 100644
--- a/pkgs/applications/video/hyperion-ng/default.nix
+++ b/pkgs/applications/video/hyperion-ng/default.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
     owner = "hyperion-project";
     repo = pname;
     rev = version;
-    sha256 = "sha256-Y1PZ+YyPMZEX4fBpMG6IVT1gtXR9ZHlavJMCQ4KAenc=";
+    hash = "sha256-Y1PZ+YyPMZEX4fBpMG6IVT1gtXR9ZHlavJMCQ4KAenc=";
     # needed for `dependencies/external/`:
     # * rpi_ws281x` - not possible to use as a "system" lib
     # * qmdnsengine - not in nixpkgs yet
diff --git a/pkgs/applications/video/hypnotix/default.nix b/pkgs/applications/video/hypnotix/default.nix
index 00f8eb6b024ba..c38b2f5c703f9 100644
--- a/pkgs/applications/video/hypnotix/default.nix
+++ b/pkgs/applications/video/hypnotix/default.nix
@@ -2,7 +2,7 @@
 , stdenv
 , fetchFromGitHub
 , substituteAll
-, cinnamon
+, xapp
 , circle-flags
 , gettext
 , gobject-introspection
@@ -14,13 +14,13 @@
 
 stdenv.mkDerivation rec {
   pname = "hypnotix";
-  version = "4.5";
+  version = "4.6";
 
   src = fetchFromGitHub {
     owner = "linuxmint";
     repo = "hypnotix";
     rev = version;
-    hash = "sha256-tcBBPJr9C+3FC8VWAM+KzETKAovfyehBvlmn7mIR7VQ=";
+    hash = "sha256-wDzHCrZTbfIb9dpRoh5qYKQNjONOv34FYdOr4svOLEw=";
   };
 
   patches = [
@@ -51,7 +51,7 @@ stdenv.mkDerivation rec {
   dontWrapGApps = true;
 
   buildInputs = [
-    cinnamon.xapp
+    xapp
     python3 # for patchShebangs
   ];
 
@@ -61,7 +61,7 @@ stdenv.mkDerivation rec {
     requests
     setproctitle
     unidecode
-    xapp
+    python-xapp
   ];
 
   installPhase = ''
diff --git a/pkgs/applications/video/jellyfin-mpv-shim/default.nix b/pkgs/applications/video/jellyfin-mpv-shim/default.nix
index fe32c894c741a..f810b5403f1ba 100644
--- a/pkgs/applications/video/jellyfin-mpv-shim/default.nix
+++ b/pkgs/applications/video/jellyfin-mpv-shim/default.nix
@@ -22,7 +22,7 @@ buildPythonApplication rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-EANaNmvD8hcdGB2aoGemKvA9syS1VvIqGsP1jk0b+lE=";
+    hash = "sha256-EANaNmvD8hcdGB2aoGemKvA9syS1VvIqGsP1jk0b+lE=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/video/jftui/default.nix b/pkgs/applications/video/jftui/default.nix
index efd8d6ed6e2a8..e30ba77dd8738 100644
--- a/pkgs/applications/video/jftui/default.nix
+++ b/pkgs/applications/video/jftui/default.nix
@@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "Jellyfin Terminal User Interface ";
+    description = "Jellyfin Terminal User Interface";
     homepage = "https://github.com/Aanok/jftui";
     license = licenses.unlicense;
     maintainers = [ maintainers.nyanloutre ];
diff --git a/pkgs/applications/video/kaffeine/default.nix b/pkgs/applications/video/kaffeine/default.nix
index 40701d2cbf85e..c2866e280f126 100644
--- a/pkgs/applications/video/kaffeine/default.nix
+++ b/pkgs/applications/video/kaffeine/default.nix
@@ -1,7 +1,6 @@
 { stdenv
 , lib
 , fetchFromGitLab
-, kio
 , cmake
 , extra-cmake-modules
 , libvlc
diff --git a/pkgs/applications/video/kodi/addons/inputstreamhelper/default.nix b/pkgs/applications/video/kodi/addons/inputstreamhelper/default.nix
index 13b2738fdff99..deca0d57d7c51 100644
--- a/pkgs/applications/video/kodi/addons/inputstreamhelper/default.nix
+++ b/pkgs/applications/video/kodi/addons/inputstreamhelper/default.nix
@@ -1,4 +1,4 @@
-{ lib, rel, buildKodiAddon, fetchzip, addonUpdateScript }:
+{ lib, rel, buildKodiAddon, fetchzip, fetchpatch, addonUpdateScript }:
 buildKodiAddon rec {
   pname = "inputstreamhelper";
   namespace = "script.module.inputstreamhelper";
@@ -9,6 +9,13 @@ buildKodiAddon rec {
     sha256 = "sha256-v5fRikswmP+KVbxYibD0NbCK8leUnFbya5EtF1FmS0I=";
   };
 
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/emilsvennesson/script.module.inputstreamhelper/commit/af6adc16a0bee4921a827946b004ee070406ae37.patch";
+      hash = "sha256-901EyVeZUb0EMvxsEza95qFjTOZ7PDYyqHMRawPM5Zs=";
+    })
+  ];
+
   passthru = {
     pythonPath = "lib";
     updateScript = addonUpdateScript {
diff --git a/pkgs/applications/video/kodi/addons/jellyfin/default.nix b/pkgs/applications/video/kodi/addons/jellyfin/default.nix
index 93217122d53bf..bae280a0f6561 100644
--- a/pkgs/applications/video/kodi/addons/jellyfin/default.nix
+++ b/pkgs/applications/video/kodi/addons/jellyfin/default.nix
@@ -1,28 +1,35 @@
-{ lib, addonDir, buildKodiAddon, fetchFromGitHub, kodi, requests, dateutil, six, kodi-six, signals, websocket }:
+{
+  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 = "1.0.3";
+  version = "1.0.5";
 
   src = fetchFromGitHub {
     owner = "jellyfin";
     repo = "jellyfin-kodi";
     rev = "v${version}";
-    sha256 = "sha256-Uyo8GClJU2/gdk4PeFNnoyvxOhooaxeXN3Wc5YGuCiM=";
+    sha256 = "sha256-MPRyMeJuuiG62ahNKfXyb3Q4LDm0yXkNgCeYxfpT1io=";
   };
 
-  nativeBuildInputs = [
-    python
-  ];
+  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:"
-  '';
+  # ZIP does not support timestamps before 1980 - https://bugs.python.org/issue34097
+  patches = [ ./no-strict-zip-timestamp.patch ];
 
   buildPhase = ''
     ${python}/bin/python3 build.py --version=py3
diff --git a/pkgs/applications/video/kodi/addons/jellyfin/no-strict-zip-timestamp.patch b/pkgs/applications/video/kodi/addons/jellyfin/no-strict-zip-timestamp.patch
new file mode 100644
index 0000000000000..07d54c1e13841
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/jellyfin/no-strict-zip-timestamp.patch
@@ -0,0 +1,15 @@
+diff --git a/build.py b/build.py
+index 148441f3..2aa0f1ea 100755
+--- a/build.py
++++ b/build.py
+@@ -69,7 +69,9 @@ def zip_files(py_version: str, source: str, target: str, dev: bool) -> None:
+     """
+     archive_name = "plugin.video.jellyfin+{}.zip".format(py_version)
+ 
+-    with zipfile.ZipFile("{}/{}".format(target, archive_name), "w") as z:
++    with zipfile.ZipFile(
++        "{}/{}".format(target, archive_name), "w", strict_timestamps=False
++    ) as z:
+         for root, dirs, files in os.walk(args.source):
+             for filename in filter(file_filter, files):
+                 file_path = os.path.join(root, filename)
diff --git a/pkgs/applications/video/kodi/addons/orftvthek/default.nix b/pkgs/applications/video/kodi/addons/orftvthek/default.nix
index 416cb9a30a6be..64b822c355107 100644
--- a/pkgs/applications/video/kodi/addons/orftvthek/default.nix
+++ b/pkgs/applications/video/kodi/addons/orftvthek/default.nix
@@ -1,27 +1,27 @@
-{ lib, buildKodiAddon, fetchFromGitHub, future, kodi-six, simplejson, inputstreamhelper }:
+{ lib, buildKodiAddon, fetchFromGitHub, inputstream-adaptive, inputstreamhelper, routing }:
 
 buildKodiAddon rec {
   pname = "orftvthek";
   namespace = "plugin.video.orftvthek";
-  version = "0.12.12";
+  version = "1.0.2+matrix.1";
 
   src = fetchFromGitHub {
     owner = "s0faking";
     repo = namespace;
     rev = version;
-    sha256 = "sha256-4VLr4DFxioCrlq5JtiPyd7E4a+++cWgxCnRb3KPppWE=";
+    sha256 = "sha256-bCVsR7lH0REJmG3OKU8mRRvw/PhSrLfhufmVBmw05+k=";
   };
 
   propagatedBuildInputs = [
-    future
-    kodi-six
-    simplejson
+    # Needed for content decryption with Widevine.
+    inputstream-adaptive
     inputstreamhelper
+    routing
   ];
 
   meta = with lib; {
     homepage = "https://github.com/s0faking/plugin.video.orftvthek";
-    description = "Addon that gives you access to the ORF TVthek Video Platform";
+    description = "Addon for accessing the Austrian ORF ON streaming service";
     license = licenses.gpl2Only;
     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
index 2cf5f8784dc1f..7644a71d71bc9 100644
--- a/pkgs/applications/video/kodi/addons/osmc-skin/default.nix
+++ b/pkgs/applications/video/kodi/addons/osmc-skin/default.nix
@@ -15,7 +15,7 @@ buildKodiAddon rec {
     homepage = "https://github.com/osmc/skin.osmc";
     description = "Default skin for OSMC";
     platforms = platforms.all;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     license = licenses.cc-by-nc-sa-30;
 
     broken = true; # no release for kodi 21
diff --git a/pkgs/applications/video/kodi/addons/pdfreader/default.nix b/pkgs/applications/video/kodi/addons/pdfreader/default.nix
index c2c11e92213f4..60a08a9cfbeae 100644
--- a/pkgs/applications/video/kodi/addons/pdfreader/default.nix
+++ b/pkgs/applications/video/kodi/addons/pdfreader/default.nix
@@ -2,13 +2,13 @@
 buildKodiAddon rec {
   pname = "pdfreader";
   namespace = "plugin.image.pdf";
-  version = "2.0.2";
+  version = "2.0.3";
 
   src = fetchFromGitHub {
     owner = "i96751414";
     repo = "plugin.image.pdfreader";
     rev = "v${version}";
-    sha256 = "0nkqhlm1gyagq6xpdgqvd5qxyr2ngpml9smdmzfabc8b972mwjml";
+    sha256 = "sha256-J93poR5VO9fAgNCEGftJVYnpXOsJSxnhHI6TAJZ2LeI=";
   };
 
   passthru.pythonPath = "lib/api";
diff --git a/pkgs/applications/video/kodi/addons/pvr-hts/default.nix b/pkgs/applications/video/kodi/addons/pvr-hts/default.nix
index 9b20235e8ea17..50e12c09c1c8b 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 = "21.2.3";
+  version = "21.2.5";
 
   src = fetchFromGitHub {
     owner = "kodi-pvr";
     repo = "pvr.hts";
     rev = "${version}-${rel}";
-    sha256 = "sha256-4jHcUjGarLHsn5CjBLWB1wQNjBBw4ftMuDY5uFAHAzY=";
+    sha256 = "sha256-BG5mGD674gvjUSdydu4g3F/4GH53gkJoKMDuvaFNi6k=";
   };
 
   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 59f39a06fd71e..b976c15371f2f 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 = "21.8.4";
+  version = "21.8.5";
 
   src = fetchFromGitHub {
     owner = "kodi-pvr";
     repo = "pvr.iptvsimple";
     rev = "${version}-${rel}";
-    sha256 = "sha256-uuqk1kJnioCaRWIkC5liPSVRQPpviuaE+wmE4rq6fJw=";
+    sha256 = "sha256-UFEZZr7Z6GqnN8ZSA+JkdsiAlf7p5xPwDOcwLzJc9v8=";
   };
 
   extraBuildInputs = [
diff --git a/pkgs/applications/video/kodi/addons/pvr-vdr-vnsi/default.nix b/pkgs/applications/video/kodi/addons/pvr-vdr-vnsi/default.nix
index 9fdbee949d8fd..85729e1290435 100644
--- a/pkgs/applications/video/kodi/addons/pvr-vdr-vnsi/default.nix
+++ b/pkgs/applications/video/kodi/addons/pvr-vdr-vnsi/default.nix
@@ -2,13 +2,13 @@
 buildKodiBinaryAddon rec {
   pname = "pvr-vdr-vnsi";
   namespace = "pvr.vdr.vnsi";
-  version = "21.1.1";
+  version = "21.1.2";
 
   src = fetchFromGitHub {
     owner = "kodi-pvr";
     repo = "pvr.vdr.vnsi";
     rev = "${version}-${rel}";
-    sha256 = "sha256-Bd/21y3oAhQMmvrZzrN5Z6jLHySBd2LXNbLt/Me4jSw=";
+    sha256 = "sha256-o7WVO/TvSK6bZEnUeNQhapXOVQbDlpJDObC93/9XpJo=";
   };
 
   extraBuildInputs = [ libGL ];
diff --git a/pkgs/applications/video/kodi/addons/sendtokodi/default.nix b/pkgs/applications/video/kodi/addons/sendtokodi/default.nix
index f6946842ded41..792f585673dd0 100644
--- a/pkgs/applications/video/kodi/addons/sendtokodi/default.nix
+++ b/pkgs/applications/video/kodi/addons/sendtokodi/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildKodiAddon, fetchFromGitHub, addonUpdateScript, kodi, inputstreamhelper }:
+{ lib, buildKodiAddon, fetchFromGitHub, kodi, inputstreamhelper }:
 
 buildKodiAddon rec {
   pname = "sendtokodi";
@@ -13,7 +13,10 @@ buildKodiAddon rec {
   };
 
   patches = [
-    ./use-packaged-deps.patch
+    # Unconditionally depend on packaged yt-dlp. This removes the ability to
+    # use youtube_dl, which is unmaintained and considered vulnerable (see
+    # CVE-2024-38519).
+    ./use-packaged-yt-dlp.patch
   ];
 
   propagatedBuildInputs = [
@@ -26,14 +29,14 @@ buildKodiAddon rec {
   '';
 
   passthru = {
-    # Instead of the vendored libraries, we propagate youtube-dl and yt-dlp via
-    # the Python path.
-    pythonPath = with kodi.pythonPackages; makePythonPath [ youtube-dl yt-dlp ];
+    # Instead of the vendored libraries, we propagate yt-dlp via the Python
+    # path.
+    pythonPath = with kodi.pythonPackages; makePythonPath [ yt-dlp ];
   };
 
   meta = with lib; {
     homepage = "https://github.com/firsttris/plugin.video.sendtokodi";
-    description = "Plays various stream sites on Kodi using youtube-dl";
+    description = "Plays various stream sites on Kodi using yt-dlp";
     license = licenses.mit;
     maintainers = teams.kodi.members ++ [ maintainers.pks ];
   };
diff --git a/pkgs/applications/video/kodi/addons/sendtokodi/use-packaged-deps.patch b/pkgs/applications/video/kodi/addons/sendtokodi/use-packaged-yt-dlp.patch
index abfea58a7ceb8..b53e1a434fffc 100644
--- a/pkgs/applications/video/kodi/addons/sendtokodi/use-packaged-deps.patch
+++ b/pkgs/applications/video/kodi/addons/sendtokodi/use-packaged-yt-dlp.patch
@@ -1,16 +1,18 @@
 diff --git a/service.py b/service.py
-index 1d7b6e4..9782993 100644
+index 024ad9a..6ef71dd 100644
 --- a/service.py
 +++ b/service.py
-@@ -241,9 +241,9 @@ def playlistIndex(url, playlist):
+@@ -243,11 +243,8 @@ def playlistIndex(url, playlist):
+ 
  
  # Use the chosen resolver while forcing to use youtube_dl on legacy python 2 systems (dlp is python 3.6+)
- if xbmcplugin.getSetting(int(sys.argv[1]),"resolver") == "0" or sys.version_info[0] == 2:
+-if xbmcplugin.getSetting(int(sys.argv[1]),"resolver") == "0" or sys.version_info[0] == 2:
 -    from lib.youtube_dl import YoutubeDL
-+    from youtube_dl import YoutubeDL
- else:
+-else:
 -    from lib.yt_dlp import YoutubeDL
-+    from yt_dlp import YoutubeDL
-     
+-    
++from yt_dlp import YoutubeDL
++
  # patch broken strptime (see above)
  patch_strptime()
+ 
diff --git a/pkgs/applications/video/kodi/addons/websocket/default.nix b/pkgs/applications/video/kodi/addons/websocket/default.nix
index 40667e71392bb..544f86a8bbbd9 100644
--- a/pkgs/applications/video/kodi/addons/websocket/default.nix
+++ b/pkgs/applications/video/kodi/addons/websocket/default.nix
@@ -1,4 +1,4 @@
-{ lib, rel, buildKodiAddon, fetchzip, addonUpdateScript, six, addonDir }:
+{ lib, rel, buildKodiAddon, fetchzip, addonUpdateScript, six }:
 
 buildKodiAddon rec {
   pname = "websocket";
diff --git a/pkgs/applications/video/kodi/no-python-lib.patch b/pkgs/applications/video/kodi/no-python-lib.patch
new file mode 100644
index 0000000000000..d45e02dd18461
--- /dev/null
+++ b/pkgs/applications/video/kodi/no-python-lib.patch
@@ -0,0 +1,13 @@
+diff --git a/cmake/scripts/linux/Install.cmake b/cmake/scripts/linux/Install.cmake
+index 9c45c91774..763d6acab4 100644
+--- a/cmake/scripts/linux/Install.cmake
++++ b/cmake/scripts/linux/Install.cmake
+@@ -199,8 +199,6 @@ install(FILES ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/scripts/${APP_NAME}Config.cm
+ 
+ if(ENABLE_EVENTCLIENTS)
+   find_package(PythonInterpreter REQUIRED)
+-  execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(prefix=''))"
+-                  OUTPUT_VARIABLE PYTHON_LIB_PATH OUTPUT_STRIP_TRAILING_WHITESPACE)
+   # Install kodi-eventclients-common BT python files
+   install(PROGRAMS ${CMAKE_SOURCE_DIR}/tools/EventClients/lib/python/bt/__init__.py
+                    ${CMAKE_SOURCE_DIR}/tools/EventClients/lib/python/bt/bt.py
diff --git a/pkgs/applications/video/kodi/unwrapped.nix b/pkgs/applications/video/kodi/unwrapped.nix
index e8e5b5844f1f4..661f08c576b6e 100644
--- a/pkgs/applications/video/kodi/unwrapped.nix
+++ b/pkgs/applications/video/kodi/unwrapped.nix
@@ -4,7 +4,7 @@
 , libxcrypt, libgcrypt, libgpg-error, libunistring
 , boost, avahi, lame
 , gettext, pcre-cpp, yajl, fribidi, which
-, openssl, gperf, tinyxml2, tinyxml-2, taglib, libssh, swig, jre_headless
+, openssl, gperf, tinyxml2, tinyxml-2, taglib, libssh, jre_headless
 , gtest, ncurses, spdlog
 , libxml2, systemd
 , alsa-lib, libGLU, libGL, ffmpeg, fontconfig, freetype, ftgl
@@ -87,16 +87,20 @@ let
 
 in stdenv.mkDerivation (finalAttrs: {
     pname = "kodi";
-    version = "21.0";
+    version = "21.1";
     kodiReleaseName = "Omega";
 
     src = fetchFromGitHub {
       owner = "xbmc";
       repo  = "xbmc";
       rev   = "${finalAttrs.version}-${finalAttrs.kodiReleaseName}";
-      hash  = "sha256-xrFWqgwTkurEwt3/+/e4SCM6Uk9nxuW62SrCFWWqZO0=";
+      hash  = "sha256-NjId1T1cw9dl0Fx1QDsijiN1VUpuQ/EFl1kxWSESCR4=";
     };
 
+    patches = [
+      ./no-python-lib.patch
+    ];
+
     # make  derivations declared in the let binding available here, so
     # they can be overridden
     inherit libdvdcss libdvdnav libdvdread groovy
@@ -189,6 +193,7 @@ in stdenv.mkDerivation (finalAttrs: {
       "-DSWIG_EXECUTABLE=${buildPackages.swig}/bin/swig"
       "-DFLATBUFFERS_FLATC_EXECUTABLE=${buildPackages.flatbuffers}/bin/flatc"
       "-DPYTHON_EXECUTABLE=${buildPackages.python3Packages.python}/bin/python"
+      "-DPYTHON_LIB_PATH=${python3Packages.python.sitePackages}"
       # When wrapped KODI_HOME will likely contain symlinks to static assets
       # that Kodi's built in webserver will cautiously refuse to serve up
       # (because their realpaths are outside of KODI_HOME and the other
@@ -256,5 +261,6 @@ in stdenv.mkDerivation (finalAttrs: {
       license     = licenses.gpl2Plus;
       platforms   = platforms.linux;
       maintainers = teams.kodi.members;
+      mainProgram = "kodi";
     };
 })
diff --git a/pkgs/applications/video/lightworks/default.nix b/pkgs/applications/video/lightworks/default.nix
index ea2f0bde5e33c..c803e906e2d81 100644
--- a/pkgs/applications/video/lightworks/default.nix
+++ b/pkgs/applications/video/lightworks/default.nix
@@ -1,7 +1,30 @@
-{ lib, stdenv, fetchurl, dpkg, makeWrapper, buildFHSEnv
-, gtk3, gdk-pixbuf, cairo, libjpeg_original, glib, pango, libGLU
-, libGL, nvidia_cg_toolkit, zlib, openssl, libuuid
-, alsa-lib, udev, libjack2, freetype, libva, libvdpau
+{
+  lib,
+  stdenv,
+  fetchurl,
+  dpkg,
+  makeWrapper,
+  buildFHSEnv,
+  gtk3,
+  gdk-pixbuf,
+  cairo,
+  libjpeg_original,
+  glib,
+  pango,
+  libGLU,
+  libGL,
+  nvidia_cg_toolkit,
+  zlib,
+  openssl,
+  libuuid,
+  alsa-lib,
+  udev,
+  libjack2,
+  freetype,
+  libva,
+  libvdpau,
+  twolame,
+  gmp,
 }:
 let
   fullPath = lib.makeLibraryPath [
@@ -24,20 +47,23 @@ let
     freetype
     libva
     libvdpau
+    twolame
+    gmp
   ];
 
   lightworks = stdenv.mkDerivation rec {
     version = "2023.2";
-    rev = "146240";
+    rev = "146752";
     pname = "lightworks";
 
     src =
       if stdenv.hostPlatform.system == "x86_64-linux" then
         fetchurl {
           url = "https://cdn.lwks.com/releases/${version}/lightworks_${version}_r${rev}.deb";
-          sha256 = "sha256-sVEDCZZsY5OwuWebrhatzZiws89/tEKIdgY54PN0Ddo=";
+          sha256 = "sha256-Xjcqdhe85YdPX8AHpKmo/K77AURg0JvtqIvilQOV2ek=";
         }
-      else throw "${pname}-${version} is not supported on ${stdenv.hostPlatform.system}";
+      else
+        throw "${pname}-${version} is not supported on ${stdenv.hostPlatform.system}";
 
     nativeBuildInputs = [ makeWrapper ];
     buildInputs = [ dpkg ];
@@ -76,13 +102,12 @@ let
     dontPatchELF = true;
   };
 
+in
 # Lightworks expects some files in /usr/share/lightworks
-in buildFHSEnv {
-  name = lightworks.name;
+buildFHSEnv {
+  inherit (lightworks) pname version;
 
-  targetPkgs = pkgs: [
-      lightworks
-  ];
+  targetPkgs = pkgs: [ lightworks ];
 
   runScript = "lightworks";
 
@@ -91,7 +116,12 @@ in buildFHSEnv {
     homepage = "https://www.lwks.com/";
     sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
     license = lib.licenses.unfree;
-    maintainers = with lib.maintainers; [ antonxy vojta001 kashw2 ];
+    mainProgram = "lightworks";
+    maintainers = with lib.maintainers; [
+      antonxy
+      vojta001
+      kashw2
+    ];
     platforms = [ "x86_64-linux" ];
   };
 }
diff --git a/pkgs/applications/video/losslesscut-bin/build-from-appimage.nix b/pkgs/applications/video/losslesscut-bin/build-from-appimage.nix
index 14e4cf215e7bc..b6aa8009dcd0a 100644
--- a/pkgs/applications/video/losslesscut-bin/build-from-appimage.nix
+++ b/pkgs/applications/video/losslesscut-bin/build-from-appimage.nix
@@ -1,9 +1,6 @@
-{ lib
-, appimageTools
+{ appimageTools
 , fetchurl
 , makeWrapper
-, gtk3
-, gsettings-desktop-schemas
 , pname
 , version
 , hash
diff --git a/pkgs/applications/video/memento/default.nix b/pkgs/applications/video/memento/default.nix
index 0c993de2fcaba..1f6981215d39b 100644
--- a/pkgs/applications/video/memento/default.nix
+++ b/pkgs/applications/video/memento/default.nix
@@ -16,13 +16,13 @@
 , makeWrapper}:
 stdenv.mkDerivation (finalAttrs: {
   pname = "memento";
-  version = "1.4.0";
+  version = "1.4.1";
 
   src = fetchFromGitHub {
     owner = "ripose-jp";
     repo = "Memento";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-/lgjzR2KwlIUMHSz3afBQEy+8kdKAI37kqTuq3r3qMk=";
+    hash = "sha256-3WOtf7cgYxAMlNPSBmTzaQF1HN9mU61giLp2woBAidY=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/video/minitube/default.nix b/pkgs/applications/video/minitube/default.nix
index 557eba2b87b11..0f290f01459c8 100644
--- a/pkgs/applications/video/minitube/default.nix
+++ b/pkgs/applications/video/minitube/default.nix
@@ -9,7 +9,7 @@ mkDerivation rec {
   version = "3.9.3";
 
   src = fetchFromGitHub {
-    sha256 = "sha256-ROqROQsV8ddrxYT5mMdkf6rCgCoGr1jpxQ1ohcoEaQs=";
+    hash = "sha256-ROqROQsV8ddrxYT5mMdkf6rCgCoGr1jpxQ1ohcoEaQs=";
     rev = version;
     repo = "minitube";
     owner = "flaviotordini";
@@ -38,7 +38,7 @@ mkDerivation rec {
     homepage = "https://flavio.tordini.org/minitube";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     mainProgram = "minitube";
   };
 }
diff --git a/pkgs/applications/video/mkvtoolnix/default.nix b/pkgs/applications/video/mkvtoolnix/default.nix
index 8aaa0cf1448a3..79b16f06c6f1a 100644
--- a/pkgs/applications/video/mkvtoolnix/default.nix
+++ b/pkgs/applications/video/mkvtoolnix/default.nix
@@ -49,13 +49,13 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "mkvtoolnix";
-  version = "85.0";
+  version = "86.0";
 
   src = fetchFromGitLab {
     owner = "mbunkus";
     repo = "mkvtoolnix";
     rev = "release-${version}";
-    hash = "sha256-E8fULDUkEnh/0W/OIh+peO+JXSecgINPJclOTc5KYVo=";
+    hash = "sha256-h9rVs4A7JihnCj15XUus9xMvShKWyYhJN/90v/fl0PE=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/video/mlv-app/default.nix b/pkgs/applications/video/mlv-app/default.nix
index 05c6799e4213b..e3f61cdd82018 100644
--- a/pkgs/applications/video/mlv-app/default.nix
+++ b/pkgs/applications/video/mlv-app/default.nix
@@ -54,7 +54,7 @@ mkDerivation rec {
     description = "All in one MLV processing app that is pretty great";
     homepage = "https://mlv.app";
     license = licenses.gpl3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     platforms = platforms.linux;
     mainProgram = "mlvapp";
   };
diff --git a/pkgs/applications/video/mpc-qt/default.nix b/pkgs/applications/video/mpc-qt/default.nix
index 9bb23b548e3fb..c9219fdf63596 100644
--- a/pkgs/applications/video/mpc-qt/default.nix
+++ b/pkgs/applications/video/mpc-qt/default.nix
@@ -12,13 +12,13 @@
 
 stdenv.mkDerivation rec {
   pname = "mpc-qt";
-  version = "23.12";
+  version = "24.06";
 
   src = fetchFromGitHub {
     owner = "mpc-qt";
     repo = "mpc-qt";
     rev = "v${version}";
-    hash = "sha256-v22o5QtCY9Z8bPoIkwypG0oTBEPqPFeKZ8cWO+pKCD0=";
+    hash = "sha256-kEG7B99io3BGjN94nEX1pN10Bcjj21rb46Vcn2OtpN8=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/video/mplayer/default.nix b/pkgs/applications/video/mplayer/default.nix
index 97d1baf9c3e3f..6b546b5111ebb 100644
--- a/pkgs/applications/video/mplayer/default.nix
+++ b/pkgs/applications/video/mplayer/default.nix
@@ -1,4 +1,4 @@
-{ config, lib, stdenv, fetchurl, fetchsvn, pkg-config, freetype, yasm, ffmpeg_4
+{ config, lib, stdenv, fetchurl, fetchsvn, pkg-config, freetype, yasm, ffmpeg_6
 , aalibSupport ? true, aalib
 , fontconfigSupport ? true, fontconfig, freefont_ttf
 , fribidiSupport ? true, fribidi
@@ -70,12 +70,12 @@ in
 
 stdenv.mkDerivation rec {
   pname = "mplayer";
-  version = "unstable-2022-02-03";
+  version = "1.5-unstable-2024-07-03";
 
   src = fetchsvn {
     url = "svn://svn.mplayerhq.hu/mplayer/trunk";
-    rev = "38331";
-    sha256 = "1vpic8i6zvg0zsy50vhm45ysqag561bpn9jycfbvvwl9ji7l55zi";
+    rev = "38637";
+    hash = "sha256-9KQOB6QIs1VZhazJqW8dY4ASiMgoxV6davfpKgLPbmE=";
   };
 
   prePatch = ''
@@ -86,38 +86,37 @@ stdenv.mkDerivation rec {
 
   depsBuildBuild = [ buildPackages.stdenv.cc ];
   nativeBuildInputs = [ pkg-config yasm ];
-  buildInputs = with lib;
-    [ freetype ffmpeg_4 ]
-    ++ optional aalibSupport aalib
-    ++ optional fontconfigSupport fontconfig
-    ++ optional fribidiSupport fribidi
-    ++ optionals x11Support [ libX11 libXext libGLU libGL ]
-    ++ optional alsaSupport alsa-lib
-    ++ optional xvSupport libXv
-    ++ optional theoraSupport libtheora
-    ++ optional cacaSupport libcaca
-    ++ optional xineramaSupport libXinerama
-    ++ optional dvdnavSupport libdvdnav
-    ++ optional dvdreadSupport libdvdread
-    ++ optional bluraySupport libbluray
-    ++ optional cddaSupport cdparanoia
-    ++ optional jackaudioSupport libjack2
-    ++ optionals amrSupport [ amrnb amrwb ]
-    ++ optional x264Support x264
-    ++ optional pulseSupport libpulseaudio
-    ++ optional screenSaverSupport libXScrnSaver
-    ++ optional lameSupport lame
-    ++ optional vdpauSupport libvdpau
-    ++ optional speexSupport speex
-    ++ optional libpngSupport libpng
-    ++ optional libjpegSupport libjpeg
-    ++ optional bs2bSupport libbs2b
-    ++ optional v4lSupport libv4l
-    ++ (with darwin.apple_sdk.frameworks; optionals stdenv.isDarwin [ Cocoa OpenGL ])
+  buildInputs = [ freetype ffmpeg_6 ]
+    ++ lib.optional aalibSupport aalib
+    ++ lib.optional fontconfigSupport fontconfig
+    ++ lib.optional fribidiSupport fribidi
+    ++ lib.optionals x11Support [ libX11 libXext libGLU libGL ]
+    ++ lib.optional alsaSupport alsa-lib
+    ++ lib.optional xvSupport libXv
+    ++ lib.optional theoraSupport libtheora
+    ++ lib.optional cacaSupport libcaca
+    ++ lib.optional xineramaSupport libXinerama
+    ++ lib.optional dvdnavSupport libdvdnav
+    ++ lib.optional dvdreadSupport libdvdread
+    ++ lib.optional bluraySupport libbluray
+    ++ lib.optional cddaSupport cdparanoia
+    ++ lib.optional jackaudioSupport libjack2
+    ++ lib.optionals amrSupport [ amrnb amrwb ]
+    ++ lib.optional x264Support x264
+    ++ lib.optional pulseSupport libpulseaudio
+    ++ lib.optional screenSaverSupport libXScrnSaver
+    ++ lib.optional lameSupport lame
+    ++ lib.optional vdpauSupport libvdpau
+    ++ lib.optional speexSupport speex
+    ++ lib.optional libpngSupport libpng
+    ++ lib.optional libjpegSupport libjpeg
+    ++ lib.optional bs2bSupport libbs2b
+    ++ lib.optional v4lSupport libv4l
+    ++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Cocoa darwin.apple_sdk.frameworks.OpenGL ]
     ;
 
   configurePlatforms = [ ];
-  configureFlags = with lib; [
+  configureFlags = [
     "--enable-freetype"
     (if fontconfigSupport then "--enable-fontconfig" else "--disable-fontconfig")
     (if x11Support then "--enable-x11 --enable-gl" else "--disable-x11 --disable-gl")
@@ -143,18 +142,14 @@ stdenv.mkDerivation rec {
     "--disable-ossaudio"
     "--disable-ffmpeg_a"
     "--yasm=${buildPackages.yasm}/bin/yasm"
-    # Note, the `target` vs `host` confusion is intensional.
+    # Note, the `target` vs `host` confusion is intentional.
     "--target=${stdenv.hostPlatform.config}"
-  ] ++ optional
-         (useUnfreeCodecs && codecs != null && !crossBuild)
-         "--codecsdir=${codecs}"
-    ++ optional
-         (stdenv.hostPlatform.isx86 && !crossBuild)
-         "--enable-runtime-cpudetection"
-    ++ optional fribidiSupport "--enable-fribidi"
-    ++ optional (stdenv.isLinux && !stdenv.isAarch64) "--enable-vidix"
-    ++ optional stdenv.isLinux "--enable-fbdev"
-    ++ optionals (crossBuild) [
+  ] ++ lib.optional (useUnfreeCodecs && codecs != null && !crossBuild) "--codecsdir=${codecs}"
+    ++ lib.optional (stdenv.hostPlatform.isx86 && !crossBuild) "--enable-runtime-cpudetection"
+    ++ lib.optional fribidiSupport "--enable-fribidi"
+    ++ lib.optional (stdenv.isLinux && !stdenv.isAarch64) "--enable-vidix"
+    ++ lib.optional stdenv.isLinux "--enable-fbdev"
+    ++ lib.optionals (crossBuild) [
     "--enable-cross-compile"
     "--disable-vidix-pcidb"
     "--with-vidix-drivers=no"
@@ -179,11 +174,11 @@ stdenv.mkDerivation rec {
   # Fixes compilation with newer versions of clang that make these warnings errors by default.
   NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang "-Wno-int-conversion -Wno-incompatible-function-pointer-types";
 
-  NIX_LDFLAGS = with lib; toString (
-       optional  fontconfigSupport "-lfontconfig"
-    ++ optional  fribidiSupport "-lfribidi"
-    ++ optionals x11Support [ "-lX11" "-lXext" ]
-    ++ optional  x264Support "-lx264"
+  NIX_LDFLAGS = toString (
+       lib.optional  fontconfigSupport "-lfontconfig"
+    ++ lib.optional  fribidiSupport "-lfribidi"
+    ++ lib.optionals x11Support [ "-lX11" "-lXext" ]
+    ++ lib.optional  x264Support "-lx264"
     ++ [ "-lfreetype" ]
   );
 
diff --git a/pkgs/applications/video/mpv/default.nix b/pkgs/applications/video/mpv/default.nix
index 0f9cec9c409bd..5b255be9a1a58 100644
--- a/pkgs/applications/video/mpv/default.nix
+++ b/pkgs/applications/video/mpv/default.nix
@@ -1,7 +1,7 @@
 {
   lib,
   SDL2,
-  addOpenGLRunpath,
+  addDriverRunpath,
   alsa-lib,
   bash,
   buildPackages,
@@ -203,7 +203,7 @@ stdenv'.mkDerivation (finalAttrs: {
 
   nativeBuildInputs =
     [
-      addOpenGLRunpath
+      addDriverRunpath
       docutils # for rst2man
       meson
       ninja
@@ -329,9 +329,9 @@ stdenv'.mkDerivation (finalAttrs: {
     '';
 
   # Set RUNPATH so that libcuda in /run/opengl-driver(-32)/lib can be found.
-  # See the explanation in addOpenGLRunpath.
+  # See the explanation in addDriverRunpath.
   postFixup = lib.optionalString stdenv.isLinux ''
-    addOpenGLRunpath $out/bin/mpv
+    addDriverRunpath $out/bin/mpv
     patchShebangs --update --host $out/bin/umpv $out/bin/mpv_identify.sh
   '';
 
@@ -377,7 +377,6 @@ stdenv'.mkDerivation (finalAttrs: {
       fpletz
       globin
       ma27
-      tadeokondrak
     ];
     platforms = lib.platforms.unix;
   };
diff --git a/pkgs/applications/video/mpv/scripts/default.nix b/pkgs/applications/video/mpv/scripts/default.nix
index c9e433e6fe00d..de0ee95044caa 100644
--- a/pkgs/applications/video/mpv/scripts/default.nix
+++ b/pkgs/applications/video/mpv/scripts/default.nix
@@ -41,40 +41,38 @@ let
             }
 
             # can't check whether `fullScriptPath` is a directory, in pure-evaluation mode
-            (
-              with lib;
-              optionalAttrs
-                (
-                  !any (s: hasSuffix s drv.passthru.scriptName) [
-                    ".js"
-                    ".lua"
-                    ".so"
-                  ]
-                )
-                {
-                  single-main-in-script-dir =
-                    runCommand "mpvScripts.${name}.passthru.tests.single-main-in-script-dir"
-                      {
-                        meta.maintainers = with lib.maintainers; [ nicoo ];
-                        preferLocalBuild = true;
+            (lib.optionalAttrs
+              (
+                !lib.any (s: lib.hasSuffix s drv.passthru.scriptName) [
+                  ".js"
+                  ".lua"
+                  ".so"
+                ]
+              )
+              {
+                single-main-in-script-dir =
+                  runCommand "mpvScripts.${name}.passthru.tests.single-main-in-script-dir"
+                    {
+                      meta.maintainers = with lib.maintainers; [ nicoo ];
+                      preferLocalBuild = true;
+                    }
+                    ''
+                      die() {
+                        echo "$@" >&2
+                        exit 1
                       }
-                      ''
-                        die() {
-                          echo "$@" >&2
-                          exit 1
-                        }
 
-                        cd "${drv}/${scriptPath}"  # so the glob expands to filenames only
-                        mains=( main.* )
-                        if [ "''${#mains[*]}" -eq 1 ]; then
-                          touch $out
-                        elif [ "''${#mains[*]}" -eq 0 ]; then
-                          die "'${scriptPath}' contains no 'main.*' file"
-                        else
-                          die "'${scriptPath}' contains multiple 'main.*' files:" "''${mains[*]}"
-                        fi
-                      '';
-                }
+                      cd "${drv}/${scriptPath}"  # so the glob expands to filenames only
+                      mains=( main.* )
+                      if [ "''${#mains[*]}" -eq 1 ]; then
+                        touch $out
+                      elif [ "''${#mains[*]}" -eq 0 ]; then
+                        die "'${scriptPath}' contains no 'main.*' file"
+                      else
+                        die "'${scriptPath}' contains multiple 'main.*' files:" "''${mains[*]}"
+                      fi
+                    '';
+              }
             )
           ];
         };
@@ -92,7 +90,12 @@ let
         autodeint
         autoload
         ;
-      inherit (callPackage ./occivink.nix { }) blacklistExtensions seekTo;
+      inherit (callPackage ./occivink.nix { })
+        blacklistExtensions
+        crop
+        encode
+        seekTo
+        ;
 
       buildLua = callPackage ./buildLua.nix { };
       autosubsync-mpv = callPackage ./autosubsync-mpv.nix { };
@@ -135,13 +138,12 @@ let
   };
 in
 
-with lib;
-pipe scope [
-  (makeScope newScope)
+lib.pipe scope [
+  (lib.makeScope newScope)
   (
     self:
     assert builtins.intersectAttrs self aliases == { };
-    self // optionalAttrs config.allowAliases aliases
+    self // lib.optionalAttrs config.allowAliases aliases
   )
-  recurseIntoAttrs
+  lib.recurseIntoAttrs
 ]
diff --git a/pkgs/applications/video/mpv/scripts/dynamic-crop.nix b/pkgs/applications/video/mpv/scripts/dynamic-crop.nix
index 541c83d5258ff..ea39f33ba418b 100644
--- a/pkgs/applications/video/mpv/scripts/dynamic-crop.nix
+++ b/pkgs/applications/video/mpv/scripts/dynamic-crop.nix
@@ -19,7 +19,7 @@ buildLua {
   passthru.updateScript = unstableGitUpdater { };
 
   meta = {
-    description = ''Script to "cropping" dynamically, hard-coded black bars detected with lavfi-cropdetect filter for Ultra Wide Screen or any screen (Smartphone/Tablet).'';
+    description = ''Script to "cropping" dynamically, hard-coded black bars detected with lavfi-cropdetect filter for Ultra Wide Screen or any screen (Smartphone/Tablet)'';
     homepage = "https://github.com/Ashyni/mpv-scripts";
     license = lib.licenses.mit;
     maintainers = [ lib.maintainers.iynaix ];
diff --git a/pkgs/applications/video/mpv/scripts/manga-reader.nix b/pkgs/applications/video/mpv/scripts/manga-reader.nix
index 4d8007d98d8d7..149e7c5137784 100644
--- a/pkgs/applications/video/mpv/scripts/manga-reader.nix
+++ b/pkgs/applications/video/mpv/scripts/manga-reader.nix
@@ -8,12 +8,12 @@
 buildLua rec {
   pname = "manga-reader";
 
-  version = "0-unstable-2024-03-17";
+  version = "0-unstable-2024-07-05";
   src = fetchFromGitHub {
     owner = "Dudemanguy";
     repo = "mpv-manga-reader";
-    rev = "6b65d98be7d20c8e272a4caa6c5018ed3a8bb2b3";
-    hash = "sha256-54n513lpn1KCErXJHqL+GKdDE1P52LolS6xDott/epY=";
+    rev = "fb06931eed4092fa74a98266cd04fa507ea63e13";
+    hash = "sha256-xtzDHv+zW/9LsLWo4Km7OQ05BVJlwqu9461i9ee94lM=";
   };
   passthru.updateScript = unstableGitUpdater { };
 
diff --git a/pkgs/applications/video/mpv/scripts/memo.nix b/pkgs/applications/video/mpv/scripts/memo.nix
index 5d9e2b50fae27..7795d1e7b9927 100644
--- a/pkgs/applications/video/mpv/scripts/memo.nix
+++ b/pkgs/applications/video/mpv/scripts/memo.nix
@@ -7,13 +7,13 @@
 
 buildLua {
   pname = "memo";
-  version = "0-unstable-2023-10-31";
+  version = "0-unstable-2024-07-02";
 
   src = fetchFromGitHub {
     owner = "po5";
     repo = "memo";
-    rev = "6f2b036ef860e130ea584657389e0a7ceb4d954f";
-    hash = "sha256-m8ikXuw7PM4Btg8w7ufLneKA4fnYjMyfVJYueZILMw8=";
+    rev = "43ad5bc37d4ac63a00dd2a8f15b9028789467da7";
+    hash = "sha256-nHJ1x5R4Rw2YjB3Li3ZFbI3ZdLSqddJFzJlni4NjpH0=";
   };
 
   passthru.updateScript = unstableGitUpdater { };
diff --git a/pkgs/applications/video/mpv/scripts/modernx-zydezu.nix b/pkgs/applications/video/mpv/scripts/modernx-zydezu.nix
index 3ef673ab518f3..426d9a3521f2a 100644
--- a/pkgs/applications/video/mpv/scripts/modernx-zydezu.nix
+++ b/pkgs/applications/video/mpv/scripts/modernx-zydezu.nix
@@ -7,14 +7,14 @@
 }:
 buildLua (finalAttrs: {
   pname = "modernx-zydezu";
-  version = "0.3.5.5";
+  version = "0.3.6.6";
 
   scriptPath = "modernx.lua";
   src = fetchFromGitHub {
     owner = "zydezu";
     repo = "ModernX";
     rev = finalAttrs.version;
-    hash = "sha256-sPpVwI8w5JsP/jML0viOSqhyYBVKfxWuKbxHkX3GVug=";
+    hash = "sha256-Jt3Y/4no3dUOopjvbS/dBGU0vw9Lq4o5inb4efuyYBM=";
   };
 
   postInstall = ''
@@ -31,11 +31,12 @@ buildLua (finalAttrs: {
 
   passthru.updateScript = nix-update-script { };
 
-  meta = with lib; {
+  meta = {
     description = "Modern OSC UI replacement for MPV that retains the functionality of the default OSC";
+    changelog = "https://github.com/zydezu/ModernX/releases/tag/${finalAttrs.version}";
     homepage = "https://github.com/zydezu/ModernX";
-    license = licenses.lgpl21Plus;
-    maintainers = with maintainers; [
+    license = lib.licenses.lgpl21Plus;
+    maintainers = with lib.maintainers; [
       luftmensch-luftmensch
       Guanran928
     ];
diff --git a/pkgs/applications/video/mpv/scripts/mpv-playlistmanager.nix b/pkgs/applications/video/mpv/scripts/mpv-playlistmanager.nix
index 00e44d1f94474..a87ede7551635 100644
--- a/pkgs/applications/video/mpv/scripts/mpv-playlistmanager.nix
+++ b/pkgs/applications/video/mpv/scripts/mpv-playlistmanager.nix
@@ -8,13 +8,13 @@
 
 buildLua rec {
   pname = "mpv-playlistmanager";
-  version = "0-unstable-2024-02-26";
+  version = "0-unstable-2024-07-28";
 
   src = fetchFromGitHub {
     owner = "jonniek";
     repo = "mpv-playlistmanager";
-    rev = "1911dc053951169c98cfcfd9f44ef87d9122ca80";
-    hash = "sha256-pcdOMhkivLF5B86aNuHrqj77DuYLAFGlwFwY7jxkDkE=";
+    rev = "54ed4421f9db5df22524d37e565fe4bb2d12117e";
+    hash = "sha256-RAIyPgqDjKkKcBAzIehpqxCNkWt0Gyxvfo8ycXkjAe0=";
   };
   passthru.updateScript = unstableGitUpdater { };
 
diff --git a/pkgs/applications/video/mpv/scripts/mpv-webm.nix b/pkgs/applications/video/mpv/scripts/mpv-webm.nix
index 409d86c193f42..10f09b633c015 100644
--- a/pkgs/applications/video/mpv/scripts/mpv-webm.nix
+++ b/pkgs/applications/video/mpv/scripts/mpv-webm.nix
@@ -8,13 +8,13 @@
 
 buildLua {
   pname = "mpv-webm";
-  version = "0-unstable-2024-05-13";
+  version = "0-unstable-2024-07-20";
 
   src = fetchFromGitHub {
     owner = "ekisu";
     repo = "mpv-webm";
-    rev = "8d4902b2aec92f40e4595ec9a411ab90488dcf4e";
-    hash = "sha256-aPPVAZu9reDdyovSpDklYZYLaapKBclAx3lCYUMJt+w=";
+    rev = "64844ec52b7a17d621ddceacf77e1e933f856b3c";
+    hash = "sha256-Unz8DQtm4sc/u0ciWoOdLcAEDZL+AjD+2T4q61Gzdns=";
   };
   passthru.updateScript = unstableGitUpdater {
     # only "latest" tag pointing at HEAD
diff --git a/pkgs/applications/video/mpv/scripts/mpv.nix b/pkgs/applications/video/mpv/scripts/mpv.nix
index ddf22e5dd03cf..a81ac77686d56 100644
--- a/pkgs/applications/video/mpv/scripts/mpv.nix
+++ b/pkgs/applications/video/mpv/scripts/mpv.nix
@@ -27,13 +27,13 @@ let
 in
 lib.mapAttrs (name: lib.makeOverridable (mkBuiltin name)) {
   acompressor.meta = {
-    description = "Script to toggle and control ffmpeg's dynamic range compression filter.";
+    description = "Script to toggle and control ffmpeg's dynamic range compression filter";
     maintainers = with lib.maintainers; [ nicoo ];
   };
 
-  autocrop.meta.description = "This script uses the lavfi cropdetect filter to automatically insert a crop filter with appropriate parameters for the currently playing video.";
+  autocrop.meta.description = "This script uses the lavfi cropdetect filter to automatically insert a crop filter with appropriate parameters for the currently playing video";
 
-  autodeint.meta.description = "This script uses the lavfi idet filter to automatically insert the appropriate deinterlacing filter based on a short section of the currently playing video.";
+  autodeint.meta.description = "This script uses the lavfi idet filter to automatically insert the appropriate deinterlacing filter based on a short section of the currently playing video";
 
   autoload.meta = {
     description = "This script automatically loads playlist entries before and after the currently played file";
diff --git a/pkgs/applications/video/mpv/scripts/mpvacious.nix b/pkgs/applications/video/mpv/scripts/mpvacious.nix
index 34776679aa257..1f5d948362db6 100644
--- a/pkgs/applications/video/mpv/scripts/mpvacious.nix
+++ b/pkgs/applications/video/mpv/scripts/mpvacious.nix
@@ -10,13 +10,13 @@
 
 buildLua rec {
   pname = "mpvacious";
-  version = "0.35";
+  version = "0.36";
 
   src = fetchFromGitHub {
     owner = "Ajatt-Tools";
     repo = "mpvacious";
     rev = "v${version}";
-    sha256 = "sha256-LcO17zkGkXWqSjWPTA3cVwRnmSrhTlS3W4RhhYaKgY4=";
+    sha256 = "sha256-j8K9coa8kyA7AgRQaBXJJmeTpNtfDKkOGnAP9Up7biA=";
   };
   passthru.updateScript = gitUpdater { rev-prefix = "v"; };
 
diff --git a/pkgs/applications/video/mpv/scripts/occivink.nix b/pkgs/applications/video/mpv/scripts/occivink.nix
index 948a90c0d89b3..f9fe912a612f0 100644
--- a/pkgs/applications/video/mpv/scripts/occivink.nix
+++ b/pkgs/applications/video/mpv/scripts/occivink.nix
@@ -3,6 +3,7 @@
   fetchFromGitHub,
   unstableGitUpdater,
   buildLua,
+  ffmpeg,
 }:
 
 let
@@ -44,6 +45,16 @@ in
 lib.mapAttrs (name: lib.makeOverridable (mkScript name)) {
 
   # Usage: `pkgs.mpv.override { scripts = [ pkgs.mpvScripts.seekTo ]; }`
+  crop.meta.description = "Crop the current video in a visual manner";
   seekTo.meta.description = "Mpv script for seeking to a specific position";
-  blacklistExtensions.meta.description = "Automatically remove playlist entries based on their extension.";
+  blacklistExtensions.meta.description = "Automatically remove playlist entries based on their extension";
+
+  encode = {
+    meta.description = "Make an extract of the video currently playing using ffmpeg";
+
+    postPatch = ''
+      substituteInPlace scripts/encode.lua \
+          --replace-fail '"ffmpeg"' '"${lib.getExe ffmpeg}"'
+    '';
+  };
 }
diff --git a/pkgs/applications/video/mpv/scripts/sponsorblock.nix b/pkgs/applications/video/mpv/scripts/sponsorblock.nix
index 16e8841abf5b6..094aec727552b 100644
--- a/pkgs/applications/video/mpv/scripts/sponsorblock.nix
+++ b/pkgs/applications/video/mpv/scripts/sponsorblock.nix
@@ -10,7 +10,7 @@
 # Usage: `pkgs.mpv.override { scripts = [ pkgs.mpvScripts.sponsorblock ]; }`
 buildLua {
   pname = "mpv_sponsorblock";
-  version = "unstable-2023-01-30";
+  version = "0-unstable-2023-01-30";
 
   src = fetchFromGitHub {
     owner = "po5";
diff --git a/pkgs/applications/video/mpv/scripts/videoclip.nix b/pkgs/applications/video/mpv/scripts/videoclip.nix
index 82f912677f14c..4436dca265d13 100644
--- a/pkgs/applications/video/mpv/scripts/videoclip.nix
+++ b/pkgs/applications/video/mpv/scripts/videoclip.nix
@@ -10,13 +10,13 @@
 }:
 buildLua {
   pname = "videoclip";
-  version = "0-unstable-2024-05-26";
+  version = "0-unstable-2024-07-18";
 
   src = fetchFromGitHub {
     owner = "Ajatt-Tools";
     repo = "videoclip";
-    rev = "4fd40d66c95905ed828ca77b7120732014b93ac5";
-    hash = "sha256-Q40a7BBY4c7I5g9HkeV6Twv/PDPBDKTlnxkILw99pxU=";
+    rev = "fe731767ca481678b4a166fbce6b30d3eaf8a6ce";
+    hash = "sha256-Z63kccjl8jd6C0dvpK7SQnPpmDCgH3/Kzm1oRXJ0NqI=";
   };
 
   patchPhase =
diff --git a/pkgs/applications/video/mpv/wrapper.nix b/pkgs/applications/video/mpv/wrapper.nix
index 533ede74f8744..b68f2d50c5c49 100644
--- a/pkgs/applications/video/mpv/wrapper.nix
+++ b/pkgs/applications/video/mpv/wrapper.nix
@@ -8,7 +8,6 @@
 , writeTextDir
 , yt-dlp
 # the unwrapped mpv derivation
-, mpv
 }:
 
 let
diff --git a/pkgs/applications/video/multiviewer-for-f1/default.nix b/pkgs/applications/video/multiviewer-for-f1/default.nix
index 1274009ba707e..9078a4dc7ef91 100644
--- a/pkgs/applications/video/multiviewer-for-f1/default.nix
+++ b/pkgs/applications/video/multiviewer-for-f1/default.nix
@@ -23,15 +23,15 @@
 , xorg
 }:
 let
-  id = "168727396";
+  id = "180492850";
 in
 stdenvNoCC.mkDerivation rec {
   pname = "multiviewer-for-f1";
-  version = "1.32.1";
+  version = "1.35.2";
 
   src = fetchurl {
     url = "https://releases.multiviewer.dev/download/${id}/multiviewer-for-f1_${version}_amd64.deb";
-    sha256 = "sha256-cnfye5c3+ZYZLjlZ6F4OD90tXhxDbgbNBn98mgmZ+Hs=";
+    sha256 = "sha256-V1+kMgfbgDS47YNIotmzrh2Hry5pvdQvrzWwuKJY1oM=";
   };
 
   nativeBuildInputs = [
@@ -100,4 +100,3 @@ stdenvNoCC.mkDerivation rec {
     mainProgram = "multiviewer-for-f1";
   };
 }
-
diff --git a/pkgs/applications/video/obs-studio/Enable-file-access-and-universal-access-for-file-URL.patch b/pkgs/applications/video/obs-studio/Enable-file-access-and-universal-access-for-file-URL.patch
index 49d01bacbd10b..b0c9650ddb90d 100644
--- a/pkgs/applications/video/obs-studio/Enable-file-access-and-universal-access-for-file-URL.patch
+++ b/pkgs/applications/video/obs-studio/Enable-file-access-and-universal-access-for-file-URL.patch
@@ -12,12 +12,12 @@ security model.
  1 file changed, 6 insertions(+), 3 deletions(-)
 
 diff --git a/obs-browser-source.cpp b/obs-browser-source.cpp
-index ab1181e..c775283 100644
+index 09b3017..1094340 100644
 --- a/plugins/obs-browser/obs-browser-source.cpp
 +++ b/plugins/obs-browser/obs-browser-source.cpp
-@@ -179,9 +179,12 @@ bool BrowserSource::CreateBrowser()
+@@ -239,9 +239,12 @@ bool BrowserSource::CreateBrowser()
  
- #if ENABLE_LOCAL_FILE_URL_SCHEME
+ #if ENABLE_LOCAL_FILE_URL_SCHEME && CHROME_VERSION_BUILD < 4430
  		if (is_local) {
 -			/* Disable web security for file:// URLs to allow
 -			 * local content access to remote APIs */
@@ -30,7 +30,4 @@ index ab1181e..c775283 100644
 +				STATE_ENABLED;
  		}
  #endif
- 
--- 
-2.31.1
-
+ 		auto browser = CefBrowserHost::CreateBrowserSync(
diff --git a/pkgs/applications/video/obs-studio/default.nix b/pkgs/applications/video/obs-studio/default.nix
index 418d9adf8263b..0adac748460e1 100644
--- a/pkgs/applications/video/obs-studio/default.nix
+++ b/pkgs/applications/video/obs-studio/default.nix
@@ -1,9 +1,11 @@
 { config
+, uthash
 , lib
 , stdenv
+, nv-codec-headers-12
 , fetchFromGitHub
 , fetchpatch
-, addOpenGLRunpath
+, addDriverRunpath
 , cmake
 , fdk_aac
 , ffmpeg
@@ -39,7 +41,6 @@
 , withFdk ? true
 , pipewire
 , libdrm
-, libajantv2
 , librist
 , libva
 , srt
@@ -62,13 +63,13 @@ in
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "obs-studio";
-  version = "30.1.2";
+  version = "30.2.2";
 
   src = fetchFromGitHub {
     owner = "obsproject";
-    repo = finalAttrs.pname;
+    repo = "obs-studio";
     rev = finalAttrs.version;
-    sha256 = "sha256-M4IINBoYrgkM37ykb4boHyWP8AxwMX0b7IAeeNIw9Qo=";
+    hash = "sha256-yMtLN/86+3wuNR+gGhsaxN4oGIC21bAcjbQfyTuXIYc=";
     fetchSubmodules = true;
   };
 
@@ -87,7 +88,7 @@ stdenv.mkDerivation (finalAttrs: {
   ];
 
   nativeBuildInputs = [
-    addOpenGLRunpath
+    addDriverRunpath
     cmake
     pkg-config
     wrapGAppsHook3
@@ -113,7 +114,6 @@ stdenv.mkDerivation (finalAttrs: {
     libvlc
     mbedtls
     pciutils
-    libajantv2
     librist
     libva
     srt
@@ -124,6 +124,8 @@ stdenv.mkDerivation (finalAttrs: {
     libdatachannel
     libvpl
     qrcodegencpp
+    uthash
+    nv-codec-headers-12
   ]
   ++ optionals scriptingSupport [ luajit python3 ]
   ++ optional alsaSupport alsa-lib
@@ -155,6 +157,7 @@ stdenv.mkDerivation (finalAttrs: {
     (lib.cmakeBool "ENABLE_ALSA" alsaSupport)
     (lib.cmakeBool "ENABLE_PULSEAUDIO" pulseaudioSupport)
     (lib.cmakeBool "ENABLE_PIPEWIRE" pipewireSupport)
+    (lib.cmakeBool "ENABLE_AJA" false) # TODO: fix linking against libajantv2
   ];
 
   env.NIX_CFLAGS_COMPILE = toString [
@@ -181,8 +184,8 @@ stdenv.mkDerivation (finalAttrs: {
   '';
 
   postFixup = lib.optionalString stdenv.isLinux ''
-    addOpenGLRunpath $out/lib/lib*.so
-    addOpenGLRunpath $out/lib/obs-plugins/*.so
+    addDriverRunpath $out/lib/lib*.so
+    addDriverRunpath $out/lib/obs-plugins/*.so
 
     # Link libcef again after patchelfing other libs
     ln -s ${libcef}/lib/* $out/lib/obs-plugins/
diff --git a/pkgs/applications/video/obs-studio/fix-nix-plugin-path.patch b/pkgs/applications/video/obs-studio/fix-nix-plugin-path.patch
index baf45104e6a89..13569e8499b53 100644
--- a/pkgs/applications/video/obs-studio/fix-nix-plugin-path.patch
+++ b/pkgs/applications/video/obs-studio/fix-nix-plugin-path.patch
@@ -1,9 +1,9 @@
 diff --git a/cmake/Modules/ObsDefaults_Linux.cmake b/cmake/Modules/ObsDefaults_Linux.cmake
-index d1e58a083..a03c6b98e 100644
+index fe8d72364..1c590fcdb 100644
 --- a/cmake/Modules/ObsDefaults_Linux.cmake
 +++ b/cmake/Modules/ObsDefaults_Linux.cmake
 @@ -76,7 +76,7 @@ macro(setup_obs_project)
-     set(OBS_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/")
+     set(OBS_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
      set(OBS_DATA_PATH "${OBS_DATA_DESTINATION}")
  
 -    set(OBS_SCRIPT_PLUGIN_PATH "${CMAKE_INSTALL_PREFIX}/${OBS_SCRIPT_PLUGIN_DESTINATION}")
@@ -12,15 +12,15 @@ index d1e58a083..a03c6b98e 100644
    else()
      set(OBS_EXECUTABLE_DESTINATION "bin/${_ARCH_SUFFIX}bit")
 diff --git a/libobs/obs-nix.c b/libobs/obs-nix.c
-index b006a5598..531655eb3 100644
+index 77c36be5e..fe8a04813 100644
 --- a/libobs/obs-nix.c
 +++ b/libobs/obs-nix.c
-@@ -56,7 +56,7 @@ const char *get_module_extension(void)
- #define FLATPAK_PLUGIN_PATH "/app/plugins"
+@@ -51,7 +51,7 @@ const char *get_module_extension(void)
  
  static const char *module_bin[] = {
+ 	"../../obs-plugins/64bit",
 -	OBS_INSTALL_PREFIX "/" OBS_PLUGIN_DESTINATION,
 +	OBS_PLUGIN_DESTINATION,
- 	"../../obs-plugins/" BIT_STRING,
  	FLATPAK_PLUGIN_PATH "/" OBS_PLUGIN_DESTINATION,
  };
+ 
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
index ec19f26e8a156..e40dbc8c4f143 100644
--- a/pkgs/applications/video/obs-studio/plugins/advanced-scene-switcher/default.nix
+++ b/pkgs/applications/video/obs-studio/plugins/advanced-scene-switcher/default.nix
@@ -23,13 +23,13 @@
 
 stdenv.mkDerivation rec {
   pname = "advanced-scene-switcher";
-  version = "1.26.4";
+  version = "1.27.0";
 
   src = fetchFromGitHub {
     owner = "WarmUpTill";
     repo = "SceneSwitcher";
     rev = version;
-    hash = "sha256-qUKywOfUiGKBmyREns2LnWECGeFhdA4ecpgGJQAIKpU=";
+    hash = "sha256-RdXqiFMlpKTmedF+VBzROx0qTKDOdkQ3hO4Xj0vIq2A=";
   };
 
   nativeBuildInputs = [
@@ -68,6 +68,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/WarmUpTill/SceneSwitcher";
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/applications/video/obs-studio/plugins/input-overlay.nix b/pkgs/applications/video/obs-studio/plugins/input-overlay.nix
index 9f13de2847402..9a2069a27133a 100644
--- a/pkgs/applications/video/obs-studio/plugins/input-overlay.nix
+++ b/pkgs/applications/video/obs-studio/plugins/input-overlay.nix
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
     owner = "univrsal";
     repo = "input-overlay";
     rev = "v${version}";
-    sha256 = "sha256-9HqEz+KnTt8MyhwqFWjalbl3H/DCzumckXMctCGhs3o=";
+    hash = "sha256-9HqEz+KnTt8MyhwqFWjalbl3H/DCzumckXMctCGhs3o=";
     fetchSubmodules = true;
   };
 
@@ -47,7 +47,7 @@ stdenv.mkDerivation rec {
   dontWrapQtApps = true;
 
   meta = with lib; {
-    description = "Show keyboard, gamepad and mouse input on stream ";
+    description = "Show keyboard, gamepad and mouse input on stream";
     homepage = "https://github.com/univrsal/input-overlay";
     maintainers = with maintainers; [ glittershark ];
     license = licenses.gpl2;
diff --git a/pkgs/applications/video/obs-studio/plugins/obs-freeze-filter.nix b/pkgs/applications/video/obs-studio/plugins/obs-freeze-filter.nix
index 1460e77fbf86c..0bec9181e19c8 100644
--- a/pkgs/applications/video/obs-studio/plugins/obs-freeze-filter.nix
+++ b/pkgs/applications/video/obs-studio/plugins/obs-freeze-filter.nix
@@ -14,7 +14,7 @@ stdenv.mkDerivation (finalAttrs: {
     owner = "exeldro";
     repo = "obs-freeze-filter";
     rev = finalAttrs.version;
-    sha256 = "sha256-CaHBTfdk8VFjmiclG61elj35glQafgz5B4ENo+7J35o=";
+    hash = "sha256-CaHBTfdk8VFjmiclG61elj35glQafgz5B4ENo+7J35o=";
     fetchSubmodules = true;
   };
 
diff --git a/pkgs/applications/video/obs-studio/plugins/obs-move-transition.nix b/pkgs/applications/video/obs-studio/plugins/obs-move-transition.nix
index e464079da93c7..c4e2dc43d2466 100644
--- a/pkgs/applications/video/obs-studio/plugins/obs-move-transition.nix
+++ b/pkgs/applications/video/obs-studio/plugins/obs-move-transition.nix
@@ -7,13 +7,13 @@
 
 stdenv.mkDerivation rec {
   pname = "obs-move-transition";
-  version = "3.0.1";
+  version = "3.0.2";
 
   src = fetchFromGitHub {
     owner = "exeldro";
     repo = "obs-move-transition";
     rev = version;
-    sha256 = "sha256-LZL9f/pX74rKW+wnNHGKwGuuISOTcFVr6W9h/JEK0U4=";
+    sha256 = "sha256-Vwm0Eyb8MevZtS3PTqnFQAbCj7JuTw9Ju0lS9CZ6rf8=";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/pkgs/applications/video/obs-studio/plugins/obs-nvfbc.nix b/pkgs/applications/video/obs-studio/plugins/obs-nvfbc.nix
index ab113065629d9..41b74807e4afc 100644
--- a/pkgs/applications/video/obs-studio/plugins/obs-nvfbc.nix
+++ b/pkgs/applications/video/obs-studio/plugins/obs-nvfbc.nix
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
     owner = "fzwoch";
     repo = "obs-nvfbc";
     rev = "v${version}";
-    sha256 = "sha256-AJ3K0O1vrixskn+/Tpg7LsgRO8N4sgDo1Y6gg3CwGVo=";
+    hash = "sha256-AJ3K0O1vrixskn+/Tpg7LsgRO8N4sgDo1Y6gg3CwGVo=";
   };
 
   nativeBuildInputs = [ meson pkg-config ninja ];
diff --git a/pkgs/applications/video/obs-studio/plugins/obs-source-record.nix b/pkgs/applications/video/obs-studio/plugins/obs-source-record.nix
index 9f1a52bd8bd06..23cc300d7f708 100644
--- a/pkgs/applications/video/obs-studio/plugins/obs-source-record.nix
+++ b/pkgs/applications/video/obs-studio/plugins/obs-source-record.nix
@@ -1,34 +1,28 @@
-{ lib, stdenv, fetchFromGitHub, fetchpatch, cmake, obs-studio }:
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  cmake,
+  obs-studio,
+}:
 
 stdenv.mkDerivation rec {
   pname = "obs-source-record";
-  version = "0.3.2";
+  version = "0.3.4";
 
   src = fetchFromGitHub {
     owner = "exeldro";
     repo = "obs-source-record";
     rev = version;
-    sha256 = "sha256-H65uQ9HnKmHs52v3spG92ayeYH/TvmwcMoePMmBMqN8=";
+    sha256 = "sha256-VgG9Fn75aKTkth4TC9rhfj/HIOO2lIO4n3ZYmemkzx8=";
   };
 
-  patches = [
-    # fix obs 29.1 compatibility
-    (fetchpatch {
-      url = "https://patch-diff.githubusercontent.com/raw/exeldro/obs-source-record/pull/83.diff";
-      hash = "sha256-eWOjHHfoXZeoPtqvVyexSi/UQqHm8nu4FEEjma64Ly4=";
-    })
-  ];
-
   nativeBuildInputs = [ cmake ];
-  buildInputs = [
-    obs-studio
-  ];
+  buildInputs = [ obs-studio ];
 
   NIX_CFLAGS_COMPILE = [ "-Wno-error=deprecated-declarations" ];
 
-  cmakeFlags = [
-    "-DBUILD_OUT_OF_TREE=On"
-  ];
+  cmakeFlags = [ "-DBUILD_OUT_OF_TREE=On" ];
 
   postInstall = ''
     rm -rf $out/{data,obs-plugins}
@@ -37,7 +31,10 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     description = "OBS Studio plugin to make sources available to record via a filter";
     homepage = "https://github.com/exeldro/obs-source-record";
-    maintainers = with maintainers; [ robbins ];
+    maintainers = with maintainers; [
+      robbins
+      shackra
+    ];
     license = licenses.gpl2Only;
     platforms = [ "x86_64-linux" ];
   };
diff --git a/pkgs/applications/video/obs-studio/plugins/obs-vertical-canvas.nix b/pkgs/applications/video/obs-studio/plugins/obs-vertical-canvas.nix
index c43b823dd7f81..72112a1fc34a7 100644
--- a/pkgs/applications/video/obs-studio/plugins/obs-vertical-canvas.nix
+++ b/pkgs/applications/video/obs-studio/plugins/obs-vertical-canvas.nix
@@ -9,13 +9,13 @@
 
 stdenv.mkDerivation rec {
   pname = "obs-vertical-canvas";
-  version = "1.4.4";
+  version = "1.4.8";
 
   src = fetchFromGitHub {
     owner = "Aitum";
     repo = "obs-vertical-canvas";
     rev = version;
-    sha256 = "sha256-RBsdYG73SoX+dB4sUq641SL0ETUFE+PVAmr/DaqMuLI=";
+    sha256 = "sha256-AeN2Nr8HExdDMOiAwaIcnEVsbhOuiPJ+R2z6/qEnu/8=";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/pkgs/applications/video/obs-studio/plugins/obs-vkcapture.nix b/pkgs/applications/video/obs-studio/plugins/obs-vkcapture.nix
index cf88fd3b18c3f..b66d3d01b234a 100644
--- a/pkgs/applications/video/obs-studio/plugins/obs-vkcapture.nix
+++ b/pkgs/applications/video/obs-studio/plugins/obs-vkcapture.nix
@@ -20,13 +20,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "obs-vkcapture";
-  version = "1.5.0";
+  version = "1.5.1";
 
   src = fetchFromGitHub {
     owner = "nowrep";
-    repo = finalAttrs.pname;
+    repo = "obs-vkcapture";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-hYPQ1N4k4eb+bvGWZqaQJ/C8C5Lh8ooZ03raGF5ORgE=";
+    hash = "sha256-RIDsT6eL6bUfqPiyPlecnZHu5OorcJb3Xal8pjdOpAA=";
   };
 
   cmakeFlags = lib.optionals stdenv.isi686 [
diff --git a/pkgs/applications/video/obs-studio/plugins/waveform/default.nix b/pkgs/applications/video/obs-studio/plugins/waveform/default.nix
index 00fcf4298d5d1..8f0cb4077cc5a 100644
--- a/pkgs/applications/video/obs-studio/plugins/waveform/default.nix
+++ b/pkgs/applications/video/obs-studio/plugins/waveform/default.nix
@@ -9,14 +9,14 @@
 
 stdenv.mkDerivation rec {
   pname = "waveform";
-  version = "1.8.0";
+  version = "1.8.1";
 
   src = fetchFromGitHub {
     fetchSubmodules = true;
     owner = "phandasm";
     repo = "waveform";
     rev = "v${version}";
-    sha256 = "sha256-NcBtj+5X9tPH853a6oXzQCBH26hx8Yt17WjP9ryvgmc=";
+    hash = "sha256-Bg1n1yV4JzNFEXFNayNa1exsSZhmRJ0RLHDjLWmqGZE=";
   };
 
   nativeBuildInputs = [ cmake pkg-config ];
diff --git a/pkgs/applications/video/obs-studio/wrapper.nix b/pkgs/applications/video/obs-studio/wrapper.nix
index 62bc80d26df3b..0c972fc58d371 100644
--- a/pkgs/applications/video/obs-studio/wrapper.nix
+++ b/pkgs/applications/video/obs-studio/wrapper.nix
@@ -8,11 +8,11 @@ symlinkJoin {
   nativeBuildInputs = [ makeWrapper ];
   paths = [ obs-studio ] ++ plugins;
 
-  postBuild = with lib;
+  postBuild =
     let
       # Some plugins needs extra environment, see obs-gstreamer for an example.
       pluginArguments =
-        lists.concatMap (plugin: plugin.obsWrapperArguments or []) plugins;
+        lib.lists.concatMap (plugin: plugin.obsWrapperArguments or []) plugins;
 
       pluginsJoined = symlinkJoin {
         name = "obs-studio-plugins";
@@ -24,9 +24,9 @@ symlinkJoin {
           "$out/bin/obs"
           ''--set OBS_PLUGINS_PATH "${pluginsJoined}/lib/obs-plugins"''
           ''--set OBS_PLUGINS_DATA_PATH "${pluginsJoined}/share/obs/obs-plugins"''
-        ] ++ lists.unique pluginArguments;
+        ] ++ lib.lists.unique pluginArguments;
     in ''
-    ${concatStringsSep " " wrapCommandLine}
+    ${lib.concatStringsSep " " wrapCommandLine}
 
     # Remove unused obs-plugins dir to not cause confusion
     rm -r $out/share/obs/obs-plugins
diff --git a/pkgs/applications/video/olive-editor/default.nix b/pkgs/applications/video/olive-editor/default.nix
index 514da9c50d750..ea4c7a3f711d7 100644
--- a/pkgs/applications/video/olive-editor/default.nix
+++ b/pkgs/applications/video/olive-editor/default.nix
@@ -40,7 +40,7 @@ stdenv.mkDerivation {
     owner = "olive-editor";
     repo = "olive";
     rev = "2036fffffd0e24b7458e724b9084ae99c9507c64";
-    sha256 = "sha256-qee9/WTvTy5jWLowvZJOwAjrqznRhJR+u9dYsnCN/Qs=";
+    hash = "sha256-qee9/WTvTy5jWLowvZJOwAjrqznRhJR+u9dYsnCN/Qs=";
   };
 
   cmakeFlags = [
diff --git a/pkgs/applications/video/openshot-qt/default.nix b/pkgs/applications/video/openshot-qt/default.nix
index 4a8208d8bbb6e..88f13ef3eb9b3 100644
--- a/pkgs/applications/video/openshot-qt/default.nix
+++ b/pkgs/applications/video/openshot-qt/default.nix
@@ -16,12 +16,12 @@
 
 let
   pname = "openshot-qt";
-  version = "3.1.1";
+  version = "3.2.1";
   src = fetchFromGitHub {
     owner = "OpenShot";
     repo = "openshot-qt";
-    rev = "v${version}";
-    hash = "sha256-kEz1APBitWLlnIbyloYMsqNrwC9RqU04kyyWzm5klYc=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-zZZ7C/1+Qh7KS1WJ8YWkhFgw0+UHJhjk+145u9/TBcI=";
   };
 in
 mkDerivationWith python3.pkgs.buildPythonApplication {
@@ -47,7 +47,7 @@ mkDerivationWith python3.pkgs.buildPythonApplication {
     pyqtwebengine
     pyzmq
     requests
-    sip4
+    sip
   ];
 
   strictDeps = true;
diff --git a/pkgs/applications/video/pipe-viewer/default.nix b/pkgs/applications/video/pipe-viewer/default.nix
index 854e4c6ba4bc3..e95e1a1346a2a 100644
--- a/pkgs/applications/video/pipe-viewer/default.nix
+++ b/pkgs/applications/video/pipe-viewer/default.nix
@@ -9,7 +9,6 @@
 , mpv
 , wget
 , xdg-utils
-, youtube-dl
 , yt-dlp
 , TestPod
 , Gtk3
@@ -38,13 +37,13 @@ let
 in
 buildPerlModule rec {
   pname = "pipe-viewer";
-  version = "0.5.1";
+  version = "0.5.2";
 
   src = fetchFromGitHub {
     owner = "trizen";
     repo = "pipe-viewer";
     rev = version;
-    hash = "sha256-GTmva1pDG1g2wZoS3ABYxhWdbARdlcS0rxGjkdJL7js=";
+    hash = "sha256-TCcAQjz0B3eWILMAoqHCnMLvu8zD0W5wOFg+UaMPmXg=";
   };
 
   nativeBuildInputs = [ makeWrapper ]
@@ -75,11 +74,11 @@ buildPerlModule rec {
 
   postFixup = ''
     wrapProgram "$out/bin/pipe-viewer" \
-      --prefix PATH : "${lib.makeBinPath [ ffmpeg mpv wget youtube-dl yt-dlp ]}"
+      --prefix PATH : "${lib.makeBinPath [ ffmpeg mpv wget yt-dlp ]}"
   '' + lib.optionalString withGtk3 ''
     # make xdg-open overrideable at runtime
     wrapProgram "$out/bin/gtk-pipe-viewer" ''${gappsWrapperArgs[@]} \
-      --prefix PATH : "${lib.makeBinPath [ ffmpeg mpv wget youtube-dl yt-dlp ]}" \
+      --prefix PATH : "${lib.makeBinPath [ ffmpeg mpv wget yt-dlp ]}" \
       --suffix PATH : "${lib.makeBinPath [ xdg-utils ]}"
   '';
 
diff --git a/pkgs/applications/video/pitivi/default.nix b/pkgs/applications/video/pitivi/default.nix
index 85ee9c0e7ef8d..e278d4a158c81 100644
--- a/pkgs/applications/video/pitivi/default.nix
+++ b/pkgs/applications/video/pitivi/default.nix
@@ -102,7 +102,7 @@ python3.pkgs.buildPythonApplication rec {
       that can appeal to newbies and professionals alike.
     '';
     license = licenses.lgpl21Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     platforms = platforms.linux;
     mainProgram = "pitivi";
   };
diff --git a/pkgs/applications/video/plex-media-player/default.nix b/pkgs/applications/video/plex-media-player/default.nix
index 6a686d9d2c2a9..fb10bff45e330 100644
--- a/pkgs/applications/video/plex-media-player/default.nix
+++ b/pkgs/applications/video/plex-media-player/default.nix
@@ -7,7 +7,7 @@ let
   # sandboxed builds, we manually download them and save them so these files
   # are fetched ahead-of-time instead of during the CMake build. To update
   # plex-media-player use the update.sh script, so the versions and hashes
-  # for these files are are also updated!
+  # for these files are also updated!
   depSrcs = import ./deps.nix { inherit fetchurl; };
 in mkDerivation rec {
   pname = "plex-media-player";
diff --git a/pkgs/applications/video/pyca/default.nix b/pkgs/applications/video/pyca/default.nix
index 5ca1e59d107bb..52463c4689313 100644
--- a/pkgs/applications/video/pyca/default.nix
+++ b/pkgs/applications/video/pyca/default.nix
@@ -8,6 +8,7 @@
 
 let
   python = python3.override {
+    self = python;
     packageOverrides = self: super: {
       # pyCA is incompatible with SQLAlchemy 2.0
       sqlalchemy = super.sqlalchemy_1_4;
@@ -80,4 +81,3 @@ python3.pkgs.buildPythonApplication rec {
     maintainers = with maintainers; [ pmiddend ];
   };
 }
-
diff --git a/pkgs/applications/video/qmplay2/default.nix b/pkgs/applications/video/qmplay2/default.nix
deleted file mode 100644
index 167b5e8601e25..0000000000000
--- a/pkgs/applications/video/qmplay2/default.nix
+++ /dev/null
@@ -1,85 +0,0 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, alsa-lib
-, cmake
-, ffmpeg
-, fribidi
-, game-music-emu
-, libXdmcp
-, libXv
-, libass
-, libcddb
-, libcdio
-, libpulseaudio
-, libsidplayfp
-, libva
-, libxcb
-, pkg-config
-, qtbase
-, qttools
-, taglib
-, vulkan-headers
-, vulkan-tools
-, wrapQtAppsHook
-}:
-
-stdenv.mkDerivation (finalAttrs: {
-  pname = "qmplay2";
-  version = "24.04.07";
-
-  src = fetchFromGitHub {
-    owner = "zaps166";
-    repo = "QMPlay2";
-    rev = finalAttrs.version;
-    fetchSubmodules = true;
-    hash = "sha256-WIDGApvl+aaB3Vdv0sHY+FHWqzreWWd3/xOLV11YfxM=";
-  };
-
-  nativeBuildInputs = [
-    cmake
-    pkg-config
-    wrapQtAppsHook
-  ];
-
-  buildInputs = [
-    alsa-lib
-    ffmpeg
-    fribidi
-    game-music-emu
-    libXdmcp
-    libXv
-    libass
-    libcddb
-    libcdio
-    libpulseaudio
-    libsidplayfp
-    libva
-    libxcb
-    qtbase
-    qttools
-    taglib
-    vulkan-headers
-    vulkan-tools
-  ];
-
-  postInstall = ''
-    # Because we think it is better to use only lowercase letters!
-    ln -s $out/bin/QMPlay2 $out/bin/qmplay2
-  '';
-
-  meta = {
-    homepage = "https://github.com/zaps166/QMPlay2/";
-    description = "Qt-based Multimedia player";
-    longDescription = ''
-      QMPlay2 is a video and audio player. It can play all formats supported by
-      FFmpeg, libmodplug (including J2B and SFX). It also supports Audio CD, raw
-      files, Rayman 2 music and chiptunes. It contains YouTube and MyFreeMP3
-      browser.
-    '';
-    changelog = "https://github.com/zaps166/QMPlay2/releases/tag/${finalAttrs.version}";
-    license = lib.licenses.lgpl3Plus;
-    maintainers = with lib.maintainers; [ AndersonTorres kashw2 ];
-    platforms = lib.platforms.linux;
-  };
-})
diff --git a/pkgs/applications/video/rtabmap/default.nix b/pkgs/applications/video/rtabmap/default.nix
index 3b457530fbf29..6565a40975871 100644
--- a/pkgs/applications/video/rtabmap/default.nix
+++ b/pkgs/applications/video/rtabmap/default.nix
@@ -11,11 +11,9 @@
 , qtbase
 , g2o
 , ceres-solver
-, libpointmatcher
 , octomap
 , freenect
 , libdc1394
-, librealsense
 , libGL
 , libGLU
 , vtkWithQt5
@@ -68,7 +66,7 @@ stdenv.mkDerivation rec {
     description = "Real-Time Appearance-Based 3D Mapping";
     homepage = "https://introlab.github.io/rtabmap/";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ckie ];
+    maintainers = [ ];
     platforms = with platforms; linux;
   };
 }
diff --git a/pkgs/applications/video/shaka-packager/default.nix b/pkgs/applications/video/shaka-packager/default.nix
index 0bb73ee50e762..039648963f752 100644
--- a/pkgs/applications/video/shaka-packager/default.nix
+++ b/pkgs/applications/video/shaka-packager/default.nix
@@ -55,7 +55,7 @@ stdenv.mkDerivation (finalAttrs: {
     homepage = "https://shaka-project.github.io/shaka-packager/html/";
     license = lib.licenses.bsd3;
     mainProgram = "packager";
-    maintainers = with lib.maintainers; [ ];
+    maintainers = [ ];
     platforms = builtins.attrNames sources;
     sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
   };
diff --git a/pkgs/applications/video/shotcut/default.nix b/pkgs/applications/video/shotcut/default.nix
deleted file mode 100644
index 61c6684a2f823..0000000000000
--- a/pkgs/applications/video/shotcut/default.nix
+++ /dev/null
@@ -1,91 +0,0 @@
-{ lib
-, fetchFromGitHub
-, stdenv
-, wrapQtAppsHook
-, substituteAll
-, SDL2
-, frei0r
-, ladspaPlugins
-, gettext
-, mlt
-, jack1
-, pkg-config
-, fftw
-, qtbase
-, qttools
-, qtmultimedia
-, qtcharts
-, cmake
-, Cocoa
-, gitUpdater
-}:
-stdenv.mkDerivation (finalAttrs: {
-  pname = "shotcut";
-  version = "24.06.26";
-
-  src = fetchFromGitHub {
-    owner = "mltframework";
-    repo = "shotcut";
-    rev = "v${finalAttrs.version}";
-    hash = "sha256-9eQF3s4BAUK81/94z7cMkd2NWdNLVMraP08qsDmuAI8=";
-  };
-
-  nativeBuildInputs = [ pkg-config cmake wrapQtAppsHook ];
-  buildInputs = [
-    SDL2
-    frei0r
-    ladspaPlugins
-    gettext
-    mlt
-    fftw
-    qtbase
-    qttools
-    qtmultimedia
-    qtcharts
-  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
-    Cocoa
-  ];
-
-  env.NIX_CFLAGS_COMPILE = "-DSHOTCUT_NOUPGRADE";
-  cmakeFlags = [
-    "-DSHOTCUT_VERSION=${finalAttrs.version}"
-  ];
-
-  patches = [
-    (substituteAll { inherit mlt; src = ./fix-mlt-ffmpeg-path.patch; })
-  ];
-
-  qtWrapperArgs = [
-    "--set FREI0R_PATH ${frei0r}/lib/frei0r-1"
-    "--set LADSPA_PATH ${ladspaPlugins}/lib/ladspa"
-    "--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath ([SDL2] ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [jack1])}"
-  ];
-
-  postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
-    mkdir $out/Applications $out/bin
-    mv $out/Shotcut.app $out/Applications/Shotcut.app
-    ln -s $out/Applications/Shotcut.app/Contents/MacOS/Shotcut $out/bin/shotcut
-  '';
-
-  passthru.updateScript = gitUpdater {
-    rev-prefix = "v";
-  };
-
-  meta = with lib; {
-    description = "Free, open source, cross-platform video editor";
-    longDescription = ''
-      An official binary for Shotcut, which includes all the
-      dependencies pinned to specific versions, is provided on
-      http://shotcut.org.
-
-      If you encounter problems with this version, please contact the
-      nixpkgs maintainer(s). If you wish to report any bugs upstream,
-      please use the official build from shotcut.org instead.
-    '';
-    homepage = "https://shotcut.org";
-    license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ goibhniu woffs peti ];
-    platforms = platforms.unix;
-    mainProgram = "shotcut";
-  };
-})
diff --git a/pkgs/applications/video/shotcut/fix-mlt-ffmpeg-path.patch b/pkgs/applications/video/shotcut/fix-mlt-ffmpeg-path.patch
deleted file mode 100644
index fa584162cbe83..0000000000000
--- a/pkgs/applications/video/shotcut/fix-mlt-ffmpeg-path.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-diff --git a/src/docks/encodedock.cpp b/src/docks/encodedock.cpp
-index 3359f676..24e44f98 100644
---- a/src/docks/encodedock.cpp
-+++ b/src/docks/encodedock.cpp
-@@ -2177,7 +2177,7 @@ bool EncodeDock::detectHardwareEncoders()
- {
-     MAIN.showStatusMessage(tr("Detecting hardware encoders..."));
-     QStringList hwlist;
--    QFileInfo ffmpegPath(qApp->applicationDirPath(), "ffmpeg");
-+    QFileInfo ffmpegPath("@ffmpeg@/bin/ffmpeg");
-     foreach (const QString &codec, codecs()) {
-         LOG_INFO() << "checking for" << codec;
-         QProcess proc;
-@@ -2220,7 +2220,7 @@ bool EncodeDock::detectHardwareEncoders()
- QString &EncodeDock::defaultFormatExtension()
- {
-     auto format = ui->formatCombo->currentText();
--    QFileInfo ffmpegPath(qApp->applicationDirPath(), "ffmpeg");
-+    QFileInfo ffmpegPath("@ffmpeg@/bin/ffmpeg");
-     QProcess proc;
-     QStringList args;
-     args << "-hide_banner" << "-h" << format.prepend("muxer=");
-diff --git a/src/jobs/ffmpegjob.cpp b/src/jobs/ffmpegjob.cpp
-index 1f15e647..b6ad6633 100644
---- a/src/jobs/ffmpegjob.cpp
-+++ b/src/jobs/ffmpegjob.cpp
-@@ -54,7 +54,7 @@ FfmpegJob::~FfmpegJob()
- void FfmpegJob::start()
- {
-     QString shotcutPath = qApp->applicationDirPath();
--    QFileInfo ffmpegPath(shotcutPath, "ffmpeg");
-+    QFileInfo ffmpegPath("@ffmpeg@/bin/ffmpeg");
-     setReadChannel(QProcess::StandardError);
-     LOG_DEBUG() << ffmpegPath.absoluteFilePath() + " " + m_args.join(' ');
-     AbstractJob::start(ffmpegPath.absoluteFilePath(), m_args);
-diff --git a/src/jobs/meltjob.cpp b/src/jobs/meltjob.cpp
-index fd8c00b8..9150fe7b 100644
---- a/src/jobs/meltjob.cpp
-+++ b/src/jobs/meltjob.cpp
-@@ -98,9 +98,9 @@ void MeltJob::start()
-     }
-     QString shotcutPath = qApp->applicationDirPath();
- #if defined(Q_OS_UNIX) && !defined(Q_OS_MAC)
--    QFileInfo meltPath(shotcutPath, "melt-7");
-+    QFileInfo meltPath("@mlt@/bin/melt");
- #else
--    QFileInfo meltPath(shotcutPath, "melt");
-+    QFileInfo meltPath("@mlt@/bin/melt");
- #endif
-     setReadChannel(QProcess::StandardError);
-     QStringList args;
-diff --git a/src/mltcontroller.cpp b/src/mltcontroller.cpp
-index 1e2299ac..b8f39f12 100644
---- a/src/mltcontroller.cpp
-+++ b/src/mltcontroller.cpp
-@@ -1555,9 +1555,9 @@ int Controller::checkFile(const QString &path)
-             || path.endsWith(".aep")) {
-         QString shotcutPath = qApp->applicationDirPath();
- #if defined(Q_OS_UNIX) && !defined(Q_OS_MAC)
--        QFileInfo meltPath(shotcutPath, "melt-7");
-+        QFileInfo meltPath("@mlt@/bin/melt");
- #else
--        QFileInfo meltPath(shotcutPath, "melt");
-+        QFileInfo meltPath("@mlt@/bin/melt");
- #endif
-         QStringList args;
-         args << "-quiet" << "-consumer" << "null" << "real_time=0" << "out=0" << "terminate_on_pause=1" <<
-diff --git a/src/widgets/directshowvideowidget.cpp b/src/widgets/directshowvideowidget.cpp
-index c91ba821..73dd5a61 100644
---- a/src/widgets/directshowvideowidget.cpp
-+++ b/src/widgets/directshowvideowidget.cpp
-@@ -35,7 +35,7 @@ DirectShowVideoWidget::DirectShowVideoWidget(QWidget *parent) :
-     ui->setupUi(this);
-     Util::setColorsToHighlight(ui->label);
- #ifdef Q_OS_WIN
--    QFileInfo ffmpegPath(qApp->applicationDirPath(), "ffmpeg");
-+    QFileInfo ffmpegPath("@ffmpeg@/bin/ffmpeg");
-     QProcess proc;
-     QStringList args;
-     args << "-hide_banner" << "-list_devices" << "true" << "-f" << "dshow" << "-i" << "dummy";
diff --git a/pkgs/applications/video/simplescreenrecorder/default.nix b/pkgs/applications/video/simplescreenrecorder/default.nix
index 8e30dc3e6358c..4e78ef877492d 100644
--- a/pkgs/applications/video/simplescreenrecorder/default.nix
+++ b/pkgs/applications/video/simplescreenrecorder/default.nix
@@ -40,6 +40,6 @@ mkDerivation rec {
     homepage = "https://www.maartenbaert.be/simplescreenrecorder";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
-    maintainers = [ maintainers.goibhniu ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/applications/video/streamlink/default.nix b/pkgs/applications/video/streamlink/default.nix
index 65b8406e8ee36..209023bb14cef 100644
--- a/pkgs/applications/video/streamlink/default.nix
+++ b/pkgs/applications/video/streamlink/default.nix
@@ -7,12 +7,12 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "streamlink";
-  version = "6.8.1";
+  version = "6.8.3";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-TEN++sKCtN8CZRnyBp4niRFlb+LPSNcyMCu9Rm+GOZ0=";
+    hash = "sha256-4/UaVnwIcDCS+R0El6P8Ku/jJ+/Ncl0D5m89zRHtm2g=";
   };
 
   patches = [
diff --git a/pkgs/applications/video/stremio/default.nix b/pkgs/applications/video/stremio/default.nix
index 0aa5ab26e653c..1cef55fa9ecd6 100644
--- a/pkgs/applications/video/stremio/default.nix
+++ b/pkgs/applications/video/stremio/default.nix
@@ -6,7 +6,6 @@
 , mpv
 , nodejs
 , qmake
-, qtwebchannel
 , qtwebengine
 , wrapQtAppsHook
 }:
@@ -20,7 +19,7 @@ stdenv.mkDerivation rec {
     repo = pname;
     rev = "v${version}";
     fetchSubmodules = true;
-    sha256 = "sha256-Gky0/HaGm11PeV4twoQV71T99NG2o0mYzQxu/c9x5oE=";
+    hash = "sha256-Gky0/HaGm11PeV4twoQV71T99NG2o0mYzQxu/c9x5oE=";
   };
 
   server = fetchurl {
diff --git a/pkgs/applications/video/sub-batch/default.nix b/pkgs/applications/video/sub-batch/default.nix
index bc0d6bd3a6cb4..713a0ad2753ea 100644
--- a/pkgs/applications/video/sub-batch/default.nix
+++ b/pkgs/applications/video/sub-batch/default.nix
@@ -17,7 +17,7 @@ rustPlatform.buildRustPackage rec {
     sha256 = "sha256-TOcK+l65iKON1kgBE4DYV/BXACnvqPCshavnVdpnGH4=";
   };
 
-  cargoSha256 = "sha256-tOY3aLpU08Tg/IT+usS2DNO0Q1aD0bvURmNJmHcJkgI=";
+  cargoHash = "sha256-tOY3aLpU08Tg/IT+usS2DNO0Q1aD0bvURmNJmHcJkgI=";
 
   nativeBuildInputs = [ makeWrapper ];
 
diff --git a/pkgs/applications/video/subtitleedit/default.nix b/pkgs/applications/video/subtitleedit/default.nix
deleted file mode 100644
index b192edbffa0e9..0000000000000
--- a/pkgs/applications/video/subtitleedit/default.nix
+++ /dev/null
@@ -1,97 +0,0 @@
-{ lib
-, stdenv
-, fetchzip
-, makeDesktopItem
-, nix-update-script
-
-, copyDesktopItems
-, icoutils
-, makeWrapper
-
-, ffmpeg
-, gtk2
-, hunspell
-, mono
-, mpv
-, tesseract4
-}:
-
-stdenv.mkDerivation rec {
-  pname = "subtitleedit";
-  version = "4.0.6";
-
-  src = fetchzip {
-    url = "https://github.com/SubtitleEdit/subtitleedit/releases/download/${version}/SE${lib.replaceStrings [ "." ] [ "" ] version}.zip";
-    hash = "sha256-ipAqnF7rpSXccWkyTysUBrD0/mnv5AEA5GuxMJjW9Dg=";
-    stripRoot = false;
-  };
-
-  nativeBuildInputs = [
-    copyDesktopItems
-    icoutils
-    makeWrapper
-  ];
-
-  runtimeLibs = lib.makeLibraryPath [
-    gtk2
-    hunspell
-    mpv
-    tesseract4
-  ];
-
-  runtimeBins = lib.makeBinPath [
-    ffmpeg
-    hunspell
-    tesseract4
-  ];
-
-  installPhase = ''
-    runHook preInstall
-
-    mkdir -p $out/bin
-    mkdir -p $out/share/icons/hicolor/{16x16,32x32,48x48,256x256}/apps
-
-    cp -r * $out/bin/
-    ln -s ${hunspell.out}/lib/libhunspell*.so $out/bin/libhunspell.so
-    makeWrapper "${mono}/bin/mono" $out/bin/subtitleedit \
-      --add-flags "$out/bin/SubtitleEdit.exe" \
-      --prefix LD_LIBRARY_PATH : ${runtimeLibs} \
-      --prefix PATH : ${runtimeBins}
-
-    wrestool -x -t 14 SubtitleEdit.exe > subtitleedit.ico
-    icotool -x -i 3 -o $out/share/icons/hicolor/16x16/apps/subtitleedit.png subtitleedit.ico
-    icotool -x -i 6 -o $out/share/icons/hicolor/32x32/apps/subtitleedit.png subtitleedit.ico
-    icotool -x -i 9 -o $out/share/icons/hicolor/48x48/apps/subtitleedit.png subtitleedit.ico
-    icotool -x -i 10 -o $out/share/icons/hicolor/256x256/apps/subtitleedit.png subtitleedit.ico
-
-    runHook postInstall
-  '';
-
-  desktopItems = [
-    (makeDesktopItem {
-      name = pname;
-      desktopName = "Subtitle Edit";
-      exec = "subtitleedit";
-      icon = "subtitleedit";
-      comment = meta.description;
-      categories = [ "Video" ];
-    })
-  ];
-
-  passthru.updateScript = nix-update-script { };
-
-  meta = with lib; {
-    description = "A subtitle editor";
-    longDescription = ''
-      With Subtitle Edit you can easily adjust a subtitle if it is out of sync with
-      the video in several different ways. You can also use it for making
-      new subtitles from scratch (using the time-line /waveform/spectrogram)
-      or for translating subtitles.
-    '';
-    homepage = "https://nikse.dk/subtitleedit";
-    license = licenses.gpl3Plus;
-    platforms = platforms.all;
-    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
-    maintainers = with maintainers; [ ];
-  };
-}
diff --git a/pkgs/applications/video/timelens/default.nix b/pkgs/applications/video/timelens/default.nix
index b80d1c3c447b8..7b7b1e0e7211c 100644
--- a/pkgs/applications/video/timelens/default.nix
+++ b/pkgs/applications/video/timelens/default.nix
@@ -40,7 +40,7 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://timelens.blinry.org";
     changelog = "https://github.com/timelens/timelens/blob/${src.rev}/CHANGELOG.md";
     license = lib.licenses.gpl2Plus;
-    maintainers = with lib.maintainers; [ janik ];
+    maintainers = [ ];
     mainProgram = "timelens";
   };
 }
diff --git a/pkgs/applications/video/ustreamer/default.nix b/pkgs/applications/video/ustreamer/default.nix
index b612584d8b0f3..512e6e8515c81 100644
--- a/pkgs/applications/video/ustreamer/default.nix
+++ b/pkgs/applications/video/ustreamer/default.nix
@@ -12,6 +12,7 @@
 , speex
 , jansson
 , libopus
+, nixosTests
 , withJanus ? true
 }:
 stdenv.mkDerivation rec {
@@ -53,6 +54,8 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
+  passthru.tests = { inherit (nixosTests) ustreamer; };
+
   meta = with lib; {
     homepage = "https://github.com/pikvm/ustreamer";
     description = "Lightweight and fast MJPG-HTTP streamer";
diff --git a/pkgs/applications/video/vcs/default.nix b/pkgs/applications/video/vcs/default.nix
index 63a9989134735..105823fec3ab6 100644
--- a/pkgs/applications/video/vcs/default.nix
+++ b/pkgs/applications/video/vcs/default.nix
@@ -3,7 +3,6 @@
 , util-linux, getopt
 , dejavu_fonts
 }:
-with lib;
 let
   version = "1.13.4";
   gopt = if stdenv.isLinux then util-linux else getopt;
@@ -29,10 +28,10 @@ stdenv.mkDerivation {
     mv vcs $out/bin/vcs
     substituteAllInPlace $out/bin/vcs
     chmod +x $out/bin/vcs
-    wrapProgram $out/bin/vcs --argv0 vcs --set PATH "${makeBinPath runtimeDeps}"
+    wrapProgram $out/bin/vcs --argv0 vcs --set PATH "${lib.makeBinPath runtimeDeps}"
   '';
 
-  meta = {
+  meta = with lib; {
     description = "Generates contact sheets from video files";
     homepage = "http://p.outlyer.net/vcs";
     license = licenses.lgpl21Plus;
diff --git a/pkgs/applications/video/vdr/default.nix b/pkgs/applications/video/vdr/default.nix
index 5713aeb954af3..50c0d5ce4ce07 100644
--- a/pkgs/applications/video/vdr/default.nix
+++ b/pkgs/applications/video/vdr/default.nix
@@ -5,12 +5,12 @@
 }: stdenv.mkDerivation rec {
 
   pname = "vdr";
-  version = "2.6.7";
+  version = "2.6.9";
 
   src = fetchgit {
     url = "git://git.tvdr.de/vdr.git";
     rev = version;
-    hash = "sha256-6i3EQgARwMLNejgB0NevmLmd9OrNBvjqW+qLrAdqUxE=";
+    hash = "sha256-0Metur3+fQhomf+ClY9zXijNsr5wWkaqnzjUNXjsjss=";
   };
 
   enableParallelBuilding = true;
diff --git a/pkgs/applications/video/vdr/markad/default.nix b/pkgs/applications/video/vdr/markad/default.nix
index efc08eaf06d19..c86a8ff296435 100644
--- a/pkgs/applications/video/vdr/markad/default.nix
+++ b/pkgs/applications/video/vdr/markad/default.nix
@@ -2,20 +2,7 @@
 , stdenv
 , vdr
 , fetchFromGitHub
-, graphicsmagick
-, pcre
-, xorgserver
 , ffmpeg
-, libiconv
-, boost
-, libgcrypt
-, perl
-, util-linux
-, groff
-, libva
-, xorg
-, ncurses
-, callPackage
 }:
 stdenv.mkDerivation rec {
   pname = "vdr-markad";
diff --git a/pkgs/applications/video/vdr/plugins.nix b/pkgs/applications/video/vdr/plugins.nix
index 6890df0bdca6d..a0d12156f774e 100644
--- a/pkgs/applications/video/vdr/plugins.nix
+++ b/pkgs/applications/video/vdr/plugins.nix
@@ -176,7 +176,7 @@ in {
       owner = "jowi24";
       repo = "vdr-fritz";
       rev = version;
-      sha256 = "sha256-DGD73i+ZHFgtCo+pMj5JaMovvb5vS1x20hmc5t29//o=";
+      hash = "sha256-DGD73i+ZHFgtCo+pMj5JaMovvb5vS1x20hmc5t29//o=";
       fetchSubmodules = true;
     };
 
diff --git a/pkgs/applications/video/vdr/softhddevice/default.nix b/pkgs/applications/video/vdr/softhddevice/default.nix
index e04af11dfe0d9..afce9a79d0abb 100644
--- a/pkgs/applications/video/vdr/softhddevice/default.nix
+++ b/pkgs/applications/video/vdr/softhddevice/default.nix
@@ -14,12 +14,12 @@
 }:
 stdenv.mkDerivation rec {
   pname = "vdr-softhddevice";
-  version = "2.3.3";
+  version = "2.3.7";
 
   src = fetchFromGitHub {
     owner = "ua0lnj";
     repo = "vdr-plugin-softhddevice";
-    sha256 = "sha256-PvSo5qiDMVrL6ylts5leR/3YAqIpIZcmnAqnGopPG94=";
+    sha256 = "sha256-gn1Z3pw8f0Tpo8Ot0hP9+p/KbK/EGOInE34BCH3aVp0=";
     rev = "v${version}";
   };
 
diff --git a/pkgs/applications/video/wf-recorder/default.nix b/pkgs/applications/video/wf-recorder/default.nix
index f4e2c8ee714fd..830c09bfa6d6c 100644
--- a/pkgs/applications/video/wf-recorder/default.nix
+++ b/pkgs/applications/video/wf-recorder/default.nix
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
     inherit (src.meta) homepage;
     changelog = "https://github.com/ammen99/wf-recorder/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     platforms = platforms.linux;
     mainProgram = "wf-recorder";
   };
diff --git a/pkgs/applications/video/xplayer/default.nix b/pkgs/applications/video/xplayer/default.nix
deleted file mode 100644
index d697ff2020043..0000000000000
--- a/pkgs/applications/video/xplayer/default.nix
+++ /dev/null
@@ -1,97 +0,0 @@
-{ stdenv
-, lib
-, fetchFromGitHub
-, autoreconfHook
-, autoconf-archive
-, clutter-gst
-, clutter-gtk
-, gettext
-, glib
-, gobject-introspection
-, gst-plugins-bad
-, gst-plugins-base
-, gst-plugins-good
-, gstreamer
-, gtk-doc
-, gtk3
-, intltool
-, itstool
-, libpeas
-, libxml2
-, libxplayer-plparser
-, pkg-config
-, python3
-, wrapGAppsHook3
-, xapp
-, yelp-tools }:
-
-stdenv.mkDerivation rec {
-  pname = "xplayer";
-  version = "2.4.4";
-
-  src = fetchFromGitHub {
-    owner = "linuxmint";
-    repo = pname;
-    rev = version;
-    sha256 = "sha256-o2vLNIELd1EYWG26t5gOpnamJrBJeg4P6fcLirkcmfM=";
-  };
-
-  # configure wants to find gst-inspect-1.0 via pkgconfig but
-  # the gstreamer toolsdir points to the wrong derivation output
-  postPatch = ''
-    substituteInPlace configure.ac \
-                      --replace '$gst10_toolsdir/gst-inspect-1.0' '${gstreamer}/bin/gst-inspect-1.0' \
-  '';
-
-  preBuild = ''
-    makeFlagsArray+=(
-      "INCLUDES=-I${glib.dev}/include/gio-unix-2.0"
-      "CFLAGS=-Wno-error" # Otherwise a lot of deprecated warnings are treated as error
-    )
-  '';
-
-  nativeBuildInputs = [
-    autoreconfHook
-    wrapGAppsHook3
-    autoconf-archive
-    gettext
-    gtk-doc
-    intltool
-    itstool
-    pkg-config
-    python3.pkgs.wrapPython
-    yelp-tools
-    gobject-introspection
-  ];
-
-  buildInputs = [
-    clutter-gst
-    clutter-gtk
-    glib
-    gst-plugins-bad
-    gst-plugins-base
-    gst-plugins-good
-    gstreamer
-    gtk3
-    libpeas
-    libxml2
-    libxplayer-plparser
-    python3
-    xapp
-    # to satisfy configure script
-    python3.pkgs.pygobject3
-  ];
-
-  postFixup = ''
-    buildPythonPath ${python3.pkgs.dbus-python}
-    patchPythonScript $out/lib/xplayer/plugins/dbus/dbusservice.py
-  '';
-
-  meta = with lib; {
-    description = "Generic media player from Linux Mint";
-    license = with licenses; [ gpl2Plus lgpl21Plus ];
-    homepage = "https://github.com/linuxmint/xplayer";
-    maintainers = with maintainers; [ tu-maurice bobby285271 ];
-    platforms = platforms.linux;
-  };
-}
diff --git a/pkgs/applications/video/xplayer/plparser.nix b/pkgs/applications/video/xplayer/plparser.nix
deleted file mode 100644
index 67e394968da54..0000000000000
--- a/pkgs/applications/video/xplayer/plparser.nix
+++ /dev/null
@@ -1,44 +0,0 @@
-{ stdenv
-, lib
-, fetchFromGitHub
-, meson
-, ninja
-, gobject-introspection
-, gmime3
-, libxml2
-, libsoup
-, pkg-config
-}:
-
-stdenv.mkDerivation rec {
-  pname = "xplayer-plparser";
-  version = "1.0.3";
-
-  src = fetchFromGitHub {
-    owner = "linuxmint";
-    repo = pname;
-    rev = version;
-    sha256 = "6GMKsIpyQdiyHPxrjWHAHvuCouJxrAcYPIo9u6TLOA4=";
-  };
-
-  nativeBuildInputs = [
-    meson
-    ninja
-    pkg-config
-    gobject-introspection
-  ];
-
-  buildInputs = [
-    gmime3
-    libxml2
-    libsoup
-  ];
-
-  meta = with lib; {
-    description = "Playlist parsing library for xplayer";
-    homepage = "https://github.com/linuxmint/xplayer-plparser";
-    maintainers = with maintainers; [ tu-maurice bobby285271 ];
-    license = licenses.lgpl2Plus;
-    platforms = platforms.linux;
-  };
-}
diff --git a/pkgs/applications/video/xscast/default.nix b/pkgs/applications/video/xscast/default.nix
index 4e7252a514f88..71b22201e9dd9 100644
--- a/pkgs/applications/video/xscast/default.nix
+++ b/pkgs/applications/video/xscast/default.nix
@@ -30,7 +30,7 @@ stdenv.mkDerivation {
     homepage = "https://github.com/KeyboardFire/xscast";
     license = licenses.mit;
     description = "Screencasts of windows with list of keystrokes overlayed";
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     mainProgram = "xscast";
   };
 }