1{ stdenv, runCommand, ibus, lndir, makeWrapper, plugins, hicolor_icon_theme }:
2
3let
4 name = "ibus-with-plugins-" + (builtins.parseDrvName ibus.name).version;
5 env = {
6 nativeBuildInputs = [ lndir makeWrapper ];
7 propagatedUserEnvPackages = [ hicolor_icon_theme ];
8 paths = [ ibus ] ++ plugins;
9 };
10 command = ''
11 for dir in bin etc lib libexec share; do
12 mkdir -p "$out/$dir"
13 for pkg in $paths; do
14 if [ -d "$pkg/$dir" ]; then
15 lndir -silent "$pkg/$dir" "$out/$dir"
16 fi
17 done
18 done
19
20 for prog in ibus ibus-daemon ibus-setup; do
21 wrapProgram "$out/bin/$prog" \
22 --suffix XDG_DATA_DIRS : "${hicolor_icon_theme}/share" \
23 --set IBUS_COMPONENT_PATH "$out/share/ibus/component/" \
24 --set IBUS_DATAROOTDIR "$out/share" \
25 --set IBUS_LIBEXECDIR "$out/libexec" \
26 --set IBUS_LOCALEDIR "$out/share/locale" \
27 --set IBUS_PREFIX "$out" \
28 --set IBUS_TABLE_BIN_PATH "$out/bin" \
29 --set IBUS_TABLE_DATA_DIR "$out/share" \
30 --set IBUS_TABLE_LIB_LOCATION "$out/libexec" \
31 --set IBUS_TABLE_LOCATION "$out/share/ibus-table" \
32 --set IBUS_TABLE_DEBUG_LEVEL 1
33 done
34 '';
35in
36 runCommand name env command