{ mkDerivation , substituteAll , lib , extra-cmake-modules , breeze-icons , breeze-qt5 , kdoctools , kconfig , kcrash , kguiaddons , kiconthemes , ki18n , kinit , kdbusaddons , knotifications , knewstuff , karchive , knotifyconfig , kplotting , ktextwidgets , mediainfo , mlt , shared-mime-info , libv4l , kfilemetadata , ffmpeg-full , frei0r , phonon-backend-gstreamer , qtdeclarative , qtmultimedia , qtnetworkauth , qtquickcontrols2 , qtscript , rttr , kpurpose , kdeclarative , wrapGAppsHook3 , glaxnimate }: let mlt-full = mlt.override { ffmpeg = ffmpeg-full; }; in mkDerivation { pname = "kdenlive"; nativeBuildInputs = [ extra-cmake-modules kdoctools ]; buildInputs = [ breeze-icons breeze-qt5 kconfig kcrash kdbusaddons kfilemetadata kguiaddons ki18n kiconthemes kinit knotifications knewstuff karchive knotifyconfig kplotting ktextwidgets mediainfo mlt-full phonon-backend-gstreamer qtdeclarative qtmultimedia qtnetworkauth qtquickcontrols2 qtscript shared-mime-info libv4l ffmpeg-full frei0r rttr kpurpose kdeclarative wrapGAppsHook3 ]; # 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 = [ ( substituteAll { src = ./dependency-paths.patch; inherit mediainfo glaxnimate; ffmpeg = ffmpeg-full; mlt = mlt-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)|' ''; dontWrapGApps = true; # 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" ]; preFixup = '' qtWrapperArgs+=("''${gappsWrapperArgs[@]}") ''; meta = { homepage = "https://apps.kde.org/kdenlive/"; description = "Video editor"; license = with lib.licenses; [ gpl2Plus ]; maintainers = with lib.maintainers; [ turion ]; }; }