From 8f07f00e8feaf94639c088791e44f857d36a57d5 Mon Sep 17 00:00:00 2001 From: K900 Date: Tue, 16 Jul 2024 16:40:14 +0300 Subject: [PATCH] kdePackages.kirigami: hack to propagate qqc2-desktop-style --- pkgs/kde/frameworks/kirigami/default.nix | 30 +++++++++++++++---- .../frameworks/qqc2-desktop-style/default.nix | 5 +++- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/pkgs/kde/frameworks/kirigami/default.nix b/pkgs/kde/frameworks/kirigami/default.nix index ee33f2e7b81c..cf82923596a0 100644 --- a/pkgs/kde/frameworks/kirigami/default.nix +++ b/pkgs/kde/frameworks/kirigami/default.nix @@ -1,14 +1,34 @@ { + stdenv, mkKdeDerivation, qtsvg, qttools, qtdeclarative, qt5compat, + qqc2-desktop-style, }: -mkKdeDerivation { - pname = "kirigami"; +# Kirigami has a runtime dependency on qqc2-desktop-style, +# which has a build time dependency on Kirigami. +# So, build qqc2-desktop-style against unwrapped Kirigami, +# and replace all the other Kirigami with a wrapper that +# propagates both Kirigami and qqc2-desktop-style. +# This is a hack, but what can you do. +let + unwrapped = mkKdeDerivation { + pname = "kirigami"; - extraNativeBuildInputs = [qtsvg qttools]; - extraBuildInputs = [qtdeclarative]; - extraPropagatedBuildInputs = [qt5compat]; + extraNativeBuildInputs = [qtsvg qttools]; + extraBuildInputs = [qtdeclarative]; + extraPropagatedBuildInputs = [qt5compat]; + }; +in stdenv.mkDerivation { + pname = "kirigami-wrapped"; + inherit (unwrapped) version; + + propagatedBuildInputs = [ unwrapped qqc2-desktop-style ]; + + dontUnpack = true; + dontWrapQtApps = true; + + passthru = { inherit unwrapped; }; } diff --git a/pkgs/kde/frameworks/qqc2-desktop-style/default.nix b/pkgs/kde/frameworks/qqc2-desktop-style/default.nix index 3c756d9b9353..5ceb41012d66 100644 --- a/pkgs/kde/frameworks/qqc2-desktop-style/default.nix +++ b/pkgs/kde/frameworks/qqc2-desktop-style/default.nix @@ -2,10 +2,13 @@ mkKdeDerivation, qtdeclarative, qttools, + kirigami, }: mkKdeDerivation { pname = "qqc2-desktop-style"; extraNativeBuildInputs = [qttools]; - extraBuildInputs = [qtdeclarative]; + extraBuildInputs = [qtdeclarative kirigami.unwrapped]; + + excludeDependencies = ["kirigami"]; }