{ stdenv, fetchurl, qt4, boost, protobuf, libsndfile
, speex, libopus, avahi, pkgconfig
, jackSupport ? false
, jackaudio ? null
, speechdSupport ? false
, speechd ? null
}:

assert jackSupport -> jackaudio != null;
assert speechdSupport -> speechd != null;

let
  optional = stdenv.lib.optional;
  optionalString = stdenv.lib.optionalString;
in
stdenv.mkDerivation rec {
  name = "mumble-" + version;
  version = "1.2.6";

  src = fetchurl {
    url = "mirror://sourceforge/mumble/${name}.tar.gz";
    sha256 = "1zxnbwbd81p7lvscghlpkad8kynh9gbf1nhc092sp64pp37xwv47";
  };

  patches = optional jackSupport ./mumble-jack-support.patch;

  configurePhase = ''
    qmake CONFIG+=no-g15 CONFIG+=no-update CONFIG+=no-server \
      CONFIG+=no-embed-qt-translations CONFIG+=packaged \
      CONFIG+=bundled-celt CONFIG+=no-bundled-opus \
      ${optionalString (!speechdSupport) "CONFIG+=no-speechd"} \
      ${optionalString jackSupport "CONFIG+=no-oss CONFIG+=no-alsa CONFIG+=jackaudio"} \
      CONFIG+=no-bundled-speex
  '';


  buildInputs = [ qt4 boost protobuf libsndfile speex
    libopus avahi pkgconfig ]
    ++ (optional jackSupport jackaudio)
    ++ (optional speechdSupport speechd);

  installPhase = ''
    mkdir -p $out
    cp -r ./release $out/bin
  '';

  meta = with stdenv.lib; { 
    homepage = "http://mumble.sourceforge.net/";
    description = "Low-latency, high quality voice chat software";
    license = licenses.bsd3;
    platforms = platforms.linux;
    maintainers = with maintainers; [ viric ];
  };
}
