summary refs log tree commit diff
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.nix63
1 files changed, 63 insertions, 0 deletions
diff --git a/pkgs/applications/audio/spotify/default.nix b/pkgs/applications/audio/spotify/default.nix
new file mode 100644
index 000000000000..eb783e60fc5f
--- /dev/null
+++ b/pkgs/applications/audio/spotify/default.nix
@@ -0,0 +1,63 @@
+{ fetchurl, stdenv, dpkg, xlibs, qt4, alsaLib, makeWrapper }:
+
+assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux";
+
+let version = "0.5.2.84"; in
+
+stdenv.mkDerivation {
+  name = "spotify-${version}";
+
+  src =
+    if stdenv.system == "i686-linux" then 
+      fetchurl {
+        url = "http://repository.spotify.com/pool/non-free/s/spotify/spotify-client-qt_${version}.g6d797eb-1_i386.deb";
+        sha256 = "0l1pvvkkssng0yc7zlgxr39jx3cs6i71sspmm4xb84y1bl045pas";
+      }
+    else if stdenv.system == "x86_64-linux" then 
+      fetchurl {
+        url = "http://repository.spotify.com/pool/non-free/s/spotify/spotify-client-qt_${version}.g6d797eb-1_amd64.deb";
+        sha256 = "1wi1z3dyzjz13mkb0r2ilm914p8sg06923sv872nclrl102qbbni";
+      }
+    else throw "Spotify not supported on this platform.";
+
+  buildInputs = [ dpkg makeWrapper ];
+
+  unpackPhase = "true";
+  
+  installPhase =
+    ''
+      mkdir -p $out
+      dpkg-deb -x $src $out
+      mv $out/usr/* $out/
+      rmdir $out/usr
+
+      patchelf \
+        --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
+        --set-rpath ${stdenv.lib.makeLibraryPath [ xlibs.libXScrnSaver xlibs.libX11 qt4 alsaLib stdenv.gcc.gcc ]}:${stdenv.gcc.gcc}/lib64 \
+        $out/bin/spotify
+
+      preload=$out/libexec/spotify/libpreload.so
+      mkdir -p $out/libexec/spotify
+      gcc -shared ${./preload.c} -o $preload -ldl -DOUT=\"$out\" -fPIC
+
+      wrapProgram $out/bin/spotify --set LD_PRELOAD $preload
+    ''; # */
+
+  dontStrip = true;
+  dontPatchELF = true;
+
+  meta = {
+    homepage = https://www.spotify.com/download/previews/;
+    description = "Spotify for Linux allows you to play music from the Spotify music service";
+    license = "unfree";
+    maintainers = [ stdenv.lib.maintainers.eelco ];
+
+    longDescription =
+      ''
+        Spotify is a digital music streaming service.  This package
+        provides the Spotify client for Linux.  At present, it does not
+        work with free Spotify accounts; it requires a Premium or
+        Unlimited account.
+      '';
+  };
+}