summary refs log tree commit diff
path: root/pkgs/build-support
diff options
context:
space:
mode:
authorThomas Tuegel <ttuegel@mailbox.org>2017-02-25 14:05:22 -0600
committerThomas Tuegel <ttuegel@mailbox.org>2017-02-27 11:49:21 -0600
commit68e0bc38a2cc09985ef5dde22c200010349ed731 (patch)
tree5995c59e811188eeb26f2ceb78f88b732876de8c /pkgs/build-support
parentd446303d0bab3675d1d30fc9a75f17904780c360 (diff)
downloadnixpkgs-68e0bc38a2cc09985ef5dde22c200010349ed731.tar
nixpkgs-68e0bc38a2cc09985ef5dde22c200010349ed731.tar.gz
nixpkgs-68e0bc38a2cc09985ef5dde22c200010349ed731.tar.bz2
nixpkgs-68e0bc38a2cc09985ef5dde22c200010349ed731.tar.lz
nixpkgs-68e0bc38a2cc09985ef5dde22c200010349ed731.tar.xz
nixpkgs-68e0bc38a2cc09985ef5dde22c200010349ed731.tar.zst
nixpkgs-68e0bc38a2cc09985ef5dde22c200010349ed731.zip
Move kdeWrapper out of kdeFrameworks
Diffstat (limited to 'pkgs/build-support')
-rw-r--r--pkgs/build-support/kde/wrapper.nix67
1 files changed, 67 insertions, 0 deletions
diff --git a/pkgs/build-support/kde/wrapper.nix b/pkgs/build-support/kde/wrapper.nix
new file mode 100644
index 00000000000..f5add12e8ec
--- /dev/null
+++ b/pkgs/build-support/kde/wrapper.nix
@@ -0,0 +1,67 @@
+{ stdenv, lib, makeWrapper, buildEnv }:
+
+packages:
+
+let
+  packages_ = if builtins.isList packages then packages else [packages];
+
+  unwrapped = lib.concatMap (p: if builtins.isList p.unwrapped then p.unwrapped else [p.unwrapped]) packages_;
+  targets = lib.concatMap (p: p.targets) packages_;
+  paths = lib.concatMap (p: p.paths or []) packages_;
+
+  name =
+    if builtins.length unwrapped == 1
+    then (lib.head unwrapped).name
+    else "kde-application";
+  meta =
+    if builtins.length unwrapped == 1
+    then (lib.head unwrapped).meta
+    else {};
+
+  env = buildEnv {
+    inherit name meta;
+    paths = builtins.map lib.getBin (unwrapped ++ paths);
+    pathsToLink = [ "/bin" "/share" "/lib/qt5" "/etc/xdg" ];
+  };
+in
+
+stdenv.mkDerivation {
+  inherit name meta;
+  preferLocalBuild = true;
+
+  inherit unwrapped env targets;
+
+  passthru = {
+    inherit targets paths;
+    unwrapped = if builtins.length unwrapped == 1 then lib.head unwrapped else unwrapped;
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildCommand = ''
+    for t in $targets; do
+        good=""
+        for drv in $unwrapped; do
+            if [ -a "$drv/$t" ]; then
+                makeWrapper "$drv/$t" "$out/$t" \
+                    --argv0 '"$0"' \
+                    --suffix PATH : "$env/bin" \
+                    --prefix XDG_CONFIG_DIRS : "$env/etc/xdg" \
+                    --prefix XDG_DATA_DIRS : "$env/share" \
+                    --set QML_IMPORT_PATH "$env/lib/qt5/imports" \
+                    --set QML2_IMPORT_PATH "$env/lib/qt5/qml" \
+                    --set QT_PLUGIN_PATH "$env/lib/qt5/plugins"
+                good="1"
+                break
+            fi
+        done
+        if [ -z "$good" ]; then
+            echo "file or directory not found in derivations: $t"
+            exit 1
+        fi
+    done
+
+    mkdir -p "$out/nix-support"
+    echo "$unwrapped" > "$out/nix-support/propagated-user-env-packages"
+  '';
+}