summaryrefslogtreecommitdiffstats
path: root/pkgs/applications/audio/spotify/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/audio/spotify/default.nix')
-rw-r--r--pkgs/applications/audio/spotify/default.nix87
1 files changed, 72 insertions, 15 deletions
diff --git a/pkgs/applications/audio/spotify/default.nix b/pkgs/applications/audio/spotify/default.nix
index 874cc321f8be..59bea8fc1944 100644
--- a/pkgs/applications/audio/spotify/default.nix
+++ b/pkgs/applications/audio/spotify/default.nix
@@ -1,24 +1,64 @@
{ fetchurl, stdenv, dpkg, xlibs, qt4, alsaLib, makeWrapper, openssl, freetype
, glib, pango, cairo, atk, gdk_pixbuf, gtk, cups, nspr, nss, libpng, GConf
-, libgcrypt, chromium, sqlite, gst_plugins_base, gstreamer, udev }:
+, libgcrypt, chromium, sqlite, gst_plugins_base, gstreamer, udev, fontconfig
+, dbus, expat }:
assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux";
let
- version = "0.9.4.183";
+ version = if stdenv.system == "i686-linux"
+ then "0.9.4.183.g644e24e.428"
+ else "0.9.10.17.g4129e1c.78";
+
qt4webkit =
if stdenv.system == "i686-linux" then
fetchurl {
- name = "libqtwebkit4_2.2_i386.deb";
- url = http://mirrors.us.kernel.org/ubuntu/pool/main/q/qtwebkit-source/libqtwebkit4_2.2~2011week36-0ubuntu1_i386.deb;
+ name = "libqtwebkit4_2.3.2_i386.deb";
+ url = http://ie.archive.ubuntu.com/ubuntu/pool/main/q/qtwebkit-source/libqtwebkit4_2.3.2-0ubuntu7_i386.deb;
sha256 = "0hi6cwx2b2cwa4nv5phqqw526lc8p9x7kjkcza9x47ny3npw2924";
}
else
fetchurl {
- name = "libqtwebkit4_2.2_amd64.deb";
- url = http://ie.archive.ubuntu.com/ubuntu/pool/main/q/qtwebkit-source/libqtwebkit4_2.2~2011week36-0ubuntu1_amd64.deb;
- sha256 = "0bvy6qz9y19ck391z8c049v07y4vdyvgykpxi7x1nvn078p1imiw";
+ name = "libqtwebkit4_2.3.2_amd64.deb";
+ url = http://ie.archive.ubuntu.com/ubuntu/pool/main/q/qtwebkit-source/libqtwebkit4_2.3.2-0ubuntu7_amd64.deb;
+ sha256 = "0sac88avfivwkfhmd6fik7ili8fdznqas6741dbspf9mfnawbwch";
};
+
+ deps = [
+ alsaLib
+ atk
+ cairo
+ cups
+ dbus
+ expat
+ fontconfig
+ freetype
+ GConf
+ gdk_pixbuf
+ glib
+ gst_plugins_base
+ gstreamer
+ gtk
+ libgcrypt
+ libpng
+ nss
+ pango
+ qt4
+ sqlite
+ stdenv.gcc.gcc
+ xlibs.libX11
+ xlibs.libXcomposite
+ xlibs.libXdamage
+ xlibs.libXext
+ xlibs.libXfixes
+ xlibs.libXi
+ xlibs.libXrandr
+ xlibs.libXrender
+ xlibs.libXrender
+ xlibs.libXScrnSaver
+ #xlibs.libXss
+ ];
+
in
stdenv.mkDerivation {
@@ -27,13 +67,13 @@ stdenv.mkDerivation {
src =
if stdenv.system == "i686-linux" then
fetchurl {
- url = "http://repository.spotify.com/pool/non-free/s/spotify/spotify-client_${version}.g644e24e.428-1_i386.deb";
+ url = "http://repository.spotify.com/pool/non-free/s/spotify/spotify-client_${version}-1_i386.deb";
sha256 = "1wl6v5x8vm74h5lxp8fhvmih8l122aadsf1qxvpk0k3y6mbx0ifa";
}
else if stdenv.system == "x86_64-linux" then
fetchurl {
- url = "http://repository.spotify.com/pool/non-free/s/spotify/spotify-client_${version}.g644e24e.428-1_amd64.deb";
- sha256 = "1yniln6iswrrrny01qr2w5zcvam0vnrvy9mwbnk9i14i2ch0f3fx";
+ url = "http://repository.spotify.com/pool/non-free/s/spotify/spotify-client_${version}-1_amd64.deb";
+ sha256 = "1a4vn2ij3nghnc0fq3nsyb95gwhaw4zabdq6jd52hxz8iv31pn1z";
}
else throw "Spotify not supported on this platform.";
@@ -51,34 +91,51 @@ stdenv.mkDerivation {
# Work around Spotify referring to a specific minor version of
# OpenSSL.
mkdir $out/lib
- ln -s ${openssl}/lib/libssl.so $out/lib/libssl.so.0.9.8
- ln -s ${openssl}/lib/libcrypto.so $out/lib/libcrypto.so.0.9.8
+
ln -s ${nss}/lib/libnss3.so $out/lib/libnss3.so.1d
ln -s ${nss}/lib/libnssutil3.so $out/lib/libnssutil3.so.1d
ln -s ${nss}/lib/libsmime3.so $out/lib/libsmime3.so.1d
+
+ ${if stdenv.system == "x86_64-linux" then ''
+ ln -s ${openssl}/lib/libssl.so $out/lib/libssl.so.1.0.0
+ ln -s ${openssl}/lib/libcrypto.so $out/lib/libcrypto.so.1.0.0
+ ln -s ${nspr}/lib/libnspr4.so $out/lib/libnspr4.so
+ ln -s ${nspr}/lib/libplc4.so $out/lib/libplc4.so
+ '' else ''
+ ln -s ${openssl}/lib/libssl.so $out/lib/libssl.so.0.9.8
+ ln -s ${openssl}/lib/libcrypto.so $out/lib/libcrypto.so.0.9.8
ln -s ${nspr}/lib/libnspr4.so $out/lib/libnspr4.so.0d
ln -s ${nspr}/lib/libplc4.so $out/lib/libplc4.so.0d
+ ''}
# Work around Spotify trying to open libudev.so.0 (which we don't have)
ln -s ${udev}/lib/libudev.so.1 $out/lib/libudev.so.0
mkdir -p $out/bin
+ rpath="$out/spotify-client/Data:$out/lib:$out/spotify-client:${stdenv.gcc.gcc}/lib64"
+
ln -s $out/spotify-client/spotify $out/bin/spotify
+
+ patchelf \
+ --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
+ --set-rpath $rpath $out/spotify-client/spotify
+
patchelf \
--interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
- --set-rpath $out/spotify-client/Data:$out/lib:$out/spotify-client:${stdenv.lib.makeLibraryPath [ xlibs.libXScrnSaver xlibs.libX11 qt4 alsaLib stdenv.gcc.gcc freetype glib pango cairo atk gdk_pixbuf gtk GConf cups sqlite xlibs.libXdamage ]}:${stdenv.gcc.gcc}/lib64 \
- $out/spotify-client/spotify
+ --set-rpath $rpath $out/spotify-client/Data/SpotifyHelper
dpkg-deb -x ${qt4webkit} ./
mkdir -p $out/lib/
cp -v usr/lib/*/* $out/lib/
preload=$out/libexec/spotify/libpreload.so
+ librarypath="${stdenv.lib.makeLibraryPath deps}:$out/lib"
mkdir -p $out/libexec/spotify
gcc -shared ${./preload.c} -o $preload -ldl -DOUT=\"$out\" -fPIC
- wrapProgram $out/bin/spotify --set LD_PRELOAD $preload --prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ GConf libpng cups libgcrypt sqlite gst_plugins_base gstreamer xlibs.libXdamage ]}:$out/lib"
+ wrapProgram $out/bin/spotify --set LD_PRELOAD $preload --prefix LD_LIBRARY_PATH : "$librarypath"
+ wrapProgram $out/spotify-client/Data/SpotifyHelper --set LD_PRELOAD $preload --prefix LD_LIBRARY_PATH : "$librarypath"
# Desktop file
mkdir -p "$out/share/applications/"