diff --git a/pkgs/development/libraries/kde-frameworks-5.15/kservice/default.nix b/pkgs/development/libraries/kde-frameworks-5.15/kservice/default.nix index 5c7727cdb647..03b7c7c2f51d 100644 --- a/pkgs/development/libraries/kde-frameworks-5.15/kservice/default.nix +++ b/pkgs/development/libraries/kde-frameworks-5.15/kservice/default.nix @@ -4,9 +4,11 @@ kdeFramework { name = "kservice"; + setupHook = ./setup-hook.sh; nativeBuildInputs = [ extra-cmake-modules kdoctools ]; - buildInputs = [ kcoreaddons kcrash kdbusaddons ]; - propagatedBuildInputs = [ kconfig ki18n kwindowsystem ]; + buildInputs = [ kcrash kdbusaddons ]; + propagatedBuildInputs = [ kconfig kcoreaddons ki18n kwindowsystem ]; + propagatedUserEnvPkgs = [ kcoreaddons ]; patches = [ ./0001-qdiriterator-follow-symlinks.patch ./0002-no-canonicalize-path.patch diff --git a/pkgs/development/libraries/kde-frameworks-5.15/kservice/setup-hook.sh b/pkgs/development/libraries/kde-frameworks-5.15/kservice/setup-hook.sh new file mode 100644 index 000000000000..c28e862ff8ae --- /dev/null +++ b/pkgs/development/libraries/kde-frameworks-5.15/kservice/setup-hook.sh @@ -0,0 +1,43 @@ +addServicePkg() { + local propagated + for dir in "share/kservices5" "share/kservicetypes5"; do + if [[ -d "$1/$dir" ]]; then + propagated= + for pkg in $propagatedBuildInputs; do + if [[ "z$pkg" == "z$1" ]]; then + propagated=1 + break + fi + done + if [[ -z $propagated ]]; then + propagatedBuildInputs="$propagatedBuildInputs $1" + fi + + propagated= + for pkg in $propagatedUserEnvPkgs; do + if [[ "z$pkg" == "z$1" ]]; then + propagated=1 + break + fi + done + if [[ -z $propagated ]]; then + propagatedUserEnvPkgs="$propagatedUserEnvPkgs $1" + fi + + break + fi + done +} + +envHooks+=(addServicePkg) + +local propagated +for pkg in $propagatedBuildInputs; do + if [[ "z$pkg" == "z@out@" ]]; then + propagated=1 + break + fi +done +if [[ -z $propagated ]]; then + propagatedBuildInputs="$propagatedBuildInputs @out@" +fi