diff options
author | Jan Tojnar <jtojnar@gmail.com> | 2022-06-08 16:09:32 +0200 |
---|---|---|
committer | Jan Tojnar <jtojnar@gmail.com> | 2022-06-08 18:37:41 +0200 |
commit | 8ce001f6a262382c474dd503129aab5098e4a7d6 (patch) | |
tree | 5be209e0f2e181e027d0ccdc57a3950ac49589df /pkgs/tools/inputmethods | |
parent | 987ab3eff1cc8b60edb521ed212ac3eacf15d10d (diff) |
ibus-with-plugins: Fix service paths
They need to point to the wrapped programs for IBus to be able to find the engines.
Diffstat (limited to 'pkgs/tools/inputmethods')
-rw-r--r-- | pkgs/tools/inputmethods/ibus/wrapper.nix | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/pkgs/tools/inputmethods/ibus/wrapper.nix b/pkgs/tools/inputmethods/ibus/wrapper.nix index d05fdfd5bd7d0..c1328fbe984a7 100644 --- a/pkgs/tools/inputmethods/ibus/wrapper.nix +++ b/pkgs/tools/inputmethods/ibus/wrapper.nix @@ -19,6 +19,11 @@ buildEnv { "/lib" "/libexec" "/share" + # Need to link contents so that the directories are writeable. + "/lib/systemd" + "/share/dbus-1/services" + "/share/systemd/user" + "/share/systemd/user/gnome-session.target.wants" ]; nativeBuildInputs = [ @@ -66,6 +71,44 @@ buildEnv { --suffix XDG_DATA_DIRS : "${hicolor-icon-theme}/share" \ --add-flags "--cache=refresh" done + + ibusPackage="${ibus}" + + # Update services. + for service in \ + "share/dbus-1/services/org.freedesktop.IBus.service" \ + "share/systemd/user/org.freedesktop.IBus.session.generic.service" \ + "share/systemd/user/org.freedesktop.IBus.session.GNOME.service" + do + unlink "$out/$service" + substitute "$ibusPackage/$service" "$out/$service" --replace "$ibusPackage/bin" "$out/bin" + done + + # Re-create relative symbolic links. + for link in \ + "$out/share/systemd/user/gnome-session.target.wants/"* + do + target="$link" + until [[ "''${target:0:1}" != "/" ]]; do + target="$(readlink "$target")" + done + unlink "$link" + ln -s "$target" "$link" + done + + # Update absolute symbolic links. + for link in \ + "$out/lib/systemd/user" + do + target="$(readlink -f "$link")" + relativeTarget="''${target#$ibusPackage/}" + if [[ "$ibusPackage/$relativeTarget" != "$target" ]]; then + >&2 echo "File $link does not point to to a file in $ibusPackage" + exit 1 + fi + unlink "$link" + ln -s "$out/$relativeTarget" "$link" + done ''; inherit (ibus) meta; |