From 987ab3eff1cc8b60edb521ed212ac3eacf15d10d Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Wed, 8 Jun 2022 15:46:08 +0200 Subject: ibus-with-plugins: switch to buildEnv No need to call lndir manually. --- pkgs/tools/inputmethods/ibus/wrapper.nix | 50 ++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 21 deletions(-) (limited to 'pkgs') diff --git a/pkgs/tools/inputmethods/ibus/wrapper.nix b/pkgs/tools/inputmethods/ibus/wrapper.nix index 93078325a0d20..d05fdfd5bd7d0 100644 --- a/pkgs/tools/inputmethods/ibus/wrapper.nix +++ b/pkgs/tools/inputmethods/ibus/wrapper.nix @@ -1,26 +1,33 @@ -{ lib, runCommand, makeWrapper, lndir -, dconf, hicolor-icon-theme, ibus, librsvg, plugins ? [] +{ lib +, buildEnv +, makeWrapper +, dconf +, hicolor-icon-theme +, ibus +, librsvg +, plugins ? [ ] }: -let +buildEnv { name = "ibus-with-plugins-" + lib.getVersion ibus; - env = { - buildInputs = [ ibus ] ++ plugins; - nativeBuildInputs = [ lndir makeWrapper ]; - propagatedUserEnvPackages = [ hicolor-icon-theme ]; - paths = [ ibus ] ++ plugins; - inherit (ibus) meta; - }; - command = '' - for dir in bin etc lib libexec share; do - mkdir -p "$out/$dir" - for pkg in $paths; do - if [ -d "$pkg/$dir" ]; then - lndir -silent "$pkg/$dir" "$out/$dir" - fi - done - done + paths = [ ibus ] ++ plugins; + + pathsToLink = [ + "/bin" + "/etc" + "/lib" + "/libexec" + "/share" + ]; + + nativeBuildInputs = [ + makeWrapper + ]; + + buildInputs = [ ibus ] ++ plugins; + + postBuild = '' for prog in ibus; do wrapProgram "$out/bin/$prog" \ --set GDK_PIXBUF_MODULE_FILE ${librsvg.out}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache \ @@ -60,5 +67,6 @@ let --add-flags "--cache=refresh" done ''; -in - runCommand name env command + + inherit (ibus) meta; +} -- cgit 1.4.1 From 8ce001f6a262382c474dd503129aab5098e4a7d6 Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Wed, 8 Jun 2022 16:09:32 +0200 Subject: ibus-with-plugins: Fix service paths They need to point to the wrapped programs for IBus to be able to find the engines. --- pkgs/tools/inputmethods/ibus/wrapper.nix | 43 ++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'pkgs') 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; -- cgit 1.4.1 From 5c641b41392090e2c3462a48aeb8d516b212c9c3 Mon Sep 17 00:00:00 2001 From: linj Date: Wed, 8 Jun 2022 16:33:58 +0800 Subject: ibus: patch sh to runtimeShell in ExecStart of systemd service --- pkgs/tools/inputmethods/ibus/default.nix | 2 ++ 1 file changed, 2 insertions(+) (limited to 'pkgs') diff --git a/pkgs/tools/inputmethods/ibus/default.nix b/pkgs/tools/inputmethods/ibus/default.nix index a791e90a93c43..3bcb5d01cf49e 100644 --- a/pkgs/tools/inputmethods/ibus/default.nix +++ b/pkgs/tools/inputmethods/ibus/default.nix @@ -90,6 +90,8 @@ stdenv.mkDerivation rec { postPatch = '' patchShebangs --build data/dconf/make-dconf-override-db.sh cp ${buildPackages.gtk-doc}/share/gtk-doc/data/gtk-doc.make . + substituteInPlace bus/services/org.freedesktop.IBus.session.GNOME.service.in --replace "ExecStart=sh" "ExecStart=${runtimeShell}" + substituteInPlace bus/services/org.freedesktop.IBus.session.generic.service.in --replace "ExecStart=sh" "ExecStart=${runtimeShell}" ''; preAutoreconf = "touch ChangeLog"; -- cgit 1.4.1