nixpkgs/pkgs/applications/kde/kdenlive.nix
Anthony Cowley 7810dcbd7b kdenlive: Avoid exposing configurable paths to melt
kdenlive's configuration stores two paths to the `mlt` package. These
may be set in the GUI under `Settings -> Configure Kdenlive ->
Environment`, and are persisted in $XDG_CONFIG_HOME/.kdenliverc

A problem I encountered was `kdenlive` holding on to old `mlt` paths
in these settings after a nixpkgs update, causing video rendering to fail.

The C++ class kdenlive uses for these settings is automatically
generated, so what this patch does is edit the declaration of the
relevant settings to provide default values with the absolute path of
`mlt` known at build time, and mark those settings as hidden.

In testing, I've found that changing `mlt` and rebuilding `kdenlive`
causes updated paths to appear in the GUI, and no entries to be added
to the kdenliverc file.

A shortcoming of this patch is that existing users will already have paths
stored in their `kdenliverc` files that can cause trouble. The hope is
that an approach like the one taken here will reduce this sort
of breakage moving forward.
2019-09-11 00:16:14 -04:00

85 lines
1.3 KiB
Nix

{ mkDerivation
, lib
, extra-cmake-modules
, breeze-icons
, breeze-qt5
, kdoctools
, kconfig
, kcrash
, kguiaddons
, kiconthemes
, ki18n
, kinit
, kdbusaddons
, knotifications
, knewstuff
, karchive
, knotifyconfig
, kplotting
, ktextwidgets
, mlt
, shared-mime-info
, libv4l
, kfilemetadata
, ffmpeg-full
, frei0r
, phonon-backend-gstreamer
, qtdeclarative
, qtquickcontrols
, qtscript
, qtwebkit
, rttr
, kpurpose
, kdeclarative
}:
mkDerivation {
name = "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
mlt
phonon-backend-gstreamer
qtdeclarative
qtquickcontrols
qtscript
qtwebkit
shared-mime-info
libv4l
ffmpeg-full
frei0r
rttr
kpurpose
kdeclarative
];
patches = [ ./mlt-path.patch ];
inherit mlt;
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
'';
meta = {
license = with lib.licenses; [ gpl2Plus ];
};
}