diff --git a/pkgs/applications/kde/ffmpeg-path.patch b/pkgs/applications/kde/ffmpeg-path.patch
new file mode 100644
index 00000000000..a0cef882f59
--- /dev/null
+++ b/pkgs/applications/kde/ffmpeg-path.patch
@@ -0,0 +1,25 @@
+diff --git a/src/kdenlivesettings.kcfg b/src/kdenlivesettings.kcfg
+index 5edad5ae7..d35347a40 100644
+--- a/src/kdenlivesettings.kcfg
++++ b/src/kdenlivesettings.kcfg
+@@ -403,17 +403,17 @@
+
+
+
+-
++ @ffmpeg@/bin/ffmpeg
+
+
+
+
+-
++ @ffmpeg@/bin/ffplay
+
+
+
+
+-
++ @ffmpeg@/bin/ffprobe
+
+
+
diff --git a/pkgs/applications/kde/kdenlive.nix b/pkgs/applications/kde/kdenlive.nix
index b7c691e9594..95496f90e04 100644
--- a/pkgs/applications/kde/kdenlive.nix
+++ b/pkgs/applications/kde/kdenlive.nix
@@ -70,14 +70,24 @@ mkDerivation {
kpurpose
kdeclarative
];
- patches = [ ./mlt-path.patch ];
+ # Both MLT and FFMpeg paths must be set or Kdenlive will complain that it
+ # doesn't find them. See:
+ # https://github.com/NixOS/nixpkgs/issues/83885
+ patches = [ ./mlt-path.patch ./ffmpeg-path.patch ];
inherit mlt;
+ ffmpeg = ffmpeg-full;
postPatch =
# Module Qt5::Concurrent must be included in `find_package` before it is used.
''
sed -i CMakeLists.txt -e '/find_package(Qt5 REQUIRED/ s|)| Concurrent)|'
substituteAllInPlace src/kdenlivesettings.kcfg
'';
+ # Frei0r path needs to be set too or Kdenlive will complain. See:
+ # https://github.com/NixOS/nixpkgs/issues/83885
+ # https://github.com/NixOS/nixpkgs/issues/29614#issuecomment-488849325
+ qtWrapperArgs = [
+ "--set FREI0R_PATH ${frei0r}/lib/frei0r-1"
+ ];
meta = {
license = with lib.licenses; [ gpl2Plus ];
};