{ stdenv, fetchFromGitHub , cmake, pkgconfig # Transport , curl # Libraries , boost , jsoncpp , libbsd , pcre # GUI/Desktop , dbus , glibmm , gnome3 , hicolor-icon-theme , libappindicator-gtk3 , libnotify , libxdg_basedir , wxGTK # GStreamer , gst_all_1 # User-agent info , lsb-release # rt2rtng , python2 # Testing , gmock # Fixup , wrapGAppsHook , makeWrapper }: let gstInputs = with gst_all_1; [ gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav ]; # For the rt2rtng utility for converting bookmark file to -ng format pythonInputs = with python2.pkgs; [ python2 lxml ]; in stdenv.mkDerivation rec { name = "radiotray-ng-${version}"; version = "0.2.1"; src = fetchFromGitHub { owner = "ebruck"; repo = "radiotray-ng"; rev = "v${version}"; sha256 = "0hqg6vn8hv5pic96klf1d9vj8fibrgiqnqb5vwrg3wvakx0y32kr"; }; nativeBuildInputs = [ cmake pkgconfig wrapGAppsHook makeWrapper ]; buildInputs = [ curl boost jsoncpp libbsd pcre glibmm hicolor-icon-theme gnome3.gsettings-desktop-schemas libappindicator-gtk3 libnotify libxdg_basedir lsb-release wxGTK ] ++ stdenv.lib.optional doCheck gmock ++ gstInputs ++ pythonInputs; prePatch = '' for x in debian/CMakeLists.txt include/radiotray-ng/common.hpp data/*.desktop; do substituteInPlace $x --replace /usr $out done # We don't find the radiotray-ng-notification icon otherwise substituteInPlace data/radiotray-ng.desktop \ --replace radiotray-ng-notification radiotray-ng-on substituteInPlace data/rtng-bookmark-editor.desktop \ --replace radiotray-ng-notification radiotray-ng-on ''; cmakeFlags = stdenv.lib.optional doCheck "-DBUILD_TESTS=ON"; enableParallelBuilding = true; doCheck = true; checkPhase = "ctest"; preFixup = '' gappsWrapperArgs+=(--suffix PATH : ${stdenv.lib.makeBinPath [ dbus ]}) wrapProgram $out/bin/rt2rtng --prefix PYTHONPATH : $PYTHONPATH ''; meta = with stdenv.lib; { description = "An internet radio player for linux"; homepage = https://github.com/ebruck/radiotray-ng; license = licenses.gpl3; maintainers = with maintainers; [ dtzWill ]; platforms = platforms.all; }; }