From 5d795355a0eba0c2cc0a8ccf0d204a3d631637ca Mon Sep 17 00:00:00 2001 From: Michael Weiss Date: Fri, 1 Jun 2018 14:22:07 +0200 Subject: [PATCH] signal-desktop: Fix a possible crash when saving an attachment If executed in a pure environment (nix-shell --pure) or depending on the `gtk3` version of the system Signal-Desktop was e.g. crashing when clicking on a PDF attachment (instead of showing the dialog to save a file). Using wrapGAppsHook and setting XDG_DATA_DIRS to the correct version fixes this bug. The error message was the following: ``` (signal-desktop:30756): Gtk-WARNING **: 14:04:49.073: Could not find the icon 'user-home-symbolic-ltr'. The 'hicolor' theme was not found either, perhaps you need to install it. You can get a copy from: http://icon-theme.freedesktop.org/releases (signal-desktop:30756): GLib-GIO-ERROR **: 14:04:49.134: No GSettings schemas are installed on the system Trace/breakpoint trap ``` --- .../instant-messengers/signal-desktop/default.nix | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix b/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix index da862b715147..fa31b19e6e2c 100644 --- a/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix +++ b/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchurl, dpkg, gnome3, gtk3, atk, cairo, pango, gdk_pixbuf, glib, freetype, +{ stdenv, lib, fetchurl, dpkg, wrapGAppsHook, gnome3, gtk3, atk, cairo, pango, gdk_pixbuf, glib, freetype, fontconfig, dbus, libX11, xorg, libXi, libXcursor, libXdamage, libXrandr, libXcomposite, libXext, libXfixes, libXrender, libXtst, libXScrnSaver, nss, nspr, alsaLib, cups, expat, udev @@ -52,7 +52,7 @@ in throw "Signal for Desktop is not currently supported on ${stdenv.system}"; phases = [ "unpackPhase" "installPhase" ]; - nativeBuildInputs = [ dpkg ]; + nativeBuildInputs = [ dpkg wrapGAppsHook ]; unpackPhase = "dpkg-deb -x $src ."; installPhase = '' mkdir -p $out @@ -67,6 +67,9 @@ in # Patch signal patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ --set-rpath ${rpath}:$out/libexec $out/libexec/signal-desktop + wrapProgram $out/libexec/signal-desktop \ + --prefix XDG_DATA_DIRS : "${gtk3}/share/gsettings-schemas/${gtk3.name}/" \ + "''${gappsWrapperArgs[@]}" # Symlink to bin mkdir -p $out/bin