diff options
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.sh | 53 |
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) |