diff --git a/pkgs/kde/frameworks/extra-cmake-modules/default.nix b/pkgs/kde/frameworks/extra-cmake-modules/default.nix index d0b5c09a101d..573c3be94233 100644 --- a/pkgs/kde/frameworks/extra-cmake-modules/default.nix +++ b/pkgs/kde/frameworks/extra-cmake-modules/default.nix @@ -7,6 +7,10 @@ mkKdeDerivation { outputs = [ "out" ]; + patches = [ + ./search-qml.patch + ]; + # Packages that have an Android APK (e.g. KWeather) require Python3 at build time. # See: https://invent.kde.org/frameworks/extra-cmake-modules/-/blob/v6.1.0/modules/ECMAddAndroidApk.cmake?ref_type=tags#L57 propagatedNativeBuildInputs = [ diff --git a/pkgs/kde/frameworks/extra-cmake-modules/ecm-hook.sh b/pkgs/kde/frameworks/extra-cmake-modules/ecm-hook.sh index 51152abbc3a9..2bd98567724d 100644 --- a/pkgs/kde/frameworks/extra-cmake-modules/ecm-hook.sh +++ b/pkgs/kde/frameworks/extra-cmake-modules/ecm-hook.sh @@ -5,6 +5,9 @@ ecmEnvHook() { addToSearchPath XDG_DATA_DIRS "$1/share" addToSearchPath XDG_CONFIG_DIRS "$1/etc/xdg" + if [ -n "${qtQmlPrefix-}" ]; then + addToSearchPath NIXPKGS_QML_SEARCH_PATHS "$1/$qtQmlPrefix" + fi } addEnvHooks "$hostOffset" ecmEnvHook diff --git a/pkgs/kde/frameworks/extra-cmake-modules/search-qml.patch b/pkgs/kde/frameworks/extra-cmake-modules/search-qml.patch new file mode 100644 index 000000000000..11e5a55f8825 --- /dev/null +++ b/pkgs/kde/frameworks/extra-cmake-modules/search-qml.patch @@ -0,0 +1,15 @@ +diff --git a/modules/ECMFindQmlModule.cmake.in b/modules/ECMFindQmlModule.cmake.in +index 7db160c1..03fa6916 100644 +--- a/modules/ECMFindQmlModule.cmake.in ++++ b/modules/ECMFindQmlModule.cmake.in +@@ -15,8 +15,8 @@ if (QT_MAJOR_VERSION EQUAL "6") + include(${ECM_MODULE_DIR}/ECMQmlModule.cmake) + # Get the qmldir file + _ecm_qmlmodule_uri_to_path(MODULEDIR "@MODULE_NAME@" "@VERSION@") +- set(KDE_QMLDIR "${KDE_INSTALL_FULL_QMLDIR}/${MODULEDIR}") +- find_file(QMLDIR_FILE qmldir ${KDE_QMLDIR} NO_CACHE) ++ find_file(QMLDIR_FILE qmldir PATHS ENV NIXPKGS_QML_SEARCH_PATHS PATH_SUFFIXES ${MODULEDIR} NO_CACHE NO_DEFAULT_PATHS) ++ cmake_path(GET QMLDIR_FILE PARENT_PATH KDE_QMLDIR) + if (NOT QMLDIR_FILE) # Check the install destination, the QT_PLUGIN_PATH might not be set up correctly at this point + # Check the Qt installation + ecm_query_qt(qt_qml_dir QT_INSTALL_QML)