summary refs log tree commit diff
path: root/pkgs/desktops/plasma-5/default.nix
diff options
context:
space:
mode:
authorThomas Tuegel <ttuegel@mailbox.org>2017-05-26 15:44:36 -0500
committerThomas Tuegel <ttuegel@mailbox.org>2017-06-18 08:44:45 -0500
commit8538d75734e4776807203b66f91a281f4da4e801 (patch)
tree9c019aa8f56873c38b9267d56dce05a07570dc1e /pkgs/desktops/plasma-5/default.nix
parent7f95d4834f772607fb4c9b2ffa4611ccd0a1006f (diff)
downloadnixlib-8538d75734e4776807203b66f91a281f4da4e801.tar
nixlib-8538d75734e4776807203b66f91a281f4da4e801.tar.gz
nixlib-8538d75734e4776807203b66f91a281f4da4e801.tar.bz2
nixlib-8538d75734e4776807203b66f91a281f4da4e801.tar.lz
nixlib-8538d75734e4776807203b66f91a281f4da4e801.tar.xz
nixlib-8538d75734e4776807203b66f91a281f4da4e801.tar.zst
nixlib-8538d75734e4776807203b66f91a281f4da4e801.zip
plasma5: fixup inputs and outputs
Diffstat (limited to 'pkgs/desktops/plasma-5/default.nix')
-rw-r--r--pkgs/desktops/plasma-5/default.nix40
1 files changed, 34 insertions, 6 deletions
diff --git a/pkgs/desktops/plasma-5/default.nix b/pkgs/desktops/plasma-5/default.nix
index 10d5a152f130..e101d4e14c57 100644
--- a/pkgs/desktops/plasma-5/default.nix
+++ b/pkgs/desktops/plasma-5/default.nix
@@ -36,21 +36,44 @@ let
     mirror = "mirror://kde";
   };
 
+  mkDerivation = libsForQt5.callPackage ({ mkDerivation }: mkDerivation) {};
+
   packages = self: with self;
     let
+
+      propagate = out:
+        let setupHook = { writeScript }:
+              writeScript "setup-hook.sh" ''
+                # Propagate $${out} output
+                propagatedUserEnvPkgs+=" @${out}@"
+
+                # Propagate $dev so that this setup hook is propagated
+                # But only if there is a separate $dev output
+                if [ "$outputDev" != out ]; then
+                    if [ -n "$crossConfig" ]; then
+                      propagatedBuildInputs+=" @dev@"
+                    else
+                      propagatedNativeBuildInputs+=" @dev@"
+                    fi
+                fi
+              '';
+        in callPackage setupHook {};
+
+      propagateBin = propagate "bin";
+
       callPackage = self.newScope {
         mkDerivation = args:
           let
             inherit (args) name;
             sname = args.sname or name;
             inherit (srcs."${sname}") src version;
-            mkDerivation = libsForQt5.callPackage ({ mkDerivation }: mkDerivation) {};
-          in
-          mkDerivation (args // {
-            name = "${name}-${version}";
-            inherit src;
 
-            outputs = args.outputs or [ "out" "dev" ];
+            outputs = args.outputs or [ "out" ];
+            hasBin = lib.elem "bin" outputs;
+            hasDev = lib.elem "dev" outputs;
+
+            defaultSetupHook = if hasBin && hasDev then propagateBin else null;
+            setupHook = args.setupHook or defaultSetupHook;
 
             meta = {
               license = with lib.licenses; [
@@ -60,8 +83,13 @@ let
               maintainers = with lib.maintainers; [ ttuegel ];
               homepage = "http://www.kde.org";
             } // (args.meta or {});
+          in
+          mkDerivation (args // {
+            name = "${name}-${version}";
+            inherit meta outputs setupHook src;
           });
       };
+
     in {
       bluedevil = callPackage ./bluedevil.nix {};
       breeze-gtk = callPackage ./breeze-gtk.nix {};