summary refs log tree commit diff
path: root/pkgs/applications/networking/instant-messengers/hipchat
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2014-05-27 01:00:04 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2014-05-27 01:06:54 +0200
commita0072b4d2d4233d29ba6456d20f1d87070fcfad2 (patch)
tree669a82bfbeaaae168f424d694a7e33e01093828c /pkgs/applications/networking/instant-messengers/hipchat
parent481f4286048ae8b38edad39441df36ec42322f4d (diff)
downloadnixpkgs-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.nix13
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 = {