about summary refs log tree commit diff
path: root/nixpkgs/pkgs/data/icons/hicolor-icon-theme/setup-hook.sh
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/data/icons/hicolor-icon-theme/setup-hook.sh')
-rw-r--r--nixpkgs/pkgs/data/icons/hicolor-icon-theme/setup-hook.sh53
1 files changed, 53 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/data/icons/hicolor-icon-theme/setup-hook.sh b/nixpkgs/pkgs/data/icons/hicolor-icon-theme/setup-hook.sh
new file mode 100644
index 000000000000..df7cac08b058
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/hicolor-icon-theme/setup-hook.sh
@@ -0,0 +1,53 @@
+# shellcheck shell=bash
+
+# Populate XDG_ICON_DIRS
+hicolorIconThemeHook() {
+
+    # where to find icon themes
+    if [ -d "$1/share/icons" ]; then
+      addToSearchPath XDG_ICON_DIRS "$1/share"
+    fi
+}
+
+# I think this is meant to be a runtime dep
+addEnvHooks "${targetOffset:?}" hicolorIconThemeHook
+
+# Make symbolic links of parent icon themes that are inherited in the
+# icon themes installed by the package.
+symlinkParentIconThemes() {
+    if [ -e $out/share/icons ]; then
+        echo Symlinking parent icon themes...
+        local theme
+        local theme_name
+        local inheritance
+        local parent
+        local parent_theme
+        local dir
+        local parent_path
+        for theme in $out/share/icons/*/index.theme; do
+            theme_name="${theme%/*}"
+            theme_name="${theme_name##*/}"
+            echo "  theme: $theme_name"
+            inheritance=$(sed -rne 's,^Inherits=(.*)$,\1,p' "$theme")
+            IFS=',' read -ra parent_themes <<< "$inheritance"
+            for parent_theme in "${parent_themes[@]}"; do
+                parent_path=""
+                if [ -e "$out/share/icons/$parent_theme" ]; then
+                    parent_path="$(realpath "$out/share/icons/$parent_theme")"
+                else
+                    IFS=':' read -ra dirs <<< $XDG_ICON_DIRS
+                    for parent_dir in  "${dirs[@]}"; do
+                        if [ -e "$parent_dir/icons/$parent_theme/index.theme" ]; then
+                            parent_path="$(realpath "$parent_dir/icons/$parent_theme")"
+                            ln -s "$parent_path" "$out/share/icons/"
+                            break
+                        fi
+                    done
+                fi
+                echo "    parent: $parent_theme	-> $parent_path"
+            done
+        done
+    fi
+}
+
+preFixupHooks+=(symlinkParentIconThemes)