nixpkgs/pkgs/data/icons/hicolor-icon-theme/setup-hook.sh
2020-09-27 15:51:41 -03:00

54 lines
1.8 KiB
Bash

# 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)