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/davinci-resolve/default.nix16
-rw-r--r--pkgs/applications/video/deface/default.nix28
-rw-r--r--pkgs/applications/video/flowblade/default.nix4
-rw-r--r--pkgs/applications/video/freetube/default.nix4
-rw-r--r--pkgs/applications/video/hypnotix/default.nix4
-rw-r--r--pkgs/applications/video/jellyfin-media-player/default.nix12
-rw-r--r--pkgs/applications/video/jellyfin-media-player/fix-web-path.patch28
-rw-r--r--pkgs/applications/video/kodi/addons/formula1/default.nix29
-rw-r--r--pkgs/applications/video/kodi/addons/infotagger/default.nix4
-rw-r--r--pkgs/applications/video/kodi/addons/plugin-cache/default.nix26
-rw-r--r--pkgs/applications/video/kodi/addons/raiplay/default.nix30
-rw-r--r--pkgs/applications/video/kodi/addons/simplecache/default.nix26
-rw-r--r--pkgs/applications/video/kodi/addons/skyvideoitalia/default.nix31
-rw-r--r--pkgs/applications/video/kodi/addons/upnext/default.nix26
-rw-r--r--pkgs/applications/video/losslesscut-bin/build-from-dmg.nix13
-rw-r--r--pkgs/applications/video/losslesscut-bin/build-from-windows.nix13
-rw-r--r--pkgs/applications/video/losslesscut-bin/default.nix10
-rw-r--r--pkgs/applications/video/media-downloader/default.nix50
-rw-r--r--pkgs/applications/video/mlv-app/default.nix4
-rw-r--r--pkgs/applications/video/mpv/scripts/dynamic-crop.nix6
-rw-r--r--pkgs/applications/video/mpv/scripts/mpv-notify-send.nix3
-rw-r--r--pkgs/applications/video/mpv/scripts/mpvacious.nix4
-rw-r--r--pkgs/applications/video/mpv/scripts/thumbnail.nix4
-rw-r--r--pkgs/applications/video/obs-studio/plugins/obs-move-transition.nix4
-rw-r--r--pkgs/applications/video/obs-studio/plugins/obs-vertical-canvas.nix4
-rw-r--r--pkgs/applications/video/webtorrent_desktop/default.nix6
26 files changed, 246 insertions, 143 deletions
diff --git a/pkgs/applications/video/davinci-resolve/default.nix b/pkgs/applications/video/davinci-resolve/default.nix
index bca8bc1e48ed2..be18304386cbd 100644
--- a/pkgs/applications/video/davinci-resolve/default.nix
+++ b/pkgs/applications/video/davinci-resolve/default.nix
@@ -165,11 +165,11 @@ let
 
       desktopItems = [
         (makeDesktopItem {
-          name = "davinci-resolve";
-          desktopName = "Davinci Resolve";
+          name = "davinci-resolve${lib.optionalString studioVariant "-studio"}";
+          desktopName = "Davinci Resolve${lib.optionalString studioVariant " Studio"}";
           genericName = "Video Editor";
-          exec = "resolve";
-          # icon = "DV_Resolve";
+          exec = "davinci-resolve${lib.optionalString studioVariant "-studio"}";
+          icon = "davinci-resolve${lib.optionalString studioVariant "-studio"}";
           comment = "Professional video editing, color, effects and audio post-processing";
           categories = [
             "AudioVideo"
@@ -254,6 +254,12 @@ buildFHSEnv {
     ''
   }";
 
+  extraInstallCommands = ''
+    mkdir -p $out/share/applications $out/share/icons/hicolor/128x128/apps
+    ln -s ${davinci}/share/applications/*.desktop $out/share/applications/
+    ln -s ${davinci}/graphics/DV_Resolve.png $out/share/icons/hicolor/128x128/apps/davinci-resolve${lib.optionalString studioVariant "-studio"}.png
+  '';
+
   passthru = {
     inherit davinci;
     updateScript = lib.getExe (writeShellApplication {
@@ -284,6 +290,6 @@ buildFHSEnv {
     maintainers = with maintainers; [ amarshall jshcmpbll orivej ];
     platforms = [ "x86_64-linux" ];
     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
-    mainProgram = "davinci-resolve";
+    mainProgram = "davinci-resolve${lib.optionalString studioVariant "-studio"}";
   };
 }
diff --git a/pkgs/applications/video/deface/default.nix b/pkgs/applications/video/deface/default.nix
index 428275535af49..0b0a2d0859810 100644
--- a/pkgs/applications/video/deface/default.nix
+++ b/pkgs/applications/video/deface/default.nix
@@ -8,21 +8,23 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "deface";
-  version = "1.4.0";
-  format = "pyproject";
+  version = "1.5.0";
+  pyproject = true;
+
+  disabled = python3.pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "ORB-HD";
     repo = "deface";
-    rev = "v${version}";
-    hash = "sha256-tLNTgdnKKmyYHVajz0dHIb7cvC1by5LQ5CFIbMvPEYk=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-/mXWeL6OSgW4BMXtAZD/3UxQUGt7UE5ZvH8CXNCueJo=";
   };
 
-  nativeBuildInputs = with python3.pkgs; [
+  build-system = with python3.pkgs; [
     setuptools-scm
   ];
 
-  propagatedBuildInputs = with python3.pkgs; [
+  dependencies = with python3.pkgs; [
     imageio
     imageio-ffmpeg
     numpy
@@ -38,17 +40,21 @@ python3.pkgs.buildPythonApplication rec {
     ''--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ pkgs.onnxruntime ]}"''
   ];
 
-  patchPhase = ''
-    substituteInPlace pyproject.toml requirements.txt --replace "opencv-python" "opencv"
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "opencv-python" "opencv"
   '';
 
   pythonImportsCheck = [ "deface" "onnx" "onnxruntime" ];
 
-  meta = with lib; {
+  meta = {
     description = "Video anonymization by face detection";
     homepage = "https://github.com/ORB-HD/deface";
-    license = licenses.mit;
-    maintainers = with maintainers; [ lurkki ];
+    changelog = "https://github.com/ORB-HD/deface/releases/tag/v${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ lurkki ];
     mainProgram = "deface";
+    # terminate called after throwing an instance of 'onnxruntime::OnnxRuntimeException'
+    broken = stdenv.hostPlatform.system == "aarch64-linux";
   };
 }
diff --git a/pkgs/applications/video/flowblade/default.nix b/pkgs/applications/video/flowblade/default.nix
index 423f45ba590f9..92f035ca9018d 100644
--- a/pkgs/applications/video/flowblade/default.nix
+++ b/pkgs/applications/video/flowblade/default.nix
@@ -5,13 +5,13 @@
 
 stdenv.mkDerivation rec {
   pname = "flowblade";
-  version = "2.16.2";
+  version = "2.16.3";
 
   src = fetchFromGitHub {
     owner = "jliljebl";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-dLrrV+ZMXqcJMf69PkgLCDCCPBrUadLtT7vm06Y+1rA=";
+    sha256 = "sha256-WXB071lndw4/APTgwxNVjmYBvzMXZdLn1OaWqBXjW2Q=";
   };
 
   buildInputs = [
diff --git a/pkgs/applications/video/freetube/default.nix b/pkgs/applications/video/freetube/default.nix
index 3d86b182a1515..72bdd1f97916e 100644
--- a/pkgs/applications/video/freetube/default.nix
+++ b/pkgs/applications/video/freetube/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "freetube";
-  version = "0.20.0";
+  version = "0.21.0";
 
   src = fetchurl {
     url = "https://github.com/FreeTubeApp/FreeTube/releases/download/v${version}-beta/freetube_${version}_amd64.AppImage";
-    sha256 = "sha256-7k5hyiK3m+117AxmsoecGsgXSxs8xhyTf8+rl4oBbB8=";
+    sha256 = "sha256-jTDJ0oyDrgOM6T+nwiOakm3QUqKfK2UNY6AfpoaJzd0=";
   };
 
   passthru.tests = nixosTests.freetube;
diff --git a/pkgs/applications/video/hypnotix/default.nix b/pkgs/applications/video/hypnotix/default.nix
index e164666e85f18..00f8eb6b024ba 100644
--- a/pkgs/applications/video/hypnotix/default.nix
+++ b/pkgs/applications/video/hypnotix/default.nix
@@ -14,13 +14,13 @@
 
 stdenv.mkDerivation rec {
   pname = "hypnotix";
-  version = "4.4";
+  version = "4.5";
 
   src = fetchFromGitHub {
     owner = "linuxmint";
     repo = "hypnotix";
     rev = version;
-    hash = "sha256-SGKa3yo3iEDAjsvfa6dBfM7sAnBVr0pB6zLKQb6e4Ys=";
+    hash = "sha256-tcBBPJr9C+3FC8VWAM+KzETKAovfyehBvlmn7mIR7VQ=";
   };
 
   patches = [
diff --git a/pkgs/applications/video/jellyfin-media-player/default.nix b/pkgs/applications/video/jellyfin-media-player/default.nix
index d3909c3799bcb..fef1a9ae80f08 100644
--- a/pkgs/applications/video/jellyfin-media-player/default.nix
+++ b/pkgs/applications/video/jellyfin-media-player/default.nix
@@ -21,24 +21,21 @@
 , qtwebchannel
 , qtwebengine
 , qtx11extras
-, jellyfin-web
 , withDbus ? stdenv.isLinux
 }:
 
 mkDerivation rec {
   pname = "jellyfin-media-player";
-  version = "1.10.1";
+  version = "1.11.1";
 
   src = fetchFromGitHub {
     owner = "jellyfin";
     repo = "jellyfin-media-player";
     rev = "v${version}";
-    sha256 = "sha256-l1jNrEUrDCc4R1CZ0b0Omjka6wTryjWqnEJbfCSJ0ZE=";
+    sha256 = "sha256-Jsn4kWQzUaQI9MpbsLJr6JSJk9ZSnMEcrebQ2DYegSU=";
   };
 
   patches = [
-    # fix the location of the jellyfin-web path
-    ./fix-web-path.patch
     # disable update notifications since the end user can't simply download the release artifacts to update
     ./disable-update-notifications.patch
   ];
@@ -77,11 +74,6 @@ mkDerivation rec {
     "-DLINUX_X11POWER=ON"
   ];
 
-  preConfigure = ''
-    # link the jellyfin-web files to be copied by cmake (see fix-web-path.patch)
-    ln -s ${jellyfin-web}/share/jellyfin-web .
-  '';
-
   postInstall = lib.optionalString stdenv.isDarwin ''
     mkdir -p $out/bin $out/Applications
     mv "$out/Jellyfin Media Player.app" $out/Applications
diff --git a/pkgs/applications/video/jellyfin-media-player/fix-web-path.patch b/pkgs/applications/video/jellyfin-media-player/fix-web-path.patch
deleted file mode 100644
index 250a5c0695450..0000000000000
--- a/pkgs/applications/video/jellyfin-media-player/fix-web-path.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
-index 5abca9b..d09176b 100644
---- a/src/CMakeLists.txt
-+++ b/src/CMakeLists.txt
-@@ -107,10 +107,8 @@ endif()
- set(RESOURCE_ROOT .)
- if(APPLE)
-   set(RESOURCE_ROOT Resources)
--  if(EXISTS ${CMAKE_CURRENT_BINARY_DIR}/../dist/)
--    add_resources(TARGET ${MAIN_TARGET} SOURCES ${CMAKE_CURRENT_BINARY_DIR}/../dist/ DEST ${RESOURCE_ROOT}/web-client/desktop)
--  endif()
--  add_resources(TARGET ${MAIN_TARGET} SOURCES ${CMAKE_SOURCE_DIR}/native/ DEST ${RESOURCE_ROOT}/web-client/extension)
-+  install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/../../jellyfin-web/ DESTINATION ${RESOURCE_ROOT}/web-client/desktop)
-+  install(DIRECTORY ${CMAKE_SOURCE_DIR}/native/ DESTINATION ${RESOURCE_ROOT}/web-client/extension)
- endif()
- 
- if(NOT APPLE)
-@@ -123,9 +121,7 @@ if(NOT APPLE)
-       install(FILES ${loc}/qtwebengine_devtools_resources.pak DESTINATION resources)
-     endif()
-   endforeach()
--  if(EXISTS ${CMAKE_CURRENT_BINARY_DIR}/../dist/)
--    install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/../dist/ DESTINATION ${INSTALL_RESOURCE_DIR}/web-client/desktop)
--  endif()
-+  install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/../../jellyfin-web/ DESTINATION ${INSTALL_RESOURCE_DIR}/web-client/desktop)
-   install(DIRECTORY ${CMAKE_SOURCE_DIR}/native/ DESTINATION ${INSTALL_RESOURCE_DIR}/web-client/extension)
- endif()
- 
diff --git a/pkgs/applications/video/kodi/addons/formula1/default.nix b/pkgs/applications/video/kodi/addons/formula1/default.nix
new file mode 100644
index 0000000000000..0d374dc65be1b
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/formula1/default.nix
@@ -0,0 +1,29 @@
+{ lib, rel, buildKodiAddon, fetchzip, addonUpdateScript, requests }:
+
+buildKodiAddon rec {
+  pname = "formula1";
+  namespace = "plugin.video.formula1";
+  version = "2.0.2";
+
+  src = fetchzip {
+    url = "https://mirrors.kodi.tv/addons/${lib.toLower rel}/${namespace}/${namespace}-${version}.zip";
+    sha256 = "sha256-aClAgkJKvixeKzrwgEsfDhPXiFv9+ULLmb8c9QTaUgM=";
+  };
+
+  propagatedBuildInputs = [
+    requests
+  ];
+
+  passthru = {
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.formula1";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://github.com/jaylinski/kodi-addon-formula1";
+    description = "Videos from the Formula 1 website";
+    license = licenses.mit;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/infotagger/default.nix b/pkgs/applications/video/kodi/addons/infotagger/default.nix
index da4528ed0afc5..7ac5e48071073 100644
--- a/pkgs/applications/video/kodi/addons/infotagger/default.nix
+++ b/pkgs/applications/video/kodi/addons/infotagger/default.nix
@@ -2,13 +2,13 @@
 buildKodiAddon rec {
   pname = "infotagger";
   namespace = "script.module.infotagger";
-  version = "0.0.7";
+  version = "0.0.8";
 
   src = fetchFromGitHub {
     owner = "jurialmunkey";
     repo = namespace;
     rev = "v${version}";
-    hash = "sha256-Us7ud0QORGn+ALB4uyISekp0kUYY8nN8uFNg8MlxEB0=";
+    hash = "sha256-Ns1OjrYLKz4znXRxqUErDLcmC0HBjBFVYI9GFqDVurY=";
   };
 
   passthru = {
diff --git a/pkgs/applications/video/kodi/addons/plugin-cache/default.nix b/pkgs/applications/video/kodi/addons/plugin-cache/default.nix
new file mode 100644
index 0000000000000..c21f5e136e41e
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/plugin-cache/default.nix
@@ -0,0 +1,26 @@
+{ lib, rel, buildKodiAddon, fetchzip, addonUpdateScript }:
+
+buildKodiAddon rec {
+  pname = "plugin-cache";
+  namespace = "script.common.plugin.cache";
+  version = "3.0.0";
+
+  src = fetchzip {
+    url = "https://mirrors.kodi.tv/addons/${lib.toLower rel}/${namespace}/${namespace}-${version}.zip";
+    sha256 = "sha256-5QcMNmWOEw2C26OXlvAvxqDxTpjIMBhwmaIFwVgHuIU=";
+  };
+
+  passthru = {
+    pythonPath = "resources/lib";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.plugin-cache";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://github.com/anxdpanic/script.common.plugin.cache";
+    description = "Common plugin cache";
+    license = licenses.gpl3Only;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/raiplay/default.nix b/pkgs/applications/video/kodi/addons/raiplay/default.nix
new file mode 100644
index 0000000000000..ab5bcfedccfdb
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/raiplay/default.nix
@@ -0,0 +1,30 @@
+{ lib, rel, buildKodiAddon, fetchzip, addonUpdateScript, inputstreamhelper, plugin-cache }:
+
+buildKodiAddon rec {
+  pname = "raiplay";
+  namespace = "plugin.video.raitv";
+  version = "4.1.2";
+
+  propagatedBuildInputs = [
+    plugin-cache
+    inputstreamhelper
+  ];
+
+  src = fetchzip {
+    url = "https://mirrors.kodi.tv/addons/${lib.toLower rel}/${namespace}/${namespace}-${version}.zip";
+    sha256 = "sha256-9aR1kkl+0+nhP0bOTnaKCgSfuPvJzX5TWHU0WJZIvSM=";
+  };
+
+  passthru = {
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.raiplay";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://github.com/maxbambi/plugin.video.raitv/";
+    description = "Live radio and TV channels, latest 7 days of programming, broadcast archive, news";
+    license = licenses.gpl3Only;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/simplecache/default.nix b/pkgs/applications/video/kodi/addons/simplecache/default.nix
new file mode 100644
index 0000000000000..35c2cc5a1a336
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/simplecache/default.nix
@@ -0,0 +1,26 @@
+{ lib, rel, buildKodiAddon, fetchzip, addonUpdateScript }:
+
+buildKodiAddon rec {
+  pname = "simplecache";
+  namespace = "script.module.simplecache";
+  version = "2.0.2";
+
+  src = fetchzip {
+    url = "https://mirrors.kodi.tv/addons/${lib.toLower rel}/${namespace}/${namespace}-${version}.zip";
+    sha256 = "sha256-xdOBIi99nspcDIKkjxcW1r/BqL8O9NxdDViTuvMtUmo=";
+  };
+
+  passthru = {
+    pythonPath = "lib";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.simplecache";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://github.com/kodi-community-addons/script.module.simplecache";
+    description = "A simple object cache for Kodi addons";
+    license = licenses.asl20;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/skyvideoitalia/default.nix b/pkgs/applications/video/kodi/addons/skyvideoitalia/default.nix
new file mode 100644
index 0000000000000..c791391578c70
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/skyvideoitalia/default.nix
@@ -0,0 +1,31 @@
+{ lib, rel, buildKodiAddon, fetchzip, addonUpdateScript, requests, inputstreamhelper, simplecache }:
+
+buildKodiAddon rec {
+  pname = "skyvideoitalia";
+  namespace = "plugin.video.skyvideoitalia";
+  version = "1.0.4";
+
+  src = fetchzip {
+    url = "https://mirrors.kodi.tv/addons/${lib.toLower rel}/${namespace}/${namespace}-${version}.zip";
+    sha256 = "sha256-ciLtqT++6bn7la4xRVvlRwzbbUUUPN5WU35rJpR4l+w=";
+  };
+
+  propagatedBuildInputs = [
+    requests
+    inputstreamhelper
+    simplecache
+  ];
+
+  passthru = {
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.skyvideoitalia";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://www.github.com/nixxo/plugin.video.skyvideoitalia";
+    description = "Show video content from the website of Sky Italia (video.sky.it). News, sport, entertainment and much more";
+    license = licenses.gpl3Plus;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/kodi/addons/upnext/default.nix b/pkgs/applications/video/kodi/addons/upnext/default.nix
new file mode 100644
index 0000000000000..dccfce4c3f0f6
--- /dev/null
+++ b/pkgs/applications/video/kodi/addons/upnext/default.nix
@@ -0,0 +1,26 @@
+{ lib, rel, buildKodiAddon, fetchzip, addonUpdateScript }:
+
+buildKodiAddon rec {
+  pname = "upnext";
+  namespace = "service.upnext";
+  version = "1.1.9+matrix.1";
+
+  src = fetchzip {
+    url = "https://mirrors.kodi.tv/addons/${lib.toLower rel}/${namespace}/${namespace}-${version}.zip";
+    sha256 = "sha256-oNUk80MEzK6Qssn1KjT6psPTazISRoUif1IMo+BKJxo=";
+  };
+
+  passthru = {
+    pythonPath = "resources/lib";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.upnext";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://github.com/im85288/service.upnext";
+    description = "Up Next - Proposes to play the next episode automatically";
+    license = licenses.gpl2Only;
+    maintainers = teams.kodi.members;
+  };
+}
diff --git a/pkgs/applications/video/losslesscut-bin/build-from-dmg.nix b/pkgs/applications/video/losslesscut-bin/build-from-dmg.nix
index 9b3a91b9d029a..12b8205eec343 100644
--- a/pkgs/applications/video/losslesscut-bin/build-from-dmg.nix
+++ b/pkgs/applications/video/losslesscut-bin/build-from-dmg.nix
@@ -1,7 +1,7 @@
 { lib
 , stdenvNoCC
 , fetchurl
-, undmg
+, _7zz
 , pname
 , version
 , hash
@@ -19,15 +19,18 @@ in
 stdenvNoCC.mkDerivation {
   inherit pname version src;
 
-  nativeBuildInputs = [ undmg ];
+  nativeBuildInputs = [ _7zz ];
 
   sourceRoot = "LosslessCut.app";
 
   installPhase = ''
-    mkdir -p "$out/Applications/LosslessCut.app"
-    cp -R . "$out/Applications/LosslessCut.app"
+    runHook preInstall
+    mkdir -p "$out/Applications"
+    cd ..
+    mv "$sourceRoot" "$out/Applications"
     mkdir -p "$out/bin"
-    ln -s "$out/Applications/LosslessCut.app/Contents/MacOS/LosslessCut" "$out/bin/losslesscut"
+    ln -s "$out/Applications/$(basename "$sourceRoot")/Contents/MacOS/LosslessCut" "$out/bin/losslesscut"
+    runHook postInstall
   '';
 
   meta = metaCommon // (with lib; {
diff --git a/pkgs/applications/video/losslesscut-bin/build-from-windows.nix b/pkgs/applications/video/losslesscut-bin/build-from-windows.nix
index ddaf873806448..e6520e4a54b99 100644
--- a/pkgs/applications/video/losslesscut-bin/build-from-windows.nix
+++ b/pkgs/applications/video/losslesscut-bin/build-from-windows.nix
@@ -19,15 +19,20 @@ stdenvNoCC.mkDerivation {
   nativeBuildInputs = [ p7zip ];
 
   unpackPhase = ''
-    7z x $src -oLosslessCut-win-x64
+    runHook preUnpack
+    7z x "$src" -o"$sourceRoot"
+    runHook postUnpack
   '';
 
   sourceRoot = "LosslessCut-win-x64";
 
   installPhase = ''
-    mkdir -p $out/bin $out/libexec
-    (cd .. && mv LosslessCut-win-x64 $out/libexec)
-    ln -s "$out/libexec/LosslessCut-win-x64/LosslessCut.exe" "$out/bin/LosslessCut.exe"
+    runHook preInstall
+    mkdir -p "$out/bin" "$out/libexec"
+    cd ..
+    mv "$sourceRoot" "$out/libexec"
+    ln -s "$out/libexec/$(basename "$sourceRoot")/LosslessCut.exe" "$out/bin/LosslessCut.exe"
+    runHook postInstall
   '';
 
   meta = metaCommon // (with lib; {
diff --git a/pkgs/applications/video/losslesscut-bin/default.nix b/pkgs/applications/video/losslesscut-bin/default.nix
index 745f481c6d5d4..c3ed6b306beb3 100644
--- a/pkgs/applications/video/losslesscut-bin/default.nix
+++ b/pkgs/applications/video/losslesscut-bin/default.nix
@@ -6,7 +6,7 @@
 
 let
   pname = "losslesscut";
-  version = "3.58.0";
+  version = "3.61.1";
   metaCommon = with lib; {
     description = "Swiss army knife of lossless video/audio editing";
     homepage = "https://mifi.no/losslesscut/";
@@ -17,22 +17,22 @@ let
   };
   x86_64-appimage = callPackage ./build-from-appimage.nix {
     inherit pname version metaCommon;
-    hash = "sha256-wmOdW5LdGLs6Wrt/VBlbC1ScFZBmd5gVQaj/cYADnWc=";
+    hash = "sha256-wKhEB+MfOsBvZRTIt3hLofw37+YO+hWKowlSi1OxSAU=";
     inherit (buildPackages) makeWrapper;
   };
   x86_64-dmg = callPackage ./build-from-dmg.nix {
     inherit pname version metaCommon;
-    hash = "sha256-ZNUkzxpFTmsFcdC4oJWDxvqunpaBKz7Fnmrsa4W12Bg=";
+    hash = "sha256-yZYmM533D9VzM+a0bnYz/aqocaEJVFOTgLWjbQGOQR0=";
     isAarch64 = false;
   };
   aarch64-dmg = callPackage ./build-from-dmg.nix {
     inherit pname version metaCommon;
-    hash = "sha256-PpQF31qsn9TOIRVzOdDoLUqti+m1uRpBQrrqKtxFleE=";
+    hash = "sha256-/qa2P0R7xRzDgnPKqkeKN6lrDbPg9WuZ/Nnc51NTzaM=";
     isAarch64 = true;
   };
   x86_64-windows = callPackage ./build-from-windows.nix {
     inherit pname version metaCommon;
-    hash = "sha256-AgWvLU9m2q7fxZYXgHGMgEj1WLP5XzERq7tWcin2/30=";
+    hash = "sha256-0awYmSGxm8M12X0WQftlapRF9m3GGCZivNwBtRjSa4E=";
   };
 in
 (
diff --git a/pkgs/applications/video/media-downloader/default.nix b/pkgs/applications/video/media-downloader/default.nix
deleted file mode 100644
index 9340d174162df..0000000000000
--- a/pkgs/applications/video/media-downloader/default.nix
+++ /dev/null
@@ -1,50 +0,0 @@
-{ aria2
-, cmake
-, fetchFromGitHub
-, ffmpeg
-, lib
-, python3
-, qtbase
-, stdenv
-, wrapQtAppsHook
-, yt-dlp
-}:
-
-stdenv.mkDerivation (finalAttrs: {
-  pname = "media-downloader";
-  version = "4.7.0";
-
-  src = fetchFromGitHub {
-    owner = "mhogomchungu";
-    repo = "media-downloader";
-    rev = finalAttrs.version;
-    hash = "sha256-ykPYxRgzKZrA0KwS1FoxZOkSL+7TbLgy0yLfs7Iqpf4=";
-  };
-
-  nativeBuildInputs = [
-    cmake
-    wrapQtAppsHook
-  ];
-
-  buildInputs = [
-    qtbase
-  ];
-
-  qtWrapperArgs = [
-    "--prefix PATH : ${lib.makeBinPath [
-        aria2
-        ffmpeg
-        python3
-        yt-dlp
-      ]}"
-  ];
-
-  meta = {
-    description = "Qt/C++ GUI front end for yt-dlp and others";
-    homepage = "https://github.com/mhogomchungu/media-downloader";
-    license = lib.licenses.gpl2Plus;
-    maintainers = with lib.maintainers; [ zendo ];
-    platforms = lib.platforms.linux;
-    mainProgram = "media-downloader";
-  };
-})
diff --git a/pkgs/applications/video/mlv-app/default.nix b/pkgs/applications/video/mlv-app/default.nix
index 72e53090d33c7..05c6799e4213b 100644
--- a/pkgs/applications/video/mlv-app/default.nix
+++ b/pkgs/applications/video/mlv-app/default.nix
@@ -54,9 +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; [
-      kiwi
-    ];
+    maintainers = with maintainers; [ ];
     platforms = platforms.linux;
     mainProgram = "mlvapp";
   };
diff --git a/pkgs/applications/video/mpv/scripts/dynamic-crop.nix b/pkgs/applications/video/mpv/scripts/dynamic-crop.nix
index 4388e2d137b48..541c83d5258ff 100644
--- a/pkgs/applications/video/mpv/scripts/dynamic-crop.nix
+++ b/pkgs/applications/video/mpv/scripts/dynamic-crop.nix
@@ -7,12 +7,12 @@
 buildLua {
   pname = "dynamic-crop";
 
-  version = "0-unstable-2023-12-22";
+  version = "0-unstable-2024-06-22";
   src = fetchFromGitHub {
     owner = "Ashyni";
     repo = "mpv-scripts";
-    rev = "c79a46ba03631eb2a9b4f598aab0b723f03fc531";
-    hash = "sha256-W4Dj2tyJHeHLqAndrzllKs4iwMe3Tu8rfzEGBHuke6s=";
+    rev = "1fadd5ea3e31818db33c9372c40161db6fc1bdd3";
+    hash = "sha256-nC0Iw+9PSGxc3OdYhEmFVa49Sw+rIbuFhgZvAphP4cM=";
   };
   passthru.scriptName = "dynamic-crop.lua";
 
diff --git a/pkgs/applications/video/mpv/scripts/mpv-notify-send.nix b/pkgs/applications/video/mpv/scripts/mpv-notify-send.nix
index 623e5db22664a..b103a45d275bf 100644
--- a/pkgs/applications/video/mpv/scripts/mpv-notify-send.nix
+++ b/pkgs/applications/video/mpv/scripts/mpv-notify-send.nix
@@ -21,7 +21,8 @@ buildLua rec {
   patches = [
     # show title of online videos instead of url
     (fetchpatch {
-      url = "https://github.com/emilazy/mpv-notify-send/pull/6.patch";
+      name = "6.patch"; # https://github.com/emilazy/mpv-notify-send/pull/6
+      url = "https://github.com/emilazy/mpv-notify-send/commit/948347e14890e15e89cd1e069beb1140e2d01dce.patch";
       hash = "sha256-7aXQ8qeqG4yX0Uyn09xCIESnwPZsb6Frd7C49XgbpFw=";
     })
   ];
diff --git a/pkgs/applications/video/mpv/scripts/mpvacious.nix b/pkgs/applications/video/mpv/scripts/mpvacious.nix
index 659dc498f0b11..34776679aa257 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.34";
+  version = "0.35";
 
   src = fetchFromGitHub {
     owner = "Ajatt-Tools";
     repo = "mpvacious";
     rev = "v${version}";
-    sha256 = "sha256-YsbeMWGpRi9wUdnrMA2YQXXWQUALxDOTs+gBJ56okkI=";
+    sha256 = "sha256-LcO17zkGkXWqSjWPTA3cVwRnmSrhTlS3W4RhhYaKgY4=";
   };
   passthru.updateScript = gitUpdater { rev-prefix = "v"; };
 
diff --git a/pkgs/applications/video/mpv/scripts/thumbnail.nix b/pkgs/applications/video/mpv/scripts/thumbnail.nix
index 51784f012f68b..fc37b1a50dea8 100644
--- a/pkgs/applications/video/mpv/scripts/thumbnail.nix
+++ b/pkgs/applications/video/mpv/scripts/thumbnail.nix
@@ -8,13 +8,13 @@
 
 buildLua rec {
   pname = "mpv-thumbnail-script";
-  version = "0.5.3";
+  version = "0.5.4";
 
   src = fetchFromGitHub {
     owner = "marzzzello";
     repo = "mpv_thumbnail_script";
     rev = version;
-    sha256 = "sha256-J24Rou7BTE7zoiPlBkWuO9dtYJiuzkuwB4FROuzXzag=";
+    sha256 = "sha256-nflavx25skLj9kitneL6Uz3zI2DyMMhQC595npofzbQ=";
   };
   passthru.updateScript = gitUpdater { };
 
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 79ab2a32e26f1..e464079da93c7 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.0";
+  version = "3.0.1";
 
   src = fetchFromGitHub {
     owner = "exeldro";
     repo = "obs-move-transition";
     rev = version;
-    sha256 = "sha256-wvPtcYW++PmDvCpgTIppvwg4Zibrg384yth9da11fMk=";
+    sha256 = "sha256-LZL9f/pX74rKW+wnNHGKwGuuISOTcFVr6W9h/JEK0U4=";
   };
 
   nativeBuildInputs = [ cmake ];
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 82767da10d998..7b6f98c2b63d7 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.2";
+  version = "1.4.3";
 
   src = fetchFromGitHub {
     owner = "Aitum";
     repo = "obs-vertical-canvas";
     rev = version;
-    sha256 = "sha256-3lFM7bOzsKex6JUdbcw8MNS4PRzaN/E/vngdukgfV0s=";
+    sha256 = "sha256-nzuPjVwtWGPSNLnWNT4D03j1xZp37HH77t1DnilSQ8E=";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/pkgs/applications/video/webtorrent_desktop/default.nix b/pkgs/applications/video/webtorrent_desktop/default.nix
index 75a8d9f5c639f..60ef7c57cdc8a 100644
--- a/pkgs/applications/video/webtorrent_desktop/default.nix
+++ b/pkgs/applications/video/webtorrent_desktop/default.nix
@@ -12,12 +12,14 @@ buildNpmPackage {
   patches = [
     # electron 27 fix
     (fetchpatch {
-      url = "https://github.com/webtorrent/webtorrent-desktop/pull/2388.patch";
+      name = "2388.patch"; # https://github.com/webtorrent/webtorrent-desktop/pull/2388
+      url = "https://github.com/webtorrent/webtorrent-desktop/compare/ebaf9cf8487dbd9e14a9a0c5adc3eab23b199e58...0c3e55d1f091bf66a342e2732550ebeccc2e4169.patch";
       hash = "sha256-gam5oAZtsaiCNFwecA5ff0nhraySLx3SOHlb/js+cPM=";
     })
     # startup fix
     (fetchpatch {
-      url = "https://github.com/webtorrent/webtorrent-desktop/pull/2389.patch";
+      name = "2389.patch"; # https://github.com/webtorrent/webtorrent-desktop/pull/2389
+      url = "https://github.com/webtorrent/webtorrent-desktop/commit/407046d150ed7ff876a5e1978f68630e9c8f0074.patch";
       hash = "sha256-hBJGLNNjcGRhYOFlLm/RL0po+70tEeJtR6Y/CfacPAI=";
     })
   ];