at master 3.8 kB view raw
1{ 2 lib, 3 buildEnv, 4 makeWrapper, 5 dconf, 6 hicolor-icon-theme, 7 ibus, 8 librsvg, 9 plugins ? [ ], 10}: 11 12buildEnv { 13 name = "ibus-with-plugins-" + lib.getVersion ibus; 14 15 paths = [ ibus ] ++ plugins; 16 17 pathsToLink = [ 18 "/bin" 19 "/etc" 20 "/lib" 21 "/libexec" 22 "/share" 23 # Need to link contents so that the directories are writeable. 24 "/lib/systemd" 25 "/share/dbus-1/services" 26 "/share/systemd/user" 27 "/share/systemd/user/gnome-session.target.wants" 28 ]; 29 30 nativeBuildInputs = [ 31 makeWrapper 32 ]; 33 34 buildInputs = [ ibus ] ++ plugins; 35 36 postBuild = '' 37 for prog in ibus; do 38 wrapProgram "$out/bin/$prog" \ 39 --set GDK_PIXBUF_MODULE_FILE ${librsvg.out}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache \ 40 --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH:$out/lib/girepository-1.0" \ 41 --prefix GIO_EXTRA_MODULES : "${lib.getLib dconf}/lib/gio/modules" \ 42 --set IBUS_COMPONENT_PATH "$out/share/ibus/component/" \ 43 --set IBUS_DATAROOTDIR "$out/share" \ 44 --set IBUS_LIBEXECDIR "$out/libexec" \ 45 --set IBUS_LOCALEDIR "$out/share/locale" \ 46 --set IBUS_PREFIX "$out" \ 47 --set IBUS_TABLE_BIN_PATH "$out/bin" \ 48 --set IBUS_TABLE_DATA_DIR "$out/share" \ 49 --set IBUS_TABLE_LIB_LOCATION "$out/libexec" \ 50 --set IBUS_TABLE_LOCATION "$out/share/ibus-table" \ 51 --prefix PYTHONPATH : "$PYTHONPATH" \ 52 --prefix XDG_DATA_DIRS : "$out/share:$GSETTINGS_SCHEMAS_PATH" \ 53 --suffix XDG_DATA_DIRS : "${hicolor-icon-theme}/share" 54 done 55 56 for prog in ibus-daemon; do 57 wrapProgram "$out/bin/$prog" \ 58 --set GDK_PIXBUF_MODULE_FILE ${librsvg.out}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache \ 59 --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH:$out/lib/girepository-1.0" \ 60 --prefix GIO_EXTRA_MODULES : "${lib.getLib dconf}/lib/gio/modules" \ 61 --set IBUS_COMPONENT_PATH "$out/share/ibus/component/" \ 62 --set IBUS_DATAROOTDIR "$out/share" \ 63 --set IBUS_LIBEXECDIR "$out/libexec" \ 64 --set IBUS_LOCALEDIR "$out/share/locale" \ 65 --set IBUS_PREFIX "$out" \ 66 --set IBUS_TABLE_BIN_PATH "$out/bin" \ 67 --set IBUS_TABLE_DATA_DIR "$out/share" \ 68 --set IBUS_TABLE_LIB_LOCATION "$out/libexec" \ 69 --set IBUS_TABLE_LOCATION "$out/share/ibus-table" \ 70 --prefix PYTHONPATH : "$PYTHONPATH" \ 71 --prefix XDG_DATA_DIRS : "$out/share:$GSETTINGS_SCHEMAS_PATH" \ 72 --suffix XDG_DATA_DIRS : "${hicolor-icon-theme}/share" \ 73 --add-flags "--cache=refresh" 74 done 75 76 ibusPackage="${ibus}" 77 78 # Update services. 79 for service in \ 80 "share/dbus-1/services/org.freedesktop.IBus.service" \ 81 "share/systemd/user/org.freedesktop.IBus.session.generic.service" \ 82 "share/systemd/user/org.freedesktop.IBus.session.GNOME.service" 83 do 84 unlink "$out/$service" 85 substitute "$ibusPackage/$service" "$out/$service" --replace "$ibusPackage/bin" "$out/bin" 86 done 87 88 # Re-create relative symbolic links. 89 for link in \ 90 "$out/share/systemd/user/gnome-session.target.wants/"* 91 do 92 target="$link" 93 until [[ "''${target:0:1}" != "/" ]]; do 94 target="$(readlink "$target")" 95 done 96 unlink "$link" 97 ln -s "$target" "$link" 98 done 99 100 # Update absolute symbolic links. 101 for link in \ 102 "$out/lib/systemd/user" 103 do 104 target="$(readlink -f "$link")" 105 relativeTarget="''${target#$ibusPackage/}" 106 if [[ "$ibusPackage/$relativeTarget" != "$target" ]]; then 107 >&2 echo "File $link does not point to to a file in $ibusPackage" 108 exit 1 109 fi 110 unlink "$link" 111 ln -s "$out/$relativeTarget" "$link" 112 done 113 ''; 114 115 inherit (ibus) meta; 116}