about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/video
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/applications/video')
-rw-r--r--nixpkgs/pkgs/applications/video/adl/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/aegisub/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/ani-cli/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/anilibria-winmaclinux/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/video/anime-downloader/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/asciicam/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/bilibili/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/video/bino3d/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/catt/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/ccextractor/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/clipgrab/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/coriander/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/crunchy-cli/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/davinci-resolve/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/deface/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/dra-cla/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/dvdbackup/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/dvdstyler/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/entangle/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/epgstation/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/f1viewer/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/ffmpeg-normalize/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/filebot/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/flowblade/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/freetube/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/giph/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/glaxnimate/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/gnomecast/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/go-chromecast/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/go2tv/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/gpu-screen-recorder/default.nix54
-rw-r--r--nixpkgs/pkgs/applications/video/gpu-screen-recorder/fix-nvfbc-check.patch38
-rw-r--r--nixpkgs/pkgs/applications/video/gpu-screen-recorder/gpu-screen-recorder-gtk.nix38
-rw-r--r--nixpkgs/pkgs/applications/video/haruna/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/hdhomerun-config-gui/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/hypnotix/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/imagination/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/jellyfin-mpv-shim/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/jftui/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/kaffeine/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/kazam/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/kodi/addons/arrow/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/video/kodi/addons/osmc-skin/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/video/kodi/addons/radioparadise/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/video/kodi/addons/steam-launcher/default.nix16
-rw-r--r--nixpkgs/pkgs/applications/video/kodi/addons/typing_extensions/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/video/kodi/addons/websocket/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/video/lbry/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/linuxstopmotion/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/losslesscut-bin/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/mapmap/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/media-downloader/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/memento/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/minitube/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/mjpg-streamer/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/mlv-app/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/molotov/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/motion/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/mov-cli/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/mpc-qt/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/mpv/default.nix5
-rw-r--r--nixpkgs/pkgs/applications/video/mpv/scripts/buildLua.nix49
-rw-r--r--nixpkgs/pkgs/applications/video/mpv/scripts/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/video/mpv/scripts/mpris.nix12
-rw-r--r--nixpkgs/pkgs/applications/video/mpv/scripts/mpvacious.nix17
-rw-r--r--nixpkgs/pkgs/applications/video/mpv/scripts/quality-menu.nix4
-rw-r--r--nixpkgs/pkgs/applications/video/mpv/scripts/simple-mpv-webui.nix16
-rw-r--r--nixpkgs/pkgs/applications/video/mpv/scripts/thumbfast.nix23
-rw-r--r--nixpkgs/pkgs/applications/video/mpv/scripts/thumbnail.nix4
-rw-r--r--nixpkgs/pkgs/applications/video/obs-studio/plugins/advanced-scene-switcher/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/video/obs-studio/plugins/obs-move-transition.nix4
-rw-r--r--nixpkgs/pkgs/applications/video/obs-studio/plugins/obs-transition-table.nix4
-rw-r--r--nixpkgs/pkgs/applications/video/obs-studio/plugins/obs-vertical-canvas.nix4
-rw-r--r--nixpkgs/pkgs/applications/video/olive-editor/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/open-in-mpv/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/openshot-qt/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/p2pvc/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/peek/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/pipe-viewer/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/pitivi/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/plex-mpv-shim/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/popcorntime/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/prism/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/qarte/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/qmediathekview/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/qstopmotion/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/quvi/library.nix23
-rw-r--r--nixpkgs/pkgs/applications/video/quvi/scripts.nix22
-rw-r--r--nixpkgs/pkgs/applications/video/quvi/tool.nix26
-rw-r--r--nixpkgs/pkgs/applications/video/recapp/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/screenkey/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/shotcut/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/srtrelay/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/streamlink/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/video/sub-batch/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/subdl/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/subtitleeditor/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/tartube/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/timelens/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/uvccapture/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/vcs/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/video-trimmer/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/vivictpp/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/vokoscreen-ng/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/vokoscreen/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/w_scan/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/w_scan2/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/webcamoid/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/webtorrent_desktop/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/wf-recorder/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/xscast/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/youtube-tui/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/video/yuview/default.nix1
113 files changed, 285 insertions, 239 deletions
diff --git a/nixpkgs/pkgs/applications/video/adl/default.nix b/nixpkgs/pkgs/applications/video/adl/default.nix
index 9dbec102a55e..6bf36cc375b8 100644
--- a/nixpkgs/pkgs/applications/video/adl/default.nix
+++ b/nixpkgs/pkgs/applications/video/adl/default.nix
@@ -39,5 +39,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
     maintainers = with maintainers; [ ];
+    mainProgram = "adl";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/aegisub/default.nix b/nixpkgs/pkgs/applications/video/aegisub/default.nix
index 9b427a2284d7..2c01d052eeda 100644
--- a/nixpkgs/pkgs/applications/video/aegisub/default.nix
+++ b/nixpkgs/pkgs/applications/video/aegisub/default.nix
@@ -158,5 +158,6 @@ stdenv.mkDerivation rec {
     license = licenses.bsd3;
     maintainers = with maintainers; [ AndersonTorres wegank ];
     platforms = platforms.unix;
+    mainProgram = "aegisub";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/ani-cli/default.nix b/nixpkgs/pkgs/applications/video/ani-cli/default.nix
index 21c04812f9f3..389d00dc1a41 100644
--- a/nixpkgs/pkgs/applications/video/ani-cli/default.nix
+++ b/nixpkgs/pkgs/applications/video/ani-cli/default.nix
@@ -58,5 +58,6 @@ stdenvNoCC.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ skykanin ];
     platforms = platforms.unix;
+    mainProgram = "ani-cli";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/anilibria-winmaclinux/default.nix b/nixpkgs/pkgs/applications/video/anilibria-winmaclinux/default.nix
index 4b5102f25c27..93c8e8ec5ce8 100644
--- a/nixpkgs/pkgs/applications/video/anilibria-winmaclinux/default.nix
+++ b/nixpkgs/pkgs/applications/video/anilibria-winmaclinux/default.nix
@@ -15,13 +15,13 @@
 
 mkDerivation rec {
   pname = "anilibria-winmaclinux";
-  version = "1.2.11";
+  version = "1.2.12";
 
   src = fetchFromGitHub {
     owner = "anilibria";
     repo = "anilibria-winmaclinux";
     rev = version;
-    sha256 = "sha256-N5caLFM6YJtarMaA7Ps5uWXmOtKM2KvHneDkN8ooJpw=";
+    sha256 = "sha256-J9MBnHrVnDaJ8Ykf/n8OkWKbK/JfMxorH9E+mKe3T8k=";
   };
 
   sourceRoot = "source/src";
diff --git a/nixpkgs/pkgs/applications/video/anime-downloader/default.nix b/nixpkgs/pkgs/applications/video/anime-downloader/default.nix
index 235c5c58f381..5e4f58cea1d3 100644
--- a/nixpkgs/pkgs/applications/video/anime-downloader/default.nix
+++ b/nixpkgs/pkgs/applications/video/anime-downloader/default.nix
@@ -50,5 +50,6 @@ python3.pkgs.buildPythonApplication rec {
     license = licenses.unlicense;
     platforms = platforms.linux;
     maintainers = with maintainers; [ ];
+    mainProgram = "anime";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/asciicam/default.nix b/nixpkgs/pkgs/applications/video/asciicam/default.nix
index fa9a232e0db9..6a600fec3083 100644
--- a/nixpkgs/pkgs/applications/video/asciicam/default.nix
+++ b/nixpkgs/pkgs/applications/video/asciicam/default.nix
@@ -23,5 +23,6 @@ buildGoModule {
     homepage = "https://github.com/muesli/asciicam";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "asciicam";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/bilibili/default.nix b/nixpkgs/pkgs/applications/video/bilibili/default.nix
index 9a507e93ab65..f7a9bd836745 100644
--- a/nixpkgs/pkgs/applications/video/bilibili/default.nix
+++ b/nixpkgs/pkgs/applications/video/bilibili/default.nix
@@ -41,8 +41,10 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     description = "Electron-based bilibili desktop client";
     homepage = "https://github.com/msojocs/bilibili-linux";
-    license = licenses.mit;
+    license = with licenses; [ unfree mit ];
     maintainers = with maintainers; [ jedsek kashw2 ];
-    platforms = platforms.unix;
+    platforms = [ "x86_64-linux" ];
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
+    mainProgram = "bilibili";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/bino3d/default.nix b/nixpkgs/pkgs/applications/video/bino3d/default.nix
index d15d649b841b..92096c6a3474 100644
--- a/nixpkgs/pkgs/applications/video/bino3d/default.nix
+++ b/nixpkgs/pkgs/applications/video/bino3d/default.nix
@@ -21,5 +21,6 @@ mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ orivej ];
     platforms = platforms.linux;
+    mainProgram = "bino";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/catt/default.nix b/nixpkgs/pkgs/applications/video/catt/default.nix
index 90081d4e5908..8b1c74ee66cc 100644
--- a/nixpkgs/pkgs/applications/video/catt/default.nix
+++ b/nixpkgs/pkgs/applications/video/catt/default.nix
@@ -46,5 +46,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/skorokithakis/catt";
     license = licenses.bsd2;
     maintainers = with maintainers; [ dtzWill ];
+    mainProgram = "catt";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/ccextractor/default.nix b/nixpkgs/pkgs/applications/video/ccextractor/default.nix
index 8b2f185a55bd..3814f921fa24 100644
--- a/nixpkgs/pkgs/applications/video/ccextractor/default.nix
+++ b/nixpkgs/pkgs/applications/video/ccextractor/default.nix
@@ -66,5 +66,6 @@ stdenv.mkDerivation rec {
     broken = stdenv.isAarch64;
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ titanous ];
+    mainProgram = "ccextractor";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/clipgrab/default.nix b/nixpkgs/pkgs/applications/video/clipgrab/default.nix
index 9a1940cffc75..1625c87e0c0b 100644
--- a/nixpkgs/pkgs/applications/video/clipgrab/default.nix
+++ b/nixpkgs/pkgs/applications/video/clipgrab/default.nix
@@ -61,5 +61,6 @@ mkDerivation rec {
     homepage = "https://clipgrab.org/";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
+    mainProgram = "clipgrab";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/coriander/default.nix b/nixpkgs/pkgs/applications/video/coriander/default.nix
index d4e35ac48418..80892b96c94b 100644
--- a/nixpkgs/pkgs/applications/video/coriander/default.nix
+++ b/nixpkgs/pkgs/applications/video/coriander/default.nix
@@ -40,5 +40,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl3Plus;
     maintainers = with lib.maintainers; [ viric ];
     platforms = with lib.platforms; linux;
+    mainProgram = "coriander";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/crunchy-cli/default.nix b/nixpkgs/pkgs/applications/video/crunchy-cli/default.nix
index 917fdd2f9a24..3efeeb8544d4 100644
--- a/nixpkgs/pkgs/applications/video/crunchy-cli/default.nix
+++ b/nixpkgs/pkgs/applications/video/crunchy-cli/default.nix
@@ -39,6 +39,7 @@ rustPlatform.buildRustPackage.override { stdenv = clangStdenv; } rec {
     homepage = "https://github.com/crunchy-labs/crunchy-cli";
     license = with licenses; [ gpl3 ];
     maintainers = with maintainers; [ stepbrobd ];
+    mainProgram = "crunchy-cli";
   };
 }
 
diff --git a/nixpkgs/pkgs/applications/video/davinci-resolve/default.nix b/nixpkgs/pkgs/applications/video/davinci-resolve/default.nix
index 99694efda1d3..8070a96a2b4b 100644
--- a/nixpkgs/pkgs/applications/video/davinci-resolve/default.nix
+++ b/nixpkgs/pkgs/applications/video/davinci-resolve/default.nix
@@ -230,5 +230,6 @@ buildFHSEnv {
     maintainers = with maintainers; [ jshcmpbll ];
     platforms = [ "x86_64-linux" ];
     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
+    mainProgram = "davinci-resolve";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/deface/default.nix b/nixpkgs/pkgs/applications/video/deface/default.nix
index 43c009c9dbb8..8b9e822070cf 100644
--- a/nixpkgs/pkgs/applications/video/deface/default.nix
+++ b/nixpkgs/pkgs/applications/video/deface/default.nix
@@ -52,5 +52,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/ORB-HD/deface";
     license = licenses.mit;
     maintainers = with maintainers; [ lurkki ];
+    mainProgram = "deface";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/dra-cla/default.nix b/nixpkgs/pkgs/applications/video/dra-cla/default.nix
index 3a097d3e130f..27b745a403d4 100644
--- a/nixpkgs/pkgs/applications/video/dra-cla/default.nix
+++ b/nixpkgs/pkgs/applications/video/dra-cla/default.nix
@@ -41,5 +41,6 @@ stdenvNoCC.mkDerivation {
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ idlip ];
     platforms = platforms.unix;
+    mainProgram = "dra-cla";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/dvdbackup/default.nix b/nixpkgs/pkgs/applications/video/dvdbackup/default.nix
index 3e998d0c4a17..523847db247f 100644
--- a/nixpkgs/pkgs/applications/video/dvdbackup/default.nix
+++ b/nixpkgs/pkgs/applications/video/dvdbackup/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl3Plus;
     maintainers = [ lib.maintainers.bradediger ];
     platforms = lib.platforms.linux;
+    mainProgram = "dvdbackup";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/dvdstyler/default.nix b/nixpkgs/pkgs/applications/video/dvdstyler/default.nix
index 8d7d5a6611d3..18018f88d025 100644
--- a/nixpkgs/pkgs/applications/video/dvdstyler/default.nix
+++ b/nixpkgs/pkgs/applications/video/dvdstyler/default.nix
@@ -128,5 +128,6 @@ in stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ AndersonTorres ];
     platforms = with platforms; linux;
+    mainProgram = "dvdstyler";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/entangle/default.nix b/nixpkgs/pkgs/applications/video/entangle/default.nix
index daf56c174456..cfab93dbcd71 100644
--- a/nixpkgs/pkgs/applications/video/entangle/default.nix
+++ b/nixpkgs/pkgs/applications/video/entangle/default.nix
@@ -133,5 +133,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     platforms = platforms.all;
     maintainers = with maintainers; [ ShamrockLee ];
+    mainProgram = "entangle";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/epgstation/default.nix b/nixpkgs/pkgs/applications/video/epgstation/default.nix
index 49d2dedbb0c3..c5d12c8403c1 100644
--- a/nixpkgs/pkgs/applications/video/epgstation/default.nix
+++ b/nixpkgs/pkgs/applications/video/epgstation/default.nix
@@ -119,5 +119,6 @@ buildNpmPackage rec {
     homepage = "https://github.com/l3tnun/EPGStation";
     license = licenses.mit;
     maintainers = with maintainers; [ midchildan ];
+    mainProgram = "epgstation";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/f1viewer/default.nix b/nixpkgs/pkgs/applications/video/f1viewer/default.nix
index 7541ec6598a0..5d89a8df657c 100644
--- a/nixpkgs/pkgs/applications/video/f1viewer/default.nix
+++ b/nixpkgs/pkgs/applications/video/f1viewer/default.nix
@@ -19,5 +19,6 @@ buildGoModule rec {
     homepage = "https://github.com/SoMuchForSubtlety/f1viewer";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ michzappa ];
+    mainProgram = "f1viewer";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/ffmpeg-normalize/default.nix b/nixpkgs/pkgs/applications/video/ffmpeg-normalize/default.nix
index 75a7a9b46bb7..a3b40daacf79 100644
--- a/nixpkgs/pkgs/applications/video/ffmpeg-normalize/default.nix
+++ b/nixpkgs/pkgs/applications/video/ffmpeg-normalize/default.nix
@@ -25,5 +25,6 @@ buildPythonApplication rec {
     homepage = "https://github.com/slhck/ffmpeg-normalize";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ prusnak ];
+    mainProgram = "ffmpeg-normalize";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/filebot/default.nix b/nixpkgs/pkgs/applications/video/filebot/default.nix
index 9fffd01019e8..e38b4dde3d29 100644
--- a/nixpkgs/pkgs/applications/video/filebot/default.nix
+++ b/nixpkgs/pkgs/applications/video/filebot/default.nix
@@ -67,5 +67,6 @@ in stdenv.mkDerivation (finalAttrs: {
     license = licenses.unfreeRedistributable;
     maintainers = with maintainers; [ gleber felschr ];
     platforms = platforms.linux;
+    mainProgram = "filebot";
   };
 })
diff --git a/nixpkgs/pkgs/applications/video/flowblade/default.nix b/nixpkgs/pkgs/applications/video/flowblade/default.nix
index 2643a449c60f..29d095fe67fd 100644
--- a/nixpkgs/pkgs/applications/video/flowblade/default.nix
+++ b/nixpkgs/pkgs/applications/video/flowblade/default.nix
@@ -42,5 +42,6 @@ stdenv.mkDerivation rec {
     license = with licenses; [ gpl3Plus ];
     platforms = platforms.linux;
     maintainers = with maintainers; [ polygon ];
+    mainProgram = "flowblade";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/freetube/default.nix b/nixpkgs/pkgs/applications/video/freetube/default.nix
index a3fd87e6142e..b5a8221b7fdf 100644
--- a/nixpkgs/pkgs/applications/video/freetube/default.nix
+++ b/nixpkgs/pkgs/applications/video/freetube/default.nix
@@ -48,5 +48,6 @@ stdenv.mkDerivation rec {
     license = licenses.agpl3Only;
     maintainers = with maintainers; [ ryneeverett alyaeanyx ];
     inherit (electron.meta) platforms;
+    mainProgram = "freetube";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/giph/default.nix b/nixpkgs/pkgs/applications/video/giph/default.nix
index 3255544ff8b3..9d0175911d69 100644
--- a/nixpkgs/pkgs/applications/video/giph/default.nix
+++ b/nixpkgs/pkgs/applications/video/giph/default.nix
@@ -39,5 +39,6 @@ stdenvNoCC.mkDerivation rec {
     license = licenses.mit;
     maintainers = [ maintainers.lom ];
     platforms = platforms.linux;
+    mainProgram = "giph";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/glaxnimate/default.nix b/nixpkgs/pkgs/applications/video/glaxnimate/default.nix
index 4ab5222c54ba..a50e3d15614a 100644
--- a/nixpkgs/pkgs/applications/video/glaxnimate/default.nix
+++ b/nixpkgs/pkgs/applications/video/glaxnimate/default.nix
@@ -82,5 +82,6 @@ stdenv.mkDerivation rec {
     description = "Simple vector animation program.";
     license = licenses.gpl3;
     maintainers = with maintainers; [ tobiasBora ];
+    mainProgram = "glaxnimate";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/gnomecast/default.nix b/nixpkgs/pkgs/applications/video/gnomecast/default.nix
index 6e41dcb7b8e3..9d0bfa9e966e 100644
--- a/nixpkgs/pkgs/applications/video/gnomecast/default.nix
+++ b/nixpkgs/pkgs/applications/video/gnomecast/default.nix
@@ -41,5 +41,6 @@ buildPythonApplication rec {
     homepage = "https://github.com/keredson/gnomecast";
     license = with licenses; [ gpl3 ];
     broken = stdenv.isDarwin;
+    mainProgram = "gnomecast";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/go-chromecast/default.nix b/nixpkgs/pkgs/applications/video/go-chromecast/default.nix
index 523eef1b8591..d554fd56847c 100644
--- a/nixpkgs/pkgs/applications/video/go-chromecast/default.nix
+++ b/nixpkgs/pkgs/applications/video/go-chromecast/default.nix
@@ -20,5 +20,6 @@ buildGoModule rec {
     description = "CLI for Google Chromecast, Home devices and Cast Groups";
     license = licenses.asl20;
     maintainers = with maintainers; [ marsam ];
+    mainProgram = "go-chromecast";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/go2tv/default.nix b/nixpkgs/pkgs/applications/video/go2tv/default.nix
index fb0db20990e4..d8fc548f10b3 100644
--- a/nixpkgs/pkgs/applications/video/go2tv/default.nix
+++ b/nixpkgs/pkgs/applications/video/go2tv/default.nix
@@ -53,5 +53,6 @@ buildGoModule rec {
     homepage = "https://github.com/alexballas/go2tv";
     license = licenses.mit;
     maintainers = with maintainers; [ gdamjan ];
+    mainProgram = "go2tv";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/gpu-screen-recorder/default.nix b/nixpkgs/pkgs/applications/video/gpu-screen-recorder/default.nix
index be02bb5c690e..052548f32f27 100644
--- a/nixpkgs/pkgs/applications/video/gpu-screen-recorder/default.nix
+++ b/nixpkgs/pkgs/applications/video/gpu-screen-recorder/default.nix
@@ -1,15 +1,28 @@
-{ stdenv, lib, fetchgit, makeWrapper, pkg-config, cudatoolkit, glew, libX11
-, libXcomposite, glfw, libpulseaudio, ffmpeg }:
-
-stdenv.mkDerivation rec {
+{ stdenv
+, lib
+, fetchurl
+, makeWrapper
+, pkg-config
+, libXcomposite
+, libpulseaudio
+, ffmpeg
+, wayland
+, libdrm
+, libva
+, libglvnd
+, libXrandr
+}:
+
+stdenv.mkDerivation {
   pname = "gpu-screen-recorder";
-  version = "1.0.0";
+  version = "unstable-2023-11-18";
 
-  src = fetchgit {
-    url = "https://repo.dec05eba.com/gpu-screen-recorder";
-    rev = "36fd4516db06bcb192e49055319d1778bbed0322";
-    sha256 = "sha256-hYEHM4FOYcPmQ5Yxh520PKy8HiD+G0xv9hrn8SmA07w=";
+  # 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.r418.5a8900e.tar.gz";
+    hash = "sha256-Dal6KxQOTqoNH6e8lYk5XEXGFG/vzbguNFZ9yk9nKe0=";
   };
+  sourceRoot = ".";
 
   nativeBuildInputs = [
     pkg-config
@@ -17,27 +30,26 @@ stdenv.mkDerivation rec {
   ];
 
   buildInputs = [
-    glew
-    libX11
     libXcomposite
-    glfw
     libpulseaudio
     ffmpeg
+    wayland
+    libdrm
+    libva
+    libXrandr
   ];
 
-  postPatch = ''
-    substituteInPlace ./build.sh \
-      --replace '/opt/cuda/targets/x86_64-linux/include' '${cudatoolkit}/targets/x86_64-linux/include' \
-      --replace '/usr/lib64/libcuda.so' '${cudatoolkit}/targets/x86_64-linux/lib/stubs/libcuda.so'
-  '';
-
   buildPhase = ''
     ./build.sh
   '';
 
-  installPhase = ''
-    install -Dt $out/bin/ gpu-screen-recorder
-    wrapProgram $out/bin/gpu-screen-recorder --prefix LD_LIBRARY_PATH : /run/opengl-driver/lib
+  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 : $out/bin
   '';
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/applications/video/gpu-screen-recorder/fix-nvfbc-check.patch b/nixpkgs/pkgs/applications/video/gpu-screen-recorder/fix-nvfbc-check.patch
deleted file mode 100644
index bd0d7111c80a..000000000000
--- a/nixpkgs/pkgs/applications/video/gpu-screen-recorder/fix-nvfbc-check.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-diff --git a/build.sh b/build.sh
-index 05603db..8c38b31 100755
---- a/build.sh
-+++ b/build.sh
-@@ -2,5 +2,5 @@
- 
- dependencies="gtk+-3.0 x11 xrandr libpulse"
- includes="$(pkg-config --cflags $dependencies)"
--libs="$(pkg-config --libs $dependencies)"
-+libs="$(pkg-config --libs $dependencies) -ldl"
- g++ -o gpu-screen-recorder-gtk -O2 src/main.cpp -s $includes $libs
-diff --git a/src/main.cpp b/src/main.cpp
-index ae2078f..9dcdce1 100644
---- a/src/main.cpp
-+++ b/src/main.cpp
-@@ -15,6 +15,7 @@
- #include <pwd.h>
- #include <libgen.h>
- #include <functional>
-+#include <dlfcn.h>
- 
- typedef struct {
-     Display *display;
-@@ -830,7 +831,13 @@ static void audio_input_change_callback(GtkComboBox *widget, gpointer userdata)
- }
- 
- static bool is_nv_fbc_installed() {
--    return access("/usr/lib/libnvidia-fbc.so.1", F_OK) == 0 || access("/usr/local/lib/libnvidia-fbc.so.1", F_OK) == 0;
-+    auto handle = dlopen("libnvidia-fbc.so.1", RTLD_LAZY);
-+    if (handle) {
-+        dlclose(handle);
-+        return true;
-+    } else {
-+        return false;
-+    }
- }
- 
- static GtkWidget* create_common_settings_page(GtkStack *stack, GtkApplication *app) {
diff --git a/nixpkgs/pkgs/applications/video/gpu-screen-recorder/gpu-screen-recorder-gtk.nix b/nixpkgs/pkgs/applications/video/gpu-screen-recorder/gpu-screen-recorder-gtk.nix
index 6bfb425f0af9..cc3a5033bd11 100644
--- a/nixpkgs/pkgs/applications/video/gpu-screen-recorder/gpu-screen-recorder-gtk.nix
+++ b/nixpkgs/pkgs/applications/video/gpu-screen-recorder/gpu-screen-recorder-gtk.nix
@@ -1,28 +1,36 @@
-{ stdenv, lib, fetchgit, pkg-config, makeWrapper, gtk3, libX11, libXrandr
-, libpulseaudio, gpu-screen-recorder }:
-
-stdenv.mkDerivation rec {
+{ stdenv
+, lib
+, fetchurl
+, pkg-config
+, makeWrapper
+, gtk3
+, libpulseaudio
+, libdrm
+, gpu-screen-recorder
+, libglvnd
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation {
   pname = "gpu-screen-recorder-gtk";
-  version = "0.1.0";
+  version = "3.2.5";
 
-  src = fetchgit {
-    url = "https://repo.dec05eba.com/gpu-screen-recorder-gtk";
-    rev = "4c317abd0531f8e155fbbbcd32850bbeebbf2ead";
-    sha256 = "sha256-5W6qmUMP31ndRDxMHuQ/XnZysPQgaie0vVlMTzfODU4=";
+  src = fetchurl {
+    url = "https://dec05eba.com/snapshot/gpu-screen-recorder-gtk.git.r175.cfd18af.tar.gz";
+    hash = "sha256-HhZe22Hm9yGoy5WoyuP2+Wj8E3nMs4uf96mzmP6CMqU=";
   };
-
-  patches = [ ./fix-nvfbc-check.patch ];
+  sourceRoot = ".";
 
   nativeBuildInputs = [
     pkg-config
     makeWrapper
+    wrapGAppsHook
   ];
 
   buildInputs = [
     gtk3
-    libX11
-    libXrandr
     libpulseaudio
+    libdrm
   ];
 
   buildPhase = ''
@@ -33,7 +41,9 @@ stdenv.mkDerivation rec {
     install -Dt $out/bin/ gpu-screen-recorder-gtk
     install -Dt $out/share/applications/ gpu-screen-recorder-gtk.desktop
 
-    wrapProgram $out/bin/gpu-screen-recorder-gtk --prefix PATH : ${lib.makeBinPath [ gpu-screen-recorder ]}
+    gappsWrapperArgs+=(--prefix PATH : ${lib.makeBinPath [ gpu-screen-recorder ]})
+    # 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)
   '';
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/applications/video/haruna/default.nix b/nixpkgs/pkgs/applications/video/haruna/default.nix
index b73933e36a71..8b112ed838a3 100644
--- a/nixpkgs/pkgs/applications/video/haruna/default.nix
+++ b/nixpkgs/pkgs/applications/video/haruna/default.nix
@@ -74,5 +74,6 @@ mkDerivation rec {
     description = "Open source video player built with Qt/QML and libmpv";
     license = with licenses; [ bsd3 cc-by-40 cc-by-sa-40 cc0 gpl2Plus gpl3Plus wtfpl ];
     maintainers = with maintainers; [ jojosch kashw2 ];
+    mainProgram = "haruna";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/hdhomerun-config-gui/default.nix b/nixpkgs/pkgs/applications/video/hdhomerun-config-gui/default.nix
index 12689bedcbd3..c5ed409117e3 100644
--- a/nixpkgs/pkgs/applications/video/hdhomerun-config-gui/default.nix
+++ b/nixpkgs/pkgs/applications/video/hdhomerun-config-gui/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Only;
     platforms = platforms.linux;
     maintainers = [ maintainers.louisdk1 ];
+    mainProgram = "hdhomerun_config_gui";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/hypnotix/default.nix b/nixpkgs/pkgs/applications/video/hypnotix/default.nix
index 74d2389fce7b..647f171c8731 100644
--- a/nixpkgs/pkgs/applications/video/hypnotix/default.nix
+++ b/nixpkgs/pkgs/applications/video/hypnotix/default.nix
@@ -85,5 +85,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl3Plus;
     maintainers = with lib.maintainers; [ dotlambda bobby285271 ];
     platforms = lib.platforms.linux;
+    mainProgram = "hypnotix";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/imagination/default.nix b/nixpkgs/pkgs/applications/video/imagination/default.nix
index 804265bcb545..8d1d6ac305f9 100644
--- a/nixpkgs/pkgs/applications/video/imagination/default.nix
+++ b/nixpkgs/pkgs/applications/video/imagination/default.nix
@@ -41,5 +41,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ austinbutler ];
     platforms = platforms.linux;
+    mainProgram = "imagination";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/jellyfin-mpv-shim/default.nix b/nixpkgs/pkgs/applications/video/jellyfin-mpv-shim/default.nix
index a5c6a7beb06b..dad9a5240249 100644
--- a/nixpkgs/pkgs/applications/video/jellyfin-mpv-shim/default.nix
+++ b/nixpkgs/pkgs/applications/video/jellyfin-mpv-shim/default.nix
@@ -120,5 +120,6 @@ buildPythonApplication rec {
       unlicense
     ];
     maintainers = with maintainers; [ jojosch ];
+    mainProgram = "jellyfin-mpv-shim";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/jftui/default.nix b/nixpkgs/pkgs/applications/video/jftui/default.nix
index 6f5fb3cf6fbb..efd8d6ed6e2a 100644
--- a/nixpkgs/pkgs/applications/video/jftui/default.nix
+++ b/nixpkgs/pkgs/applications/video/jftui/default.nix
@@ -37,5 +37,6 @@ stdenv.mkDerivation rec {
     license = licenses.unlicense;
     maintainers = [ maintainers.nyanloutre ];
     platforms = platforms.linux;
+    mainProgram = "jftui";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/kaffeine/default.nix b/nixpkgs/pkgs/applications/video/kaffeine/default.nix
index 02263f46e0f4..40701d2cbf85 100644
--- a/nixpkgs/pkgs/applications/video/kaffeine/default.nix
+++ b/nixpkgs/pkgs/applications/video/kaffeine/default.nix
@@ -48,5 +48,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = [ maintainers.pasqui23 ];
     platforms = platforms.all;
+    mainProgram = "kaffeine";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/kazam/default.nix b/nixpkgs/pkgs/applications/video/kazam/default.nix
index a2a9d8d112cd..8ca3b813663f 100644
--- a/nixpkgs/pkgs/applications/video/kazam/default.nix
+++ b/nixpkgs/pkgs/applications/video/kazam/default.nix
@@ -58,5 +58,6 @@ python3Packages.buildPythonApplication rec {
     license = licenses.lgpl3;
     platforms = platforms.linux;
     maintainers = [ maintainers.domenkozar ];
+    mainProgram = "kazam";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/kodi/addons/arrow/default.nix b/nixpkgs/pkgs/applications/video/kodi/addons/arrow/default.nix
index 931667d8a58a..363b41035e00 100644
--- a/nixpkgs/pkgs/applications/video/kodi/addons/arrow/default.nix
+++ b/nixpkgs/pkgs/applications/video/kodi/addons/arrow/default.nix
@@ -2,11 +2,11 @@
 buildKodiAddon rec {
   pname = "arrow";
   namespace = "script.module.arrow";
-  version = "1.0.3.1";
+  version = "1.2.3";
 
   src = fetchzip {
     url = "https://mirrors.kodi.tv/addons/nexus/script.module.arrow/script.module.arrow-${version}.zip";
-    sha256 = "sha256-dFCAHlWgslxsAVQAPP3aDM6Fw+I9PP0ITUVTKJY2QXU=";
+    sha256 = "sha256-Et+9FJT1dRE1dFOrAQ70HJJcfylyLsiyay9wPJcSOXs=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/video/kodi/addons/osmc-skin/default.nix b/nixpkgs/pkgs/applications/video/kodi/addons/osmc-skin/default.nix
index 7bbb62029bba..901d1d65716c 100644
--- a/nixpkgs/pkgs/applications/video/kodi/addons/osmc-skin/default.nix
+++ b/nixpkgs/pkgs/applications/video/kodi/addons/osmc-skin/default.nix
@@ -2,13 +2,13 @@
 buildKodiAddon rec {
   pname = "osmc-skin";
   namespace = "skin.osmc";
-  version = "18.0.0";
+  version = "20.1.0";
 
   src = fetchFromGitHub {
     owner = "osmc";
     repo = namespace;
-    rev = "40a6c318641e2cbeac58fb0e7dde9c2beac737a0";
-    sha256 = "1l7hyfj5zvjxjdm94y325bmy1naak455b9l8952sb0gllzrcwj6s";
+    rev = "v20.1.0-August-update";
+    sha256 = "E/+gC7NlVRMaymeYMBO39/+rs0blDjr2zIROr24ekzQ=";
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/applications/video/kodi/addons/radioparadise/default.nix b/nixpkgs/pkgs/applications/video/kodi/addons/radioparadise/default.nix
index 3100325ddd20..bb556e9ec822 100644
--- a/nixpkgs/pkgs/applications/video/kodi/addons/radioparadise/default.nix
+++ b/nixpkgs/pkgs/applications/video/kodi/addons/radioparadise/default.nix
@@ -3,11 +3,11 @@
 buildKodiAddon rec {
   pname = "radioparadise";
   namespace = "script.radioparadise";
-  version = "1.0.5";
+  version = "2.0.0";
 
   src = fetchzip {
     url = "https://mirrors.kodi.tv/addons/nexus/script.radioparadise/script.radioparadise-${version}.zip";
-    sha256 = "sha256-/X/8Q741piNHue5i/kgV+UYpBECyGzkFuN+PUzdeQnA=";
+    sha256 = "sha256-eRCP0XMQHmyDrZ8Y6RGFfxQ1r26/bWbE/PJz4PET7D8=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/video/kodi/addons/steam-launcher/default.nix b/nixpkgs/pkgs/applications/video/kodi/addons/steam-launcher/default.nix
index c4a695b8f813..ef6b866e7e33 100644
--- a/nixpkgs/pkgs/applications/video/kodi/addons/steam-launcher/default.nix
+++ b/nixpkgs/pkgs/applications/video/kodi/addons/steam-launcher/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildKodiAddon, fetchFromGitHub, steam }:
+{ lib, buildKodiAddon, fetchFromGitHub, steam, which, xdotool, dos2unix, wmctrl }:
 buildKodiAddon {
   pname = "steam-launcher";
   namespace = "script.steam.launcher";
@@ -7,11 +7,19 @@ buildKodiAddon {
   src = fetchFromGitHub rec {
     owner = "teeedubb";
     repo = owner + "-xbmc-repo";
-    rev = "8260bf9b464846a1f1965da495d2f2b7ceb81d55";
-    sha256 = "1fj3ry5s44nf1jzxk4bmnpa4b9p23nrpmpj2a4i6xf94h7jl7p5k";
+    rev = "d5cea4b590b0ff08ac169b757946b7cb5145b983";
+    sha256 = "sha256-arBMMOoHQuHRcJ7eXD1jvA45Svei7c0srcBZkdAzqY0=";
   };
 
-  propagatedBuildInputs = [ steam ];
+  propagatedBuildInputs = [ steam which xdotool ];
+
+  postInstall = ''
+    substituteInPlace $out/share/kodi/addons/script.steam.launcher/resources/main.py \
+      --replace "\"which\"" "\"${which}/bin/which\"" \
+      --replace "\"xdotool\"" "\"${xdotool}/bin/xdotool\"" \
+      --replace "\"wmctrl\"" "\"${wmctrl}/bin/wmctrl\""
+    ${dos2unix}/bin/dos2unix $out/share/kodi/addons/script.steam.launcher/resources/scripts/steam-launcher.sh
+  '';
 
   meta = with lib; {
     homepage = "https://forum.kodi.tv/showthread.php?tid=157499";
diff --git a/nixpkgs/pkgs/applications/video/kodi/addons/typing_extensions/default.nix b/nixpkgs/pkgs/applications/video/kodi/addons/typing_extensions/default.nix
index f1c203a2b958..fd52528b7ca0 100644
--- a/nixpkgs/pkgs/applications/video/kodi/addons/typing_extensions/default.nix
+++ b/nixpkgs/pkgs/applications/video/kodi/addons/typing_extensions/default.nix
@@ -2,11 +2,11 @@
 buildKodiAddon rec {
   pname = "typing_extensions";
   namespace = "script.module.typing_extensions";
-  version = "3.7.4.3";
+  version = "4.7.1";
 
   src = fetchzip {
     url = "https://mirrors.kodi.tv/addons/nexus/${namespace}/${namespace}-${version}.zip";
-    sha256 = "sha256-GE9OfOIWtEKQcAmQZAK1uOFN4DQDiWU0YxUWICGDSFw=";
+    sha256 = "sha256-bCGPl5fGVyptCenpNXP/Msi7hu+UdtZd2ms7MfzbsbM=";
   };
 
   passthru = {
diff --git a/nixpkgs/pkgs/applications/video/kodi/addons/websocket/default.nix b/nixpkgs/pkgs/applications/video/kodi/addons/websocket/default.nix
index 9a15ab0a4947..b05e6deede85 100644
--- a/nixpkgs/pkgs/applications/video/kodi/addons/websocket/default.nix
+++ b/nixpkgs/pkgs/applications/video/kodi/addons/websocket/default.nix
@@ -3,11 +3,11 @@
 buildKodiAddon rec {
   pname = "websocket";
   namespace = "script.module.websocket";
-  version = "0.58.0+matrix.2";
+  version = "1.6.2";
 
   src = fetchzip {
     url = "https://mirrors.kodi.tv/addons/nexus/${namespace}/${namespace}-${version}.zip";
-    sha256 = "sha256-xyOlKAAvtucC/tTm027ifEgiry/9gQneAcIwOGxmTkg=";
+    sha256 = "sha256-vJGijCjIgLJAdJvl+hCAPtvq7fy2ksgjY90vjVyqDkI=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/video/lbry/default.nix b/nixpkgs/pkgs/applications/video/lbry/default.nix
index afcec67d9134..cadd38523ca1 100644
--- a/nixpkgs/pkgs/applications/video/lbry/default.nix
+++ b/nixpkgs/pkgs/applications/video/lbry/default.nix
@@ -45,5 +45,6 @@ in appimageTools.wrapAppImage rec {
     changelog = "https://github.com/lbryio/lbry-desktop/blob/master/CHANGELOG.md";
     maintainers = with maintainers; [ enderger ];
     platforms = [ "x86_64-linux" ];
+    mainProgram = "lbry";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/linuxstopmotion/default.nix b/nixpkgs/pkgs/applications/video/linuxstopmotion/default.nix
index ad9a77af080a..bdf361cec9fc 100644
--- a/nixpkgs/pkgs/applications/video/linuxstopmotion/default.nix
+++ b/nixpkgs/pkgs/applications/video/linuxstopmotion/default.nix
@@ -23,5 +23,6 @@ mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
     maintainers = [ maintainers.bjornfor ];
+    mainProgram = "stopmotion";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/losslesscut-bin/default.nix b/nixpkgs/pkgs/applications/video/losslesscut-bin/default.nix
index 0e6b52f8f7ab..5fe8c8785a81 100644
--- a/nixpkgs/pkgs/applications/video/losslesscut-bin/default.nix
+++ b/nixpkgs/pkgs/applications/video/losslesscut-bin/default.nix
@@ -12,6 +12,7 @@ let
     homepage = "https://mifi.no/losslesscut/";
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ ShamrockLee ];
+    mainProgram = "losslesscut";
   };
   x86_64-appimage = callPackage ./build-from-appimage.nix {
     inherit pname version metaCommon;
diff --git a/nixpkgs/pkgs/applications/video/mapmap/default.nix b/nixpkgs/pkgs/applications/video/mapmap/default.nix
index 6bca33eb3885..39904f829159 100644
--- a/nixpkgs/pkgs/applications/video/mapmap/default.nix
+++ b/nixpkgs/pkgs/applications/video/mapmap/default.nix
@@ -73,6 +73,7 @@ mkDerivation rec {
     license = licenses.gpl3;
     maintainers = [ maintainers.erictapen ];
     platforms = platforms.linux;
+    mainProgram = "mapmap";
   };
 
 }
diff --git a/nixpkgs/pkgs/applications/video/media-downloader/default.nix b/nixpkgs/pkgs/applications/video/media-downloader/default.nix
index 61f59854debd..dd0d4924aaea 100644
--- a/nixpkgs/pkgs/applications/video/media-downloader/default.nix
+++ b/nixpkgs/pkgs/applications/video/media-downloader/default.nix
@@ -45,5 +45,6 @@ stdenv.mkDerivation (finalAttrs: {
     license = lib.licenses.gpl2Plus;
     maintainers = with lib.maintainers; [ zendo ];
     platforms = lib.platforms.linux;
+    mainProgram = "media-downloader";
   };
 })
diff --git a/nixpkgs/pkgs/applications/video/memento/default.nix b/nixpkgs/pkgs/applications/video/memento/default.nix
index 8fda60e3a0a0..f09b3a79794d 100644
--- a/nixpkgs/pkgs/applications/video/memento/default.nix
+++ b/nixpkgs/pkgs/applications/video/memento/default.nix
@@ -58,6 +58,7 @@ stdenv.mkDerivation (finalAttrs: {
     license = licenses.gpl2;
     maintainers = with maintainers; [ teto ];
     platforms = platforms.linux;
+    mainProgram = "memento";
   };
 })
 
diff --git a/nixpkgs/pkgs/applications/video/minitube/default.nix b/nixpkgs/pkgs/applications/video/minitube/default.nix
index 06bed9211318..3caa2b7fc56c 100644
--- a/nixpkgs/pkgs/applications/video/minitube/default.nix
+++ b/nixpkgs/pkgs/applications/video/minitube/default.nix
@@ -39,5 +39,6 @@ mkDerivation rec {
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
     maintainers = with maintainers; [ ];
+    mainProgram = "minitube";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/mjpg-streamer/default.nix b/nixpkgs/pkgs/applications/video/mjpg-streamer/default.nix
index a82839ef7548..f04025b37ddc 100644
--- a/nixpkgs/pkgs/applications/video/mjpg-streamer/default.nix
+++ b/nixpkgs/pkgs/applications/video/mjpg-streamer/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation {
     platforms = platforms.linux;
     license = licenses.gpl2;
     maintainers = with maintainers; [ gebner ];
+    mainProgram = "mjpg_streamer";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/mlv-app/default.nix b/nixpkgs/pkgs/applications/video/mlv-app/default.nix
index 757759b1146f..e3bd3cbf99a2 100644
--- a/nixpkgs/pkgs/applications/video/mlv-app/default.nix
+++ b/nixpkgs/pkgs/applications/video/mlv-app/default.nix
@@ -58,5 +58,6 @@ mkDerivation rec {
       kiwi
     ];
     platforms = platforms.linux;
+    mainProgram = "mlvapp";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/molotov/default.nix b/nixpkgs/pkgs/applications/video/molotov/default.nix
index 670eef3aa3ee..1930f06ffdb6 100644
--- a/nixpkgs/pkgs/applications/video/molotov/default.nix
+++ b/nixpkgs/pkgs/applications/video/molotov/default.nix
@@ -26,5 +26,6 @@ appimageTools.wrapType2 {
     license = with licenses; [ unfree ];
     maintainers = with maintainers; [ apeyroux freezeboy ];
     platforms = [ "x86_64-linux" ];
+    mainProgram = "molotov";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/motion/default.nix b/nixpkgs/pkgs/applications/video/motion/default.nix
index 372ace9ffa3a..95bc37819240 100644
--- a/nixpkgs/pkgs/applications/video/motion/default.nix
+++ b/nixpkgs/pkgs/applications/video/motion/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.unix;
     # never built on aarch64-darwin since first introduction in nixpkgs
     broken = stdenv.isDarwin && stdenv.isAarch64;
+    mainProgram = "motion";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/mov-cli/default.nix b/nixpkgs/pkgs/applications/video/mov-cli/default.nix
index 23954a05c5aa..829c4b83778d 100644
--- a/nixpkgs/pkgs/applications/video/mov-cli/default.nix
+++ b/nixpkgs/pkgs/applications/video/mov-cli/default.nix
@@ -35,5 +35,6 @@ python3.pkgs.buildPythonPackage rec {
     description = "A cli tool to browse and watch movies";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ baitinq ];
+    mainProgram = "mov-cli";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/mpc-qt/default.nix b/nixpkgs/pkgs/applications/video/mpc-qt/default.nix
index 372bc52044e7..73fab758d75e 100644
--- a/nixpkgs/pkgs/applications/video/mpc-qt/default.nix
+++ b/nixpkgs/pkgs/applications/video/mpc-qt/default.nix
@@ -24,5 +24,6 @@ mkDerivation rec {
     platforms = platforms.unix;
     broken = stdenv.isDarwin;
     maintainers = with maintainers; [ romildo ];
+    mainProgram = "mpc-qt";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/mpv/default.nix b/nixpkgs/pkgs/applications/video/mpv/default.nix
index 33fb4fc78217..252f1637172f 100644
--- a/nixpkgs/pkgs/applications/video/mpv/default.nix
+++ b/nixpkgs/pkgs/applications/video/mpv/default.nix
@@ -4,6 +4,7 @@
 , fetchFromGitHub
 , fetchpatch
 , addOpenGLRunpath
+, bash
 , docutils
 , meson
 , ninja
@@ -153,19 +154,20 @@ in stdenv'.mkDerivation (finalAttrs: {
     meson
     ninja
     pkg-config
-    python3
   ]
   ++ lib.optionals stdenv.isDarwin [ xcbuild.xcrun sigtool ]
   ++ lib.optionals swiftSupport [ swift ]
   ++ lib.optionals waylandSupport [ wayland-scanner ];
 
   buildInputs = [
+    bash
     ffmpeg
     freetype
     libass
     libpthreadstubs
     libuchardet
     luaEnv
+    python3
   ] ++ lib.optionals alsaSupport        [ alsa-lib ]
     ++ lib.optionals archiveSupport     [ libarchive ]
     ++ lib.optionals bluraySupport      [ libbluray ]
@@ -231,6 +233,7 @@ in stdenv'.mkDerivation (finalAttrs: {
   # See the explanation in addOpenGLRunpath.
   postFixup = lib.optionalString stdenv.isLinux ''
     addOpenGLRunpath $out/bin/mpv
+    patchShebangs --update --host $out/bin/umpv $out/bin/mpv_identify.sh
   '';
 
   passthru = {
diff --git a/nixpkgs/pkgs/applications/video/mpv/scripts/buildLua.nix b/nixpkgs/pkgs/applications/video/mpv/scripts/buildLua.nix
index b86642305fc6..046b0fa2ea96 100644
--- a/nixpkgs/pkgs/applications/video/mpv/scripts/buildLua.nix
+++ b/nixpkgs/pkgs/applications/video/mpv/scripts/buildLua.nix
@@ -1,10 +1,34 @@
 { lib
 , stdenvNoCC }:
 
-let fileName = pathStr: lib.last (lib.splitString "/" pathStr);
+let
+  inherit (lib) hasPrefix hasSuffix removeSuffix;
+  escapedList = with lib; concatMapStringsSep " " (s: "'${escape [ "'" ] s}'");
+  fileName = pathStr: lib.last (lib.splitString "/" pathStr);
+  nameFromPath = pathStr:
+    let fN = fileName pathStr; in
+    if hasSuffix ".lua" fN then
+      fN
+    else if !(hasPrefix "." fN) then
+      "${fN}.lua"
+    else
+      null
+  ;
+  scriptsDir = "$out/share/mpv/scripts";
 in
 lib.makeOverridable (
-  { pname, scriptPath ? "${pname}.lua", ... }@args:
+  { pname
+  , extraScripts ? []
+  , ... }@args:
+  let
+    # either passthru.scriptName, inferred from scriptPath, or from pname
+    scriptName = (args.passthru or {}).scriptName or (
+      if args ? scriptPath && nameFromPath args.scriptPath != null
+      then nameFromPath args.scriptPath
+      else "${pname}.lua"
+    );
+    scriptPath = args.scriptPath or "./${scriptName}";
+  in
   stdenvNoCC.mkDerivation (lib.attrsets.recursiveUpdate {
     dontBuild = true;
     preferLocalBuild = true;
@@ -12,11 +36,28 @@ lib.makeOverridable (
     outputHashMode = "recursive";
     installPhase = ''
       runHook preInstall
-      install -m644 -Dt $out/share/mpv/scripts ${scriptPath}
+
+      if [ -d "${scriptPath}" ]; then
+        [ -f "${scriptPath}/main.lua" ] || {
+          echo "Script directory '${scriptPath}' does not contain 'main.lua'" >&2
+          exit 1
+        }
+        [ ${with builtins; toString (length extraScripts)} -eq 0 ] || {
+          echo "mpvScripts.buildLua does not support 'extraScripts'" \
+               "when 'scriptPath' is a directory"
+          exit 1
+        }
+        mkdir -p "${scriptsDir}"
+        cp -a "${scriptPath}" "${scriptsDir}/${lib.removeSuffix ".lua" scriptName}"
+      else
+        install -m644 -Dt "${scriptsDir}" \
+          ${escapedList ([ scriptPath ] ++ extraScripts)}
+      fi
+
       runHook postInstall
     '';
 
-    passthru.scriptName = fileName scriptPath;
+    passthru = { inherit scriptName; };
     meta.platforms = lib.platforms.all;
   } args)
 )
diff --git a/nixpkgs/pkgs/applications/video/mpv/scripts/default.nix b/nixpkgs/pkgs/applications/video/mpv/scripts/default.nix
index cdc641043f37..9d16deb1c529 100644
--- a/nixpkgs/pkgs/applications/video/mpv/scripts/default.nix
+++ b/nixpkgs/pkgs/applications/video/mpv/scripts/default.nix
@@ -16,11 +16,11 @@ in lib.recurseIntoAttrs
     mpris = callPackage ./mpris.nix { };
     mpv-playlistmanager = callPackage ./mpv-playlistmanager.nix { inherit buildLua; };
     mpv-webm = callPackage ./mpv-webm.nix { };
-    mpvacious = callPackage ./mpvacious.nix { };
+    mpvacious = callPackage ./mpvacious.nix { inherit buildLua; };
     quality-menu = callPackage ./quality-menu.nix { inherit buildLua; };
-    simple-mpv-webui = callPackage ./simple-mpv-webui.nix { };
+    simple-mpv-webui = callPackage ./simple-mpv-webui.nix { inherit buildLua; };
     sponsorblock = callPackage ./sponsorblock.nix { };
-    thumbfast = callPackage ./thumbfast.nix { };
+    thumbfast = callPackage ./thumbfast.nix { inherit buildLua; };
     thumbnail = callPackage ./thumbnail.nix { inherit buildLua; };
     uosc = callPackage ./uosc.nix { };
     visualizer = callPackage ./visualizer.nix { };
diff --git a/nixpkgs/pkgs/applications/video/mpv/scripts/mpris.nix b/nixpkgs/pkgs/applications/video/mpv/scripts/mpris.nix
index 4d7bb155f5cc..cc230c2f1f43 100644
--- a/nixpkgs/pkgs/applications/video/mpv/scripts/mpris.nix
+++ b/nixpkgs/pkgs/applications/video/mpv/scripts/mpris.nix
@@ -1,25 +1,25 @@
-{ lib, stdenv, fetchFromGitHub, pkg-config, glib, mpv-unwrapped }:
+{ lib, stdenv, fetchFromGitHub, pkg-config, glib, mpv-unwrapped, ffmpeg }:
 
 stdenv.mkDerivation rec {
   pname = "mpv-mpris";
-  version = "1.0";
+  version = "1.1";
 
   src = fetchFromGitHub {
     owner = "hoyon";
     repo = "mpv-mpris";
     rev = version;
-    sha256 = "sha256-7kPpCfiWe58V4fBOsEVvGoGeNIlMUAyD1fqS5/8k/e4=";
+    hash = "sha256-vZIO6ILatIWa9nJYOp4AMKwvaZLahqYWRLMDOizyBI0=";
   };
 
   nativeBuildInputs = [ pkg-config ];
 
-  buildInputs = [ glib mpv-unwrapped ];
+  buildInputs = [ glib mpv-unwrapped ffmpeg ];
 
   postPatch = ''
     substituteInPlace Makefile --replace 'PKG_CONFIG =' 'PKG_CONFIG ?='
   '';
 
-  installFlags = [ "SCRIPTS_DIR=$(out)/share/mpv/scripts" ];
+  installFlags = [ "SCRIPTS_DIR=${placeholder "out"}/share/mpv/scripts" ];
 
   # Otherwise, the shared object isn't `strip`ped. See:
   # https://discourse.nixos.org/t/debug-why-a-derivation-has-a-reference-to-gcc/7009
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/hoyon/mpv-mpris";
     license = licenses.mit;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ jfrankenau ];
+    maintainers = with maintainers; [ ajs124 ];
     changelog = "https://github.com/hoyon/mpv-mpris/releases/tag/${version}";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/mpv/scripts/mpvacious.nix b/nixpkgs/pkgs/applications/video/mpv/scripts/mpvacious.nix
index d2f2434fda11..93e1402289cd 100644
--- a/nixpkgs/pkgs/applications/video/mpv/scripts/mpvacious.nix
+++ b/nixpkgs/pkgs/applications/video/mpv/scripts/mpvacious.nix
@@ -1,20 +1,20 @@
 { lib
-, stdenvNoCC
+, buildLua
 , fetchFromGitHub
 , curl
 , wl-clipboard
 , xclip
 }:
 
-stdenvNoCC.mkDerivation rec {
+buildLua rec {
   pname = "mpvacious";
-  version = "0.24";
+  version = "0.25";
 
   src = fetchFromGitHub {
     owner = "Ajatt-Tools";
     repo = "mpvacious";
     rev = "v${version}";
-    sha256 = "sha256-o0YcoSI+4934HlyIoI5V1h/FalCe+6tXS8Lg6kXWjSg=";
+    sha256 = "sha256-XTnib4cguWFEvZtmsLfkesbjFbkt2YoyYLT587ajyUM=";
   };
 
   postPatch = ''
@@ -26,23 +26,16 @@ stdenvNoCC.mkDerivation rec {
       --replace "'xclip" "'${xclip}/bin/xclip"
   '';
 
-  dontBuild = true;
-
   installPhase = ''
     runHook preInstall
-    rm -r .github
-    mkdir -p $out/share/mpv/scripts
-    cp -r . $out/share/mpv/scripts/mpvacious
+    make PREFIX=$out/share/mpv install
     runHook postInstall
   '';
 
-  passthru.scriptName = "mpvacious";
-
   meta = with lib; {
     description = "Adds mpv keybindings to create Anki cards from movies and TV shows";
     homepage = "https://github.com/Ajatt-Tools/mpvacious";
     license = licenses.gpl3Plus;
-    platforms = platforms.all;
     maintainers = with maintainers; [ kmicklas ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/mpv/scripts/quality-menu.nix b/nixpkgs/pkgs/applications/video/mpv/scripts/quality-menu.nix
index d0eb2ca0119b..e4d82d17ca39 100644
--- a/nixpkgs/pkgs/applications/video/mpv/scripts/quality-menu.nix
+++ b/nixpkgs/pkgs/applications/video/mpv/scripts/quality-menu.nix
@@ -15,8 +15,8 @@ buildLua rec {
     hash = "sha256-yrcTxqpLnOI1Tq3khhflO3wzhyeTPuvKifyH5/P57Ns=";
   };
 
-  passthru.scriptName = "quality-menu.lua";
-  scriptPath = if oscSupport then "*.lua" else passthru.scriptName;
+  scriptPath = "quality-menu.lua";
+  extraScripts = lib.optional oscSupport "quality-menu-osc.lua";
 
   meta = with lib; {
     description = "A userscript for MPV that allows you to change youtube video quality (ytdl-format) on the fly";
diff --git a/nixpkgs/pkgs/applications/video/mpv/scripts/simple-mpv-webui.nix b/nixpkgs/pkgs/applications/video/mpv/scripts/simple-mpv-webui.nix
index 01f2c3a099fa..c3b53c618396 100644
--- a/nixpkgs/pkgs/applications/video/mpv/scripts/simple-mpv-webui.nix
+++ b/nixpkgs/pkgs/applications/video/mpv/scripts/simple-mpv-webui.nix
@@ -1,21 +1,18 @@
-{ lib, stdenvNoCC
+{ lib, buildLua
 , fetchFromGitHub }:
-stdenvNoCC.mkDerivation rec {
+buildLua rec {
   pname = "simple-mpv-ui";
-  version = "2.1.0";
+  version = "3.0.0";
 
   src = fetchFromGitHub {
     owner = "open-dynaMIX";
     repo = "simple-mpv-webui";
     rev = "v${version}";
-    sha256 = "1z0y8sdv5mbxznxqh43w5592ym688vkvqg7w26p8cinrhf09pbw8";
+    hash = "sha256-I8lwpo3Hfpy3UnPMmHEJCdArVQnNL245NkxsYVmnMF0=";
+    sparseCheckout = [ "main.lua" "webui-page" ];
   };
 
-  dontBuild = true;
-  installPhase = ''
-    mkdir -p $out/share/mpv/scripts
-    cp -r webui.lua webui-page $out/share/mpv/scripts/
-  '';
+  scriptPath = ".";
   passthru.scriptName = "webui.lua";
 
   meta = with lib; {
@@ -30,4 +27,3 @@ stdenvNoCC.mkDerivation rec {
     license = licenses.mit;
   };
 }
-
diff --git a/nixpkgs/pkgs/applications/video/mpv/scripts/thumbfast.nix b/nixpkgs/pkgs/applications/video/mpv/scripts/thumbfast.nix
index 88209f049f6b..0226074ca31b 100644
--- a/nixpkgs/pkgs/applications/video/mpv/scripts/thumbfast.nix
+++ b/nixpkgs/pkgs/applications/video/mpv/scripts/thumbfast.nix
@@ -1,14 +1,14 @@
-{ lib, stdenvNoCC, fetchFromGitHub, mpv-unwrapped }:
+{ lib, fetchFromGitHub, buildLua, mpv-unwrapped }:
 
-stdenvNoCC.mkDerivation {
-  name = "mpv-thumbfast";
+buildLua {
+  pname = "mpv-thumbfast";
   version = "unstable-2023-06-04";
 
   src = fetchFromGitHub {
     owner = "po5";
     repo = "thumbfast";
-    rev = "6f1d92da25a7b807427f55f085e7ad4d60c4e0d7";
-    hash = "sha256-7CCxMPmZZRDIcWn+YbV4xzZFL80qZS5UFA25E+Y2P2Q=";
+    rev = "4241c7daa444d3859b51b65a39d30e922adb87e9";
+    hash = "sha256-7EnFJVjEzqhWXAvhzURoOp/kad6WzwyidWxug6u8lVw=";
   };
 
   postPatch = ''
@@ -16,18 +16,7 @@ stdenvNoCC.mkDerivation {
       --replace 'mpv_path = "mpv"' 'mpv_path = "${lib.getExe mpv-unwrapped}"'
   '';
 
-  dontBuild = true;
-
-  installPhase = ''
-    runHook preInstall
-
-    mkdir -p $out/share/mpv/scripts
-    cp -r thumbfast.lua $out/share/mpv/scripts/thumbfast.lua
-
-    runHook postInstall
-  '';
-
-  passthru.scriptName = "thumbfast.lua";
+  scriptPath = "thumbfast.lua";
 
   meta = {
     description = "High-performance on-the-fly thumbnailer for mpv";
diff --git a/nixpkgs/pkgs/applications/video/mpv/scripts/thumbnail.nix b/nixpkgs/pkgs/applications/video/mpv/scripts/thumbnail.nix
index 29509bd033f3..4ed545363839 100644
--- a/nixpkgs/pkgs/applications/video/mpv/scripts/thumbnail.nix
+++ b/nixpkgs/pkgs/applications/video/mpv/scripts/thumbnail.nix
@@ -15,7 +15,9 @@ buildLua rec {
   postPatch = "patchShebangs concat_files.py";
   dontBuild = false;
 
-  scriptPath = "mpv_thumbnail_script_{client_osc,server}.lua";
+  scriptPath = "mpv_thumbnail_script_client_osc.lua";
+  extraScripts = [ "mpv_thumbnail_script_server.lua" ];
+  passthru.scriptName = "mpv_thumbnail_script_{client_osc,server}.lua";
 
   meta = with lib; {
     description = "A lua script to show preview thumbnails in mpv's OSC seekbar";
diff --git a/nixpkgs/pkgs/applications/video/obs-studio/plugins/advanced-scene-switcher/default.nix b/nixpkgs/pkgs/applications/video/obs-studio/plugins/advanced-scene-switcher/default.nix
index 2790cf19f58e..aee37b4b06d1 100644
--- a/nixpkgs/pkgs/applications/video/obs-studio/plugins/advanced-scene-switcher/default.nix
+++ b/nixpkgs/pkgs/applications/video/obs-studio/plugins/advanced-scene-switcher/default.nix
@@ -1,41 +1,53 @@
-{ alsa-lib
-, asio
+{ lib
+, fetchFromGitHub
+
 , cmake
+, ninja
+
+, alsa-lib
+, asio
 , curl
-, fetchFromGitHub
-, lib
-, libremidi
+, nlohmann_json
 , obs-studio
 , opencv
 , procps
 , qtbase
 , stdenv
+, tesseract
 , websocketpp
 , xorg
+
+, httplib
+, libremidi
 }:
 
 stdenv.mkDerivation rec {
   pname = "advanced-scene-switcher";
-  version = "1.23.1";
+  version = "1.24.0";
 
   src = fetchFromGitHub {
     owner = "WarmUpTill";
     repo = "SceneSwitcher";
     rev = version;
-    hash = "sha256-rpZ/vR9QbWgr8n6LDv6iTRsKXSIDGy0IpPu1Uatb0zw=";
+    hash = "sha256-Xnf8Vz6I5EfiiVoG0JRd0f0IJHw1IVkTLL4Th/hWYrc=";
   };
 
-  nativeBuildInputs = [ cmake ];
+  nativeBuildInputs = [
+    cmake
+    ninja
+  ];
 
   buildInputs = [
     alsa-lib
     asio
     curl
     libremidi
+    nlohmann_json
     obs-studio
     opencv
     procps
     qtbase
+    tesseract
     websocketpp
     xorg.libXScrnSaver
   ];
@@ -43,7 +55,9 @@ stdenv.mkDerivation rec {
   dontWrapQtApps = true;
 
   postUnpack = ''
+    cp -r ${httplib.src}/* $sourceRoot/deps/cpp-httplib
     cp -r ${libremidi.src}/* $sourceRoot/deps/libremidi
+    chmod -R +w $sourceRoot/deps/cpp-httplib
     chmod -R +w $sourceRoot/deps/libremidi
   '';
 
@@ -53,11 +67,11 @@ stdenv.mkDerivation rec {
     mv $out/data $out/share/obs
   '';
 
-  meta = {
+  meta = with lib; {
     description = "An automated scene switcher for OBS Studio";
     homepage = "https://github.com/WarmUpTill/SceneSwitcher";
-    maintainers = with lib.maintainers; [ paveloom ];
-    license = lib.licenses.gpl2Plus;
-    platforms = lib.platforms.linux;
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ paveloom ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/obs-studio/plugins/obs-move-transition.nix b/nixpkgs/pkgs/applications/video/obs-studio/plugins/obs-move-transition.nix
index f6eb8b34f40a..b8e294be14a0 100644
--- a/nixpkgs/pkgs/applications/video/obs-studio/plugins/obs-move-transition.nix
+++ b/nixpkgs/pkgs/applications/video/obs-studio/plugins/obs-move-transition.nix
@@ -7,13 +7,13 @@
 
 stdenv.mkDerivation rec {
   pname = "obs-move-transition";
-  version = "2.9.5";
+  version = "2.9.6";
 
   src = fetchFromGitHub {
     owner = "exeldro";
     repo = "obs-move-transition";
     rev = version;
-    sha256 = "sha256-7qgFUZmKldIfnUXthzWd07CtOmaJROnqCGnzjlZlN3E=";
+    sha256 = "sha256-A3R78JvjOdYE9/ZZ+KbZ5Ula9HC5E/u7BrqE2i6VwYs=";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/nixpkgs/pkgs/applications/video/obs-studio/plugins/obs-transition-table.nix b/nixpkgs/pkgs/applications/video/obs-studio/plugins/obs-transition-table.nix
index f72e1756c41d..61165bbf6cbb 100644
--- a/nixpkgs/pkgs/applications/video/obs-studio/plugins/obs-transition-table.nix
+++ b/nixpkgs/pkgs/applications/video/obs-studio/plugins/obs-transition-table.nix
@@ -8,13 +8,13 @@
 
 stdenv.mkDerivation rec {
   pname = "obs-transition-table";
-  version = "0.2.6";
+  version = "0.2.7";
 
   src = fetchFromGitHub {
     owner = "exeldro";
     repo = "obs-transition-table";
     rev = version;
-    sha256 = "sha256-Is2XWMPhqd/rd6cXc40eSZTvSRpbroTBzM4SPfHOWPg=";
+    sha256 = "sha256-rGF7hugC5ybpZBAIIXDiy3YDooMawf/yYX2YucQm2/U=";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/nixpkgs/pkgs/applications/video/obs-studio/plugins/obs-vertical-canvas.nix b/nixpkgs/pkgs/applications/video/obs-studio/plugins/obs-vertical-canvas.nix
index ffea337c329c..6d11ed2ffd55 100644
--- a/nixpkgs/pkgs/applications/video/obs-studio/plugins/obs-vertical-canvas.nix
+++ b/nixpkgs/pkgs/applications/video/obs-studio/plugins/obs-vertical-canvas.nix
@@ -9,13 +9,13 @@
 
 stdenv.mkDerivation rec {
   pname = "obs-vertical-canvas";
-  version = "1.2.5";
+  version = "1.3.0";
 
   src = fetchFromGitHub {
     owner = "Aitum";
     repo = "obs-vertical-canvas";
     rev = version;
-    sha256 = "sha256-6I73YukhqOLsqVimTfVKYG6LzIYoJRnMaxkPhEAinfQ=";
+    sha256 = "sha256-gDM2S/ygN58iodfO5d34LYUclkzf+nAIBWp+wFeWWik=";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/nixpkgs/pkgs/applications/video/olive-editor/default.nix b/nixpkgs/pkgs/applications/video/olive-editor/default.nix
index 5daac65313e8..f23ed20c797b 100644
--- a/nixpkgs/pkgs/applications/video/olive-editor/default.nix
+++ b/nixpkgs/pkgs/applications/video/olive-editor/default.nix
@@ -79,5 +79,6 @@ stdenv.mkDerivation {
     platforms = platforms.unix;
     # never built on aarch64-darwin since first introduction in nixpkgs
     broken = stdenv.isDarwin && stdenv.isAarch64;
+    mainProgram = "olive-editor";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/open-in-mpv/default.nix b/nixpkgs/pkgs/applications/video/open-in-mpv/default.nix
index f3ac6414a709..02c9d80a43ea 100644
--- a/nixpkgs/pkgs/applications/video/open-in-mpv/default.nix
+++ b/nixpkgs/pkgs/applications/video/open-in-mpv/default.nix
@@ -34,5 +34,6 @@ buildGoModule rec {
     homepage = "https://github.com/Baldomo/open-in-mpv";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ SuperSandro2000 ];
+    mainProgram = "open-in-mpv";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/openshot-qt/default.nix b/nixpkgs/pkgs/applications/video/openshot-qt/default.nix
index ec980f1bfd1b..f209c092bdc1 100644
--- a/nixpkgs/pkgs/applications/video/openshot-qt/default.nix
+++ b/nixpkgs/pkgs/applications/video/openshot-qt/default.nix
@@ -80,5 +80,6 @@ mkDerivationWith python3.pkgs.buildPythonApplication rec {
     license = with licenses; gpl3Plus;
     maintainers = with maintainers; [ AndersonTorres ];
     platforms = with platforms; unix;
+    mainProgram = "openshot-qt";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/p2pvc/default.nix b/nixpkgs/pkgs/applications/video/p2pvc/default.nix
index f64af16709f6..ec2f0c95f899 100644
--- a/nixpkgs/pkgs/applications/video/p2pvc/default.nix
+++ b/nixpkgs/pkgs/applications/video/p2pvc/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation {
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ trino ];
     platforms = with lib.platforms; linux;
+    mainProgram = "p2pvc";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/peek/default.nix b/nixpkgs/pkgs/applications/video/peek/default.nix
index b8dff4f1af77..105a86fbf4a7 100644
--- a/nixpkgs/pkgs/applications/video/peek/default.nix
+++ b/nixpkgs/pkgs/applications/video/peek/default.nix
@@ -89,5 +89,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ puffnfresh ];
     platforms = platforms.linux;
+    mainProgram = "peek";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/pipe-viewer/default.nix b/nixpkgs/pkgs/applications/video/pipe-viewer/default.nix
index 18e38122f27c..5fc574881cfb 100644
--- a/nixpkgs/pkgs/applications/video/pipe-viewer/default.nix
+++ b/nixpkgs/pkgs/applications/video/pipe-viewer/default.nix
@@ -83,5 +83,6 @@ buildPerlModule rec {
     license = licenses.artistic2;
     maintainers = with maintainers; [ julm ];
     platforms = platforms.all;
+    mainProgram = "pipe-viewer";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/pitivi/default.nix b/nixpkgs/pkgs/applications/video/pitivi/default.nix
index d37fc66cb036..1b8c40e233a5 100644
--- a/nixpkgs/pkgs/applications/video/pitivi/default.nix
+++ b/nixpkgs/pkgs/applications/video/pitivi/default.nix
@@ -104,5 +104,6 @@ python3.pkgs.buildPythonApplication rec {
     license = licenses.lgpl21Plus;
     maintainers = with maintainers; [ akechishiro ];
     platforms = platforms.linux;
+    mainProgram = "pitivi";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/plex-mpv-shim/default.nix b/nixpkgs/pkgs/applications/video/plex-mpv-shim/default.nix
index 90f18613ca07..2e71c4668356 100644
--- a/nixpkgs/pkgs/applications/video/plex-mpv-shim/default.nix
+++ b/nixpkgs/pkgs/applications/video/plex-mpv-shim/default.nix
@@ -47,5 +47,6 @@ buildPythonApplication rec {
     maintainers = with maintainers; [ devusb ];
     license = licenses.mit;
     platforms = platforms.linux;
+    mainProgram = "plex-mpv-shim";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/popcorntime/default.nix b/nixpkgs/pkgs/applications/video/popcorntime/default.nix
index a12171772966..9e5a14d4983c 100644
--- a/nixpkgs/pkgs/applications/video/popcorntime/default.nix
+++ b/nixpkgs/pkgs/applications/video/popcorntime/default.nix
@@ -89,5 +89,6 @@ stdenv.mkDerivation rec {
     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = lib.licenses.gpl3;
     maintainers = with maintainers; [ onny ];
+    mainProgram = "popcorntime";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/prism/default.nix b/nixpkgs/pkgs/applications/video/prism/default.nix
index 8fa0c7b03762..68ef965ec1ab 100644
--- a/nixpkgs/pkgs/applications/video/prism/default.nix
+++ b/nixpkgs/pkgs/applications/video/prism/default.nix
@@ -18,5 +18,6 @@ buildGoModule rec {
     homepage = "https://github.com/muesli/prism";
     license = licenses.mit;
     maintainers = with maintainers; [ paperdigits ];
+    mainProgram = "prism";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/qarte/default.nix b/nixpkgs/pkgs/applications/video/qarte/default.nix
index be2ac3c7413c..e237a1c641a9 100644
--- a/nixpkgs/pkgs/applications/video/qarte/default.nix
+++ b/nixpkgs/pkgs/applications/video/qarte/default.nix
@@ -42,5 +42,6 @@ in mkDerivation {
     license = licenses.gpl3;
     maintainers = with maintainers; [ vbgl ];
     platforms = platforms.linux;
+    mainProgram = "qarte";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/qmediathekview/default.nix b/nixpkgs/pkgs/applications/video/qmediathekview/default.nix
index e37a8b1ed4ae..359679103497 100644
--- a/nixpkgs/pkgs/applications/video/qmediathekview/default.nix
+++ b/nixpkgs/pkgs/applications/video/qmediathekview/default.nix
@@ -38,5 +38,6 @@ mkDerivation rec {
     platforms = platforms.linux;
     maintainers = with maintainers; [ dotlambda ];
     broken = stdenv.isAarch64;
+    mainProgram = "QMediathekView";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/qstopmotion/default.nix b/nixpkgs/pkgs/applications/video/qstopmotion/default.nix
index 469ba5b8eaa6..3172c4bb4343 100644
--- a/nixpkgs/pkgs/applications/video/qstopmotion/default.nix
+++ b/nixpkgs/pkgs/applications/video/qstopmotion/default.nix
@@ -81,5 +81,6 @@ mkDerivation rec {
     maintainers = [ maintainers.leenaars ];
     broken = stdenv.isAarch64;
     platforms = lib.platforms.gnu ++ lib.platforms.linux;
+    mainProgram = "qstopmotion";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/quvi/library.nix b/nixpkgs/pkgs/applications/video/quvi/library.nix
deleted file mode 100644
index 548b3d7f9724..000000000000
--- a/nixpkgs/pkgs/applications/video/quvi/library.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ lib, stdenv, fetchurl, pkg-config, lua5, curl, quvi_scripts, libproxy, libgcrypt, glib }:
-
-stdenv.mkDerivation rec {
-  pname = "libquvi";
-  version="0.9.4";
-
-  src = fetchurl {
-    url = "mirror://sourceforge/quvi/libquvi-${version}.tar.xz";
-    sha256 = "1cl1kbgxl1jnx2nwx4z90l0lap09lnnj1fg7hxsxk3m6aj4y4grd";
-  };
-
-  nativeBuildInputs = [ pkg-config ];
-  buildInputs = [ lua5 curl quvi_scripts libproxy libgcrypt glib ];
-
-  meta = {
-    description = "Web video downloader";
-    homepage = "http://quvi.sf.net";
-    license = lib.licenses.lgpl21Plus;
-    platforms = lib.platforms.linux;
-    maintainers = [ ];
-    broken = true; # missing glibc-2.34 support, no upstream activity
-  };
-}
diff --git a/nixpkgs/pkgs/applications/video/quvi/scripts.nix b/nixpkgs/pkgs/applications/video/quvi/scripts.nix
deleted file mode 100644
index a31ef6e72ae6..000000000000
--- a/nixpkgs/pkgs/applications/video/quvi/scripts.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{lib, stdenv, fetchurl, pkg-config}:
-
-stdenv.mkDerivation rec {
-  pname = "quvi-scripts";
-  version="0.9.20131130";
-
-  src = fetchurl {
-    url = "mirror://sourceforge/quvi/libquvi-scripts-${version}.tar.xz";
-    sha256 = "1qvp6z5k1qgcys7vf7jd6fm0g07xixmciwj14ypn1kqhmjgizwhp";
-  };
-
-  nativeBuildInputs = [ pkg-config ];
-
-  meta = {
-    description = "Web video downloader";
-    homepage = "http://quvi.sf.net";
-    license = lib.licenses.lgpl21Plus;
-    platforms = lib.platforms.linux;
-    maintainers = [ ];
-    broken = true; # missing glibc-2.34 support, no upstream activity
-  };
-}
diff --git a/nixpkgs/pkgs/applications/video/quvi/tool.nix b/nixpkgs/pkgs/applications/video/quvi/tool.nix
deleted file mode 100644
index ad6233cbd001..000000000000
--- a/nixpkgs/pkgs/applications/video/quvi/tool.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{lib, stdenv, fetchurl, pkg-config, lua5, curl, quvi_scripts, libquvi, lua5_sockets, glib, makeWrapper}:
-
-stdenv.mkDerivation rec {
-  pname = "quvi";
-  version="0.9.5";
-
-  src = fetchurl {
-    url = "mirror://sourceforge/quvi/quvi-${version}.tar.xz";
-    sha256 = "1h52s265rp3af16dvq1xlscp2926jqap2l4ah94vrfchv6m1hffb";
-  };
-
-  nativeBuildInputs = [ pkg-config makeWrapper ];
-  buildInputs = [ lua5 curl quvi_scripts libquvi glib ];
-  postInstall = ''
-      wrapProgram $out/bin/quvi --set LUA_PATH "${lua5_sockets}/share/lua/${lua5.luaversion}/?.lua"
-  '';
-
-  meta = {
-    description = "Web video downloader";
-    homepage = "http://quvi.sf.net";
-    license = lib.licenses.lgpl21Plus;
-    platforms = lib.platforms.linux;
-    maintainers = [ ];
-    broken = true; # missing glibc-2.34 support, no upstream activity
-  };
-}
diff --git a/nixpkgs/pkgs/applications/video/recapp/default.nix b/nixpkgs/pkgs/applications/video/recapp/default.nix
index 1e644ff9f417..c15a0680a933 100644
--- a/nixpkgs/pkgs/applications/video/recapp/default.nix
+++ b/nixpkgs/pkgs/applications/video/recapp/default.nix
@@ -77,5 +77,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/amikha1lov/RecApp";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ dotlambda ];
+    mainProgram = "recapp";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/screenkey/default.nix b/nixpkgs/pkgs/applications/video/screenkey/default.nix
index 83ebf1db9b4e..90cf5e7dcf24 100644
--- a/nixpkgs/pkgs/applications/video/screenkey/default.nix
+++ b/nixpkgs/pkgs/applications/video/screenkey/default.nix
@@ -64,5 +64,6 @@ python3.pkgs.buildPythonApplication rec {
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
     maintainers = [ maintainers.rasendubi ];
+    mainProgram = "screenkey";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/shotcut/default.nix b/nixpkgs/pkgs/applications/video/shotcut/default.nix
index 5abc6c47a134..efa7782891ce 100644
--- a/nixpkgs/pkgs/applications/video/shotcut/default.nix
+++ b/nixpkgs/pkgs/applications/video/shotcut/default.nix
@@ -93,5 +93,6 @@ mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ goibhniu woffs peti ];
     platforms = platforms.linux;
+    mainProgram = "shotcut";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/srtrelay/default.nix b/nixpkgs/pkgs/applications/video/srtrelay/default.nix
index 43901d1524ad..8640424be1e9 100644
--- a/nixpkgs/pkgs/applications/video/srtrelay/default.nix
+++ b/nixpkgs/pkgs/applications/video/srtrelay/default.nix
@@ -21,5 +21,6 @@ buildGoModule rec {
     homepage = "https://github.com/voc/srtrelay";
     license = licenses.mit;
     maintainers = with maintainers; [ fpletz ];
+    mainProgram = "srtrelay";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/streamlink/default.nix b/nixpkgs/pkgs/applications/video/streamlink/default.nix
index ba1f724cbf4f..f6eef2ea9a24 100644
--- a/nixpkgs/pkgs/applications/video/streamlink/default.nix
+++ b/nixpkgs/pkgs/applications/video/streamlink/default.nix
@@ -6,12 +6,12 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "streamlink";
-  version = "6.3.1";
+  version = "6.4.2";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-k8Dfrl0Xie5zF/GhVdP/RKGajDyGblAwu49UekX1WEQ=";
+    hash = "sha256-tftxn0JRppLIh4ih1G4s0PoiMZYMUrKBy4IQhxxyLnY=";
   };
 
   nativeCheckInputs = with python3Packages; [
diff --git a/nixpkgs/pkgs/applications/video/sub-batch/default.nix b/nixpkgs/pkgs/applications/video/sub-batch/default.nix
index 9455f6d1a1e4..bc0d6bd3a6cb 100644
--- a/nixpkgs/pkgs/applications/video/sub-batch/default.nix
+++ b/nixpkgs/pkgs/applications/video/sub-batch/default.nix
@@ -31,5 +31,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.mit;
     maintainers = with maintainers; [ erictapen ];
     broken = stdenv.isDarwin;
+    mainProgram = "sub-batch";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/subdl/default.nix b/nixpkgs/pkgs/applications/video/subdl/default.nix
index 95f7be2cbcaf..773d1f1ad423 100644
--- a/nixpkgs/pkgs/applications/video/subdl/default.nix
+++ b/nixpkgs/pkgs/applications/video/subdl/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation {
     platforms = lib.platforms.all;
     license = lib.licenses.gpl3;
     maintainers = [ lib.maintainers.exfalso ];
+    mainProgram = "subdl";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/subtitleeditor/default.nix b/nixpkgs/pkgs/applications/video/subtitleeditor/default.nix
index 56d830a2ac76..fd8e03963dca 100644
--- a/nixpkgs/pkgs/applications/video/subtitleeditor/default.nix
+++ b/nixpkgs/pkgs/applications/video/subtitleeditor/default.nix
@@ -59,5 +59,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl3Plus;
     platforms = lib.platforms.linux;
     maintainers = [ lib.maintainers.plcplc ];
+    mainProgram = "subtitleeditor";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/tartube/default.nix b/nixpkgs/pkgs/applications/video/tartube/default.nix
index 859cd8e8cc36..b1b05a524f74 100644
--- a/nixpkgs/pkgs/applications/video/tartube/default.nix
+++ b/nixpkgs/pkgs/applications/video/tartube/default.nix
@@ -74,5 +74,6 @@ python3Packages.buildPythonApplication rec {
     platforms = platforms.linux;
     maintainers = with maintainers; [ mkg20001 luc65r ];
     homepage = "https://tartube.sourceforge.io/";
+    mainProgram = "tartube";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/timelens/default.nix b/nixpkgs/pkgs/applications/video/timelens/default.nix
index 05455b0f84f7..bd38a4c2f76a 100644
--- a/nixpkgs/pkgs/applications/video/timelens/default.nix
+++ b/nixpkgs/pkgs/applications/video/timelens/default.nix
@@ -41,5 +41,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/timelens/timelens/blob/${src.rev}/CHANGELOG.md";
     license = lib.licenses.gpl2Plus;
     maintainers = with lib.maintainers; [ janik ];
+    mainProgram = "timelens";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/uvccapture/default.nix b/nixpkgs/pkgs/applications/video/uvccapture/default.nix
index be0a7fcd2416..96e42b1a7f95 100644
--- a/nixpkgs/pkgs/applications/video/uvccapture/default.nix
+++ b/nixpkgs/pkgs/applications/video/uvccapture/default.nix
@@ -47,5 +47,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
     maintainers = [ maintainers.bjornfor ];
+    mainProgram = "uvccapture";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/vcs/default.nix b/nixpkgs/pkgs/applications/video/vcs/default.nix
index 37ea20718fd6..e21e3a98f1f7 100644
--- a/nixpkgs/pkgs/applications/video/vcs/default.nix
+++ b/nixpkgs/pkgs/applications/video/vcs/default.nix
@@ -38,5 +38,6 @@ stdenv.mkDerivation {
     license = licenses.cc-by-nc-sa-30;
     maintainers = with maintainers; [ elitak ];
     platforms = with platforms; unix;
+    mainProgram = "vcs";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/video-trimmer/default.nix b/nixpkgs/pkgs/applications/video/video-trimmer/default.nix
index d61f30de1be5..d3d55d2cb4a6 100644
--- a/nixpkgs/pkgs/applications/video/video-trimmer/default.nix
+++ b/nixpkgs/pkgs/applications/video/video-trimmer/default.nix
@@ -73,5 +73,6 @@ stdenv.mkDerivation (finalAttrs: {
     maintainers = with maintainers; [ doronbehar ];
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
+    mainProgram = "video-trimmer";
   };
 })
diff --git a/nixpkgs/pkgs/applications/video/vivictpp/default.nix b/nixpkgs/pkgs/applications/video/vivictpp/default.nix
index 13f3564fa0d0..9b8a8773b1b4 100644
--- a/nixpkgs/pkgs/applications/video/vivictpp/default.nix
+++ b/nixpkgs/pkgs/applications/video/vivictpp/default.nix
@@ -69,5 +69,6 @@ in stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.unix;
     maintainers = with maintainers; [ tilpner ];
+    mainProgram = "vivictpp";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/vokoscreen-ng/default.nix b/nixpkgs/pkgs/applications/video/vokoscreen-ng/default.nix
index 6f445da73d38..15d59af318fb 100644
--- a/nixpkgs/pkgs/applications/video/vokoscreen-ng/default.nix
+++ b/nixpkgs/pkgs/applications/video/vokoscreen-ng/default.nix
@@ -69,5 +69,6 @@ mkDerivation rec {
     homepage = "https://github.com/vkohaupt/vokoscreenNG";
     maintainers = with maintainers; [ shamilton ];
     platforms = platforms.linux;
+    mainProgram = "vokoscreenNG";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/vokoscreen/default.nix b/nixpkgs/pkgs/applications/video/vokoscreen/default.nix
index 82c23b4892e4..cb0df69ee2c5 100644
--- a/nixpkgs/pkgs/applications/video/vokoscreen/default.nix
+++ b/nixpkgs/pkgs/applications/video/vokoscreen/default.nix
@@ -53,5 +53,6 @@ mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = [ maintainers.league ];
     platforms = platforms.linux;
+    mainProgram = "vokoscreen";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/w_scan/default.nix b/nixpkgs/pkgs/applications/video/w_scan/default.nix
index 1a8c6f2d3adb..4dedf71d39bf 100644
--- a/nixpkgs/pkgs/applications/video/w_scan/default.nix
+++ b/nixpkgs/pkgs/applications/video/w_scan/default.nix
@@ -20,5 +20,6 @@ stdenv.mkDerivation rec {
     platforms = lib.platforms.linux;
     maintainers = [ lib.maintainers.nico202 ] ;
     license = lib.licenses.gpl2;
+    mainProgram = "w_scan";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/w_scan2/default.nix b/nixpkgs/pkgs/applications/video/w_scan2/default.nix
index 26202ee18bc2..b1a4c907c0db 100644
--- a/nixpkgs/pkgs/applications/video/w_scan2/default.nix
+++ b/nixpkgs/pkgs/applications/video/w_scan2/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     platforms = lib.platforms.linux;
     maintainers = with lib.maintainers; [ _0x4A6F ] ;
     license = lib.licenses.gpl2Only;
+    mainProgram = "w_scan2";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/webcamoid/default.nix b/nixpkgs/pkgs/applications/video/webcamoid/default.nix
index b8d7e7b6bfed..799e68bf072e 100644
--- a/nixpkgs/pkgs/applications/video/webcamoid/default.nix
+++ b/nixpkgs/pkgs/applications/video/webcamoid/default.nix
@@ -31,5 +31,6 @@ mkDerivation rec {
     license = [ licenses.gpl3Plus ];
     platforms = platforms.linux;
     maintainers = with maintainers; [ robaca ];
+    mainProgram = "webcamoid";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/webtorrent_desktop/default.nix b/nixpkgs/pkgs/applications/video/webtorrent_desktop/default.nix
index 925fa38a199a..75a8d9f5c639 100644
--- a/nixpkgs/pkgs/applications/video/webtorrent_desktop/default.nix
+++ b/nixpkgs/pkgs/applications/video/webtorrent_desktop/default.nix
@@ -57,6 +57,7 @@ buildNpmPackage {
     homepage = "https://webtorrent.io/desktop";
     license = licenses.mit;
     maintainers = [ maintainers.bendlas ];
+    mainProgram = "WebTorrent";
   };
 
 }
diff --git a/nixpkgs/pkgs/applications/video/wf-recorder/default.nix b/nixpkgs/pkgs/applications/video/wf-recorder/default.nix
index 8799455834a9..56a85517eb0a 100644
--- a/nixpkgs/pkgs/applications/video/wf-recorder/default.nix
+++ b/nixpkgs/pkgs/applications/video/wf-recorder/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ yuka ];
     platforms = platforms.linux;
+    mainProgram = "wf-recorder";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/xscast/default.nix b/nixpkgs/pkgs/applications/video/xscast/default.nix
index f3b44bf7c6aa..4e7252a514f8 100644
--- a/nixpkgs/pkgs/applications/video/xscast/default.nix
+++ b/nixpkgs/pkgs/applications/video/xscast/default.nix
@@ -31,5 +31,6 @@ stdenv.mkDerivation {
     license = licenses.mit;
     description = "Screencasts of windows with list of keystrokes overlayed";
     maintainers = with maintainers; [ ];
+    mainProgram = "xscast";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/youtube-tui/default.nix b/nixpkgs/pkgs/applications/video/youtube-tui/default.nix
index e0ede1f1e704..bfa1039d5d33 100644
--- a/nixpkgs/pkgs/applications/video/youtube-tui/default.nix
+++ b/nixpkgs/pkgs/applications/video/youtube-tui/default.nix
@@ -52,5 +52,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://siriusmart.github.io/youtube-tui";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ Ruixi-rebirth ];
+    mainProgram = "youtube-tui";
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/yuview/default.nix b/nixpkgs/pkgs/applications/video/yuview/default.nix
index 7df47d3f4256..a6c7ad6ceb86 100644
--- a/nixpkgs/pkgs/applications/video/yuview/default.nix
+++ b/nixpkgs/pkgs/applications/video/yuview/default.nix
@@ -41,5 +41,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ leixb ];
     platforms = platforms.unix;
+    mainProgram = "YUView";
   };
 }