forked from mirrors/nixpkgs
9842c4b107
Idea shamelessly stolen from 4e60b0efae
.
I realized that I don't really know anymore where I'm listed as maintainer and what
I'm actually (co)-maintaining which means that I can't proactively take
care of packages I officially maintain.
As I don't have the time, energy and motivation to take care of stuff I
was interested in 1 or 2 years ago (or packaged for someone else in the
past), I decided that I make this explicit by removing myself from several
packages and adding myself in some other stuff I'm now interested in.
I've seen it several times now that people remove themselves from a
package without removing the package if it's unmaintained after that
which is why I figured that it's fine in my case as the affected pkgs
are rather low-prio and were pretty easy to maintain.
166 lines
5.2 KiB
Nix
166 lines
5.2 KiB
Nix
{ fetchurl, stdenv, squashfsTools, xorg, alsaLib, makeWrapper, openssl, freetype
|
|
, glib, pango, cairo, atk, gdk-pixbuf, gtk2, cups, nspr, nss, libpng, libnotify
|
|
, libgcrypt, systemd, fontconfig, dbus, expat, ffmpeg_3, curl, zlib, gnome3
|
|
, at-spi2-atk, at-spi2-core, libpulseaudio
|
|
}:
|
|
|
|
let
|
|
# TO UPDATE: just execute the ./update.sh script (won't do anything if there is no update)
|
|
# "rev" decides what is actually being downloaded
|
|
# If an update breaks things, one of those might have valuable info:
|
|
# https://aur.archlinux.org/packages/spotify/
|
|
# https://community.spotify.com/t5/Desktop-Linux
|
|
version = "1.1.10.546.ge08ef575-19";
|
|
# To get the latest stable revision:
|
|
# curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/spotify?channel=stable' | jq '.download_url,.version,.last_updated'
|
|
# To get general information:
|
|
# curl -H 'Snap-Device-Series: 16' 'https://api.snapcraft.io/v2/snaps/info/spotify' | jq '.'
|
|
# More examples of api usage:
|
|
# https://github.com/canonical-websites/snapcraft.io/blob/master/webapp/publisher/snaps/views.py
|
|
rev = "36";
|
|
|
|
|
|
deps = [
|
|
alsaLib
|
|
atk
|
|
at-spi2-atk
|
|
at-spi2-core
|
|
cairo
|
|
cups
|
|
curl
|
|
dbus
|
|
expat
|
|
ffmpeg_3
|
|
fontconfig
|
|
freetype
|
|
gdk-pixbuf
|
|
glib
|
|
gtk2
|
|
libgcrypt
|
|
libnotify
|
|
libpng
|
|
libpulseaudio
|
|
nss
|
|
pango
|
|
stdenv.cc.cc
|
|
systemd
|
|
xorg.libX11
|
|
xorg.libXcomposite
|
|
xorg.libXcursor
|
|
xorg.libXdamage
|
|
xorg.libXext
|
|
xorg.libXfixes
|
|
xorg.libXi
|
|
xorg.libXrandr
|
|
xorg.libXrender
|
|
xorg.libXScrnSaver
|
|
xorg.libXtst
|
|
xorg.libxcb
|
|
zlib
|
|
];
|
|
|
|
in
|
|
|
|
stdenv.mkDerivation {
|
|
pname = "spotify";
|
|
inherit version;
|
|
|
|
# fetch from snapcraft instead of the debian repository most repos fetch from.
|
|
# That is a bit more cumbersome. But the debian repository only keeps the last
|
|
# two versions, while snapcraft should provide versions indefinately:
|
|
# https://forum.snapcraft.io/t/how-can-a-developer-remove-her-his-app-from-snap-store/512
|
|
|
|
# This is the next-best thing, since we're not allowed to re-distribute
|
|
# spotify ourselves:
|
|
# https://community.spotify.com/t5/Desktop-Linux/Redistribute-Spotify-on-Linux-Distributions/td-p/1695334
|
|
src = fetchurl {
|
|
url = "https://api.snapcraft.io/api/v1/snaps/download/pOBIoZ2LrCB3rDohMxoYGnbN14EHOgD7_${rev}.snap";
|
|
sha512 = "c49f1a86a9b737e64a475bbe62754a36f607669e908eb725a2395f0a0a6b95968e0c8ce27ab2c8b6c92fe8cbacb1ef58de11c79b92dc0f58c2c6d3a140706a1f";
|
|
};
|
|
|
|
buildInputs = [ squashfsTools makeWrapper ];
|
|
|
|
dontStrip = true;
|
|
dontPatchELF = true;
|
|
|
|
unpackPhase = ''
|
|
runHook preUnpack
|
|
unsquashfs "$src" '/usr/share/spotify' '/usr/bin/spotify' '/meta/snap.yaml'
|
|
cd squashfs-root
|
|
if ! grep -q 'grade: stable' meta/snap.yaml; then
|
|
# Unfortunately this check is not reliable: At the moment (2018-07-26) the
|
|
# latest version in the "edge" channel is also marked as stable.
|
|
echo "The snap package is marked as unstable:"
|
|
grep 'grade: ' meta/snap.yaml
|
|
echo "You probably chose the wrong revision."
|
|
exit 1
|
|
fi
|
|
if ! grep -q '${version}' meta/snap.yaml; then
|
|
echo "Package version differs from version found in snap metadata:"
|
|
grep 'version: ' meta/snap.yaml
|
|
echo "While the nix package specifies: ${version}."
|
|
echo "You probably chose the wrong revision or forgot to update the nix version."
|
|
exit 1
|
|
fi
|
|
runHook postUnpack
|
|
'';
|
|
|
|
installPhase =
|
|
''
|
|
runHook preInstall
|
|
|
|
libdir=$out/lib/spotify
|
|
mkdir -p $libdir
|
|
mv ./usr/* $out/
|
|
|
|
cp meta/snap.yaml $out
|
|
|
|
# Work around Spotify referring to a specific minor version of
|
|
# OpenSSL.
|
|
|
|
ln -s ${openssl.out}/lib/libssl.so $libdir/libssl.so.1.0.0
|
|
ln -s ${openssl.out}/lib/libcrypto.so $libdir/libcrypto.so.1.0.0
|
|
ln -s ${nspr.out}/lib/libnspr4.so $libdir/libnspr4.so
|
|
ln -s ${nspr.out}/lib/libplc4.so $libdir/libplc4.so
|
|
|
|
ln -s ${ffmpeg_3.out}/lib/libavcodec.so* $libdir
|
|
ln -s ${ffmpeg_3.out}/lib/libavformat.so* $libdir
|
|
|
|
rpath="$out/share/spotify:$libdir"
|
|
|
|
patchelf \
|
|
--interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
|
--set-rpath $rpath $out/share/spotify/spotify
|
|
|
|
librarypath="${stdenv.lib.makeLibraryPath deps}:$libdir"
|
|
wrapProgram $out/share/spotify/spotify \
|
|
--prefix LD_LIBRARY_PATH : "$librarypath" \
|
|
--prefix PATH : "${gnome3.zenity}/bin"
|
|
|
|
# fix Icon line in the desktop file (#48062)
|
|
sed -i "s:^Icon=.*:Icon=spotify-client:" "$out/share/spotify/spotify.desktop"
|
|
|
|
# Desktop file
|
|
mkdir -p "$out/share/applications/"
|
|
cp "$out/share/spotify/spotify.desktop" "$out/share/applications/"
|
|
|
|
# Icons
|
|
for i in 16 22 24 32 48 64 128 256 512; do
|
|
ixi="$i"x"$i"
|
|
mkdir -p "$out/share/icons/hicolor/$ixi/apps"
|
|
ln -s "$out/share/spotify/icons/spotify-linux-$i.png" \
|
|
"$out/share/icons/hicolor/$ixi/apps/spotify-client.png"
|
|
done
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
meta = with stdenv.lib; {
|
|
homepage = https://www.spotify.com/;
|
|
description = "Play music from the Spotify music service";
|
|
license = licenses.unfree;
|
|
maintainers = with maintainers; [ eelco ftrvxmtrx sheenobu mudri timokau ma27 ];
|
|
platforms = [ "x86_64-linux" ];
|
|
};
|
|
}
|