From 22faf646f1f71695557f74d8144a5743c484b3c9 Mon Sep 17 00:00:00 2001 From: Raymond Gauthier Date: Tue, 28 Apr 2015 00:18:00 -0400 Subject: Improvements to the clementine package. - Pass the gstreamer plugins as a list attribute instead of individual attributes. + This should allow for greater customization (e.g.: a user can add / remove plugins by overriding the plugin list attribute). This is the same technique as used for wrapping chrome with gstreamer plugins. - Moved integration of gstreamer plugins, spotify library and clementine into a wrapper derivation. + This should allow a user to change the gstreamer plugin set and activate / deactivate the spotify plugin without triggering a whole rebuild of the clementine sources (which is pretty long). --- pkgs/applications/audio/clementine/default.nix | 112 +++++++++++++++---------- 1 file changed, 70 insertions(+), 42 deletions(-) (limited to 'pkgs/applications/audio/clementine/default.nix') diff --git a/pkgs/applications/audio/clementine/default.nix b/pkgs/applications/audio/clementine/default.nix index 857aa2edaf5e..f3d0eb3f8347 100644 --- a/pkgs/applications/audio/clementine/default.nix +++ b/pkgs/applications/audio/clementine/default.nix @@ -1,60 +1,88 @@ { stdenv, fetchurl, boost, cmake, gettext, gstreamer, gst_plugins_base -, gst_plugins_good, gst_plugins_bad, gst_plugins_ugly, gst_ffmpeg , liblastfm, qt4, taglib, fftw, glew, qjson, sqlite, libgpod, libplist , usbmuxd, libmtp, gvfs, libcdio, protobuf, libspotify, qca2, pkgconfig -, sparsehash, config, makeWrapper }: +, sparsehash, config, makeWrapper, gst_plugins }: + +let + version = "1.2.3"; + + withSpotify = config.clementine.spotify or false; + + wrappedExeName = "clementine"; + + wrapped = stdenv.mkDerivation { + name = "clementine-wrapped-${version}"; + + src = fetchurl { + url = https://github.com/clementine-player/Clementine/archive/1.2.3.tar.gz; + sha256 = "1gx1109i4pylz6x7gvp4rdzc6dvh0w6in6hfbygw01d08l26bxbx"; + }; + + patches = [ ./clementine-1.2.1-include-paths.patch ]; + + buildInputs = [ + boost + cmake + fftw + gettext + glew + gst_plugins_base + gstreamer + gvfs + libcdio + libgpod + liblastfm + libmtp + libplist + pkgconfig + protobuf + qca2 + qjson + qt4 + sparsehash + sqlite + taglib + usbmuxd + ]; + + enableParallelBuilding = true; + }; -let withSpotify = config.clementine.spotify or false; in + stdenv.mkDerivation { - name = "clementine-1.2.3"; + name = "clementine-${version}"; - src = fetchurl { - url = https://github.com/clementine-player/Clementine/archive/1.2.3.tar.gz; - sha256 = "1gx1109i4pylz6x7gvp4rdzc6dvh0w6in6hfbygw01d08l26bxbx"; - }; + src = ./.; - patches = [ ./clementine-1.2.1-include-paths.patch ]; buildInputs = [ - boost - cmake - fftw - gettext - glew - gst_plugins_base - gst_plugins_good - gst_plugins_ugly - gst_ffmpeg - gstreamer - gvfs - libcdio - libgpod - liblastfm - libmtp - libplist + wrapped makeWrapper - pkgconfig - protobuf - qca2 - qjson - qt4 - sparsehash - sqlite - taglib - usbmuxd - ] ++ stdenv.lib.optional withSpotify libspotify; - - enableParallelBuilding = true; - - postInstall = '' - wrapProgram $out/bin/clementine \ - --set GST_PLUGIN_SYSTEM_PATH "$GST_PLUGIN_SYSTEM_PATH" + ] ++ gst_plugins + ++ stdenv.lib.optional withSpotify libspotify; + + installPhase = '' + mkdir -p $out + cp -a ${wrapped}/* $out + chmod -R u+w-t $out + + wrapProgram "$out/bin/${wrappedExeName}" \ + --prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH" ''; + preferLocalBuild = true; + dontPatchELF = true; + dontStrip = true; + meta = with stdenv.lib; { homepage = "http://www.clementine-player.org"; - description = "A multiplatform music player"; + description = "A multiplatform music player" + + " (" + + concatStrings (optionals (withSpotify) ["with spotify, "]) + + "with gstreamer plugins: " + + concatStrings (intersperse ", " (map (x: x.name) gst_plugins)) + + ")"; license = licenses.gpl3Plus; platforms = platforms.linux; maintainers = [ maintainers.ttuegel ]; -- cgit 1.4.1