aboutsummaryrefslogtreecommitdiff
path: root/pkgs/build-support/setup-hooks
diff options
context:
space:
mode:
authorFrederik Rietdijk <fridh@fridh.nl>2020-11-29 13:51:10 +0100
committerFrederik Rietdijk <fridh@fridh.nl>2020-11-29 13:51:10 +0100
commit0d8491cb2b045e8a0b52bde121929b15a1d20196 (patch)
treed3740bc4c45a54ff299cb9a9bb0bc7cb8fa1e02d /pkgs/build-support/setup-hooks
parent9e062723b2d60d2be85268fb7eebb28abce0b5af (diff)
parent3a477cf32417b4c81c9fe42fbfb52c40b69fc110 (diff)
Merge master into staging-next
Diffstat (limited to 'pkgs/build-support/setup-hooks')
-rw-r--r--pkgs/build-support/setup-hooks/copy-desktop-items.sh42
1 files changed, 42 insertions, 0 deletions
diff --git a/pkgs/build-support/setup-hooks/copy-desktop-items.sh b/pkgs/build-support/setup-hooks/copy-desktop-items.sh
new file mode 100644
index 000000000000..f96a10f33d5c
--- /dev/null
+++ b/pkgs/build-support/setup-hooks/copy-desktop-items.sh
@@ -0,0 +1,42 @@
+# shellcheck shell=bash
+
+# Setup hook that installs specified desktop items.
+#
+# Example usage in a derivation:
+#
+# { …, makeDesktopItem, copyDesktopItems, … }:
+#
+# let desktopItem = makeDesktopItem { … }; in
+# stdenv.mkDerivation {
+# …
+# nativeBuildInputs = [ copyDesktopItems ];
+#
+# desktopItems = [ desktopItem ];
+# …
+# }
+#
+# This hook will copy files which are either given by full path
+# or all '*.desktop' files placed inside the 'share/applications'
+# folder of each `desktopItems` argument.
+
+postInstallHooks+=(copyDesktopItems)
+
+copyDesktopItems() {
+ if [ "${dontCopyDesktopItems-}" = 1 ]; then return; fi
+
+ if [ -z "$desktopItems" ]; then
+ return
+ fi
+
+ for desktopItem in $desktopItems; do
+ if [[ -f "$desktopItem" ]]; then
+ echo "Copying '$f' into '$out/share/applications'"
+ install -D -m 444 -t "$out"/share/applications "$f"
+ else
+ for f in "$desktopItem"/share/applications/*.desktop; do
+ echo "Copying '$f' into '$out/share/applications'"
+ install -D -m 444 -t "$out"/share/applications "$f"
+ done
+ fi
+ done
+}