From ff6a0848ca8066e21fd2a64167cf3a002ea39a13 Mon Sep 17 00:00:00 2001 From: Artturin Date: Tue, 5 Nov 2024 23:20:31 +0200 Subject: [PATCH] qt6.wrapQtAppsHook: Only propagate plugins,qml of `qtwayland` qt6.{wrapQtAppsHook,wrapQtAppsNoGuiHook}: propagate `qtbase` plugins https://www.github.com/NixOS/nixpkgs/pull/352419#discussion_r1823132984 --- pkgs/development/libraries/qt-6/default.nix | 24 ++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/qt-6/default.nix b/pkgs/development/libraries/qt-6/default.nix index b9d3c0e56ced..a4aa9124c3b9 100644 --- a/pkgs/development/libraries/qt-6/default.nix +++ b/pkgs/development/libraries/qt-6/default.nix @@ -7,6 +7,7 @@ , fetchpatch2 , makeSetupHook , makeWrapper +, runCommand , gst_all_1 , libglvnd , darwin @@ -37,6 +38,15 @@ let apple-sdk_15 (darwinMinVersionHook "12.0") ]; + + onlyPluginsAndQml = drv: let + drv' = drv.__spliced.targetTarget or drv; + inherit (self.qtbase) qtPluginPrefix qtQmlPrefix; + in (runCommand "${drv'.name}-only-plugins-qml" { } '' + mkdir -p $(dirname "$out/${qtPluginPrefix}") + test -d "${drv'}/${qtPluginPrefix}" && ln -s "${drv'}/${qtPluginPrefix}" "$out/${qtPluginPrefix}" || true + test -d "${drv'}/${qtQmlPrefix}" && ln -s "${drv'}/${qtQmlPrefix}" "$out/${qtQmlPrefix}" || true + ''); in { @@ -164,19 +174,27 @@ let qtwebview = callPackage ./modules/qtwebview.nix { }; wrapQtAppsHook = callPackage - ({ makeBinaryWrapper, qtwayland }: makeSetupHook + ({ makeBinaryWrapper, qtwayland, qtbase }: + makeSetupHook { name = "wrap-qt6-apps-hook"; propagatedBuildInputs = [ makeBinaryWrapper ]; - depsTargetTargetPropagated = lib.optionals (lib.meta.availableOn stdenv.targetPlatform qtwayland) [ qtwayland.out ]; + depsTargetTargetPropagated = [ + (onlyPluginsAndQml qtbase) + ] ++ lib.optionals (lib.meta.availableOn stdenv.targetPlatform qtwayland) [ + (onlyPluginsAndQml qtwayland) + ]; } ./hooks/wrap-qt-apps-hook.sh) { }; wrapQtAppsNoGuiHook = callPackage - ({ makeBinaryWrapper }: makeSetupHook + ({ makeBinaryWrapper, qtbase }: makeSetupHook { name = "wrap-qt6-apps-no-gui-hook"; propagatedBuildInputs = [ makeBinaryWrapper ]; + depsTargetTargetPropagated = [ + (onlyPluginsAndQml qtbase) + ]; } ./hooks/wrap-qt-apps-hook.sh) { };