diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-05-27 01:00:04 +0200 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-05-27 01:06:54 +0200 |
commit | a0072b4d2d4233d29ba6456d20f1d87070fcfad2 (patch) | |
tree | 669a82bfbeaaae168f424d694a7e33e01093828c /pkgs/applications/networking/instant-messengers/hipchat | |
parent | 481f4286048ae8b38edad39441df36ec42322f4d (diff) | |
download | nixpkgs-a0072b4d2d4233d29ba6456d20f1d87070fcfad2.tar nixpkgs-a0072b4d2d4233d29ba6456d20f1d87070fcfad2.tar.gz nixpkgs-a0072b4d2d4233d29ba6456d20f1d87070fcfad2.tar.bz2 nixpkgs-a0072b4d2d4233d29ba6456d20f1d87070fcfad2.tar.lz nixpkgs-a0072b4d2d4233d29ba6456d20f1d87070fcfad2.tar.xz nixpkgs-a0072b4d2d4233d29ba6456d20f1d87070fcfad2.tar.zst nixpkgs-a0072b4d2d4233d29ba6456d20f1d87070fcfad2.zip |
hipchat: Fix access to /usr/share/X11/xkb
HipChat (or rather its copy of Qt) expects to find keyboard data in /usr/share/X11/xkb. So use a LD_PRELOAD library to intercept and rewrite the Glibc calls that access those paths. We've been doing the same thing with packages like Spotify, but now this functionality has been abstracted into a reusable library, libredirect.so. It uses an environment variable $NIX_REDIRECTS containing a colon-separated list of path prefixes to be rewritten, e.g. "/foo=bar:/xyzzy=/fnord".
Diffstat (limited to 'pkgs/applications/networking/instant-messengers/hipchat')
-rw-r--r-- | pkgs/applications/networking/instant-messengers/hipchat/default.nix | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/pkgs/applications/networking/instant-messengers/hipchat/default.nix b/pkgs/applications/networking/instant-messengers/hipchat/default.nix index 857f162d7e4..6da12905f56 100644 --- a/pkgs/applications/networking/instant-messengers/hipchat/default.nix +++ b/pkgs/applications/networking/instant-messengers/hipchat/default.nix @@ -1,6 +1,7 @@ { stdenv, fetchurl, libtool, xlibs, freetype, fontconfig, openssl, glib , mesa, gstreamer, gst_plugins_base, dbus, alsaLib, zlib, libuuid -, libxml2, libxslt, sqlite, libogg, libvorbis, xz, libcanberra, makeWrapper }: +, libxml2, libxslt, sqlite, libogg, libvorbis, xz, libcanberra +, makeWrapper, libredirect, xkeyboard_config }: let @@ -67,8 +68,8 @@ stdenv.mkDerivation { buildCommand = '' tar xf ${src} - d=$out/libexec/hipchat - mkdir -p $out/libexec + mkdir -p $out/libexec/hipchat/bin + d=$out/libexec/hipchat/lib rm -rfv opt/HipChat/lib/{libstdc++*,libz*,libuuid*,libxml2*,libxslt*,libsqlite*,libogg*,libvorbis*,liblzma*,libcanberra.*,libcanberra-*} mv opt/HipChat/lib/ $d mv usr/share $out @@ -85,9 +86,11 @@ stdenv.mkDerivation { makeWrapper $d/hipchat.bin $out/bin/hipchat \ --set HIPCHAT_LD_LIBRARY_PATH '"$LD_LIBRARY_PATH"' \ - --set HIPCHAT_QT_PLUGIN_PATH '"$QT_PLUGIN_PATH"' + --set HIPCHAT_QT_PLUGIN_PATH '"$QT_PLUGIN_PATH"' \ + --set LD_PRELOAD "${libredirect}/lib/libredirect.so" \ + --set NIX_REDIRECTS /usr/share/X11/xkb=${xkeyboard_config}/share/X11/xkb - mv opt/HipChat/bin/linuxbrowserlaunch $out/bin + mv opt/HipChat/bin/linuxbrowserlaunch $out/libexec/hipchat/bin/ ''; meta = { |