diff --git a/pkgs/applications/audio/exaile/default.nix b/pkgs/applications/audio/exaile/default.nix new file mode 100644 index 00000000000..220a7c4eb3e --- /dev/null +++ b/pkgs/applications/audio/exaile/default.nix @@ -0,0 +1,107 @@ +{ stdenv, lib, fetchFromGitHub +, gobject-introspection, makeWrapper, wrapGAppsHook +, gtk3, gst_all_1, python3 +, gettext, gnome, help2man, keybinder3, libnotify, librsvg, streamripper, udisks, webkitgtk +, iconTheme ? gnome.adwaita-icon-theme +, deviceDetectionSupport ? true +, documentationSupport ? true +, notificationSupport ? true +, scalableIconSupport ? true +, translationSupport ? true +, bpmCounterSupport ? false +, ipythonSupport ? false +, lastfmSupport ? false +, lyricsManiaSupport ? false +, lyricsWikiSupport ? false +, multimediaKeySupport ? false +, musicBrainzSupport ? false +, podcastSupport ? false +, streamripperSupport ? false +, wikipediaSupport ? false +, fetchpatch +}: + +stdenv.mkDerivation rec { + pname = "exaile"; + version = "4.1.1"; + + src = fetchFromGitHub { + owner = "exaile"; + repo = pname; + rev = version; + sha256 = "0s29lm0i4slgaw5l5s9a2zx0b83xac43rnil5cvyi210dxm5s048"; + }; + patches = [ + (fetchpatch { + url = "https://github.com/exaile/exaile/pull/751.patch"; + sha256 = "sha256-jCJh85Z3HQcyS4ntQP5HwYJgM7WNHcWzjf0BdNJitsM="; + }) + ]; + + nativeBuildInputs = [ + gobject-introspection + makeWrapper + wrapGAppsHook + ] ++ lib.optionals documentationSupport [ + help2man + python3.pkgs.sphinx + python3.pkgs.sphinx_rtd_theme + ] ++ lib.optional translationSupport gettext; + + buildInputs = [ + iconTheme + gtk3 + ] ++ (with gst_all_1; [ + gstreamer + gst-plugins-base + gst-plugins-good + ]) ++ (with python3.pkgs; [ + bsddb3 + dbus-python + mutagen + pygobject3 + pycairo + gst-python + ]) ++ lib.optional deviceDetectionSupport udisks + ++ lib.optional notificationSupport libnotify + ++ lib.optional scalableIconSupport librsvg + ++ lib.optional bpmCounterSupport gst_all_1.gst-plugins-bad + ++ lib.optional ipythonSupport python3.pkgs.ipython + ++ lib.optional lastfmSupport python3.pkgs.pylast + ++ lib.optional (lyricsManiaSupport || lyricsWikiSupport) python3.pkgs.lxml + ++ lib.optional lyricsWikiSupport python3.pkgs.beautifulsoup4 + ++ lib.optional multimediaKeySupport keybinder3 + ++ lib.optional musicBrainzSupport python3.pkgs.musicbrainzngs + ++ lib.optional podcastSupport python3.pkgs.feedparser + ++ lib.optional wikipediaSupport webkitgtk; + + checkInputs = with python3.pkgs; [ + mox3 + pytest + ]; + + makeFlags = [ + "PREFIX=${placeholder "out"}" + ]; + + doCheck = true; + preCheck = '' + substituteInPlace Makefile --replace "PYTHONPATH=$(shell pwd)" "PYTHONPATH=$PYTHONPATH:$(shell pwd)" + export PYTEST="py.test" + export XDG_CACHE_HOME=$(mktemp -d) + ''; + + postInstall = '' + wrapProgram $out/bin/exaile \ + --set PYTHONPATH $PYTHONPATH \ + ${lib.optionalString streamripperSupport "--prefix PATH : ${lib.makeBinPath [ streamripper ]}"} + ''; + + meta = with lib; { + homepage = "https://www.exaile.org/"; + description = "A music player with a simple interface and powerful music management capabilities"; + license = licenses.gpl2Only; + maintainers = with maintainers; [ ryneeverett ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 519ffa277a1..0a30b941f17 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -24268,6 +24268,8 @@ with pkgs; evilpixie = libsForQt5.callPackage ../applications/graphics/evilpixie { }; + exaile = callPackage ../applications/audio/exaile { }; + exercism = callPackage ../applications/misc/exercism { }; expenses = callPackage ../applications/misc/expenses { };