summary refs log tree commit diff
path: root/pkgs/data/icons/hicolor-icon-theme/setup-hook.sh
blob: 0fd9bf85d8310416b11c0903288ba6b62c55283e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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)