{ stdenv, fetchFromGitHub, makeWrapper, qmake, qt56 }:

stdenv.mkDerivation rec {
  name = "qgo-${version}";
  version = "unstable-2016-06-23";

  meta = with stdenv.lib; {
    description = "A Go client based on Qt5";
    longDescription = ''
      qGo is a Go Client based on Qt 5. It supports playing online at
      IGS-compatible servers (including some special tweaks for WING and LGS,
      also NNGS was reported to work) and locally against gnugo (or other
      GTP-compliant engines). It also has rudimentary support for editing SGF
      files and parital support for CyberORO/WBaduk, Tygem, Tom, and eWeiqi
      (developers of these backends are currently inactive, everybody is welcome
      to take them over).

      Go is an ancient Chinese board game. It's called "圍棋(Wei Qi)" in
      Chinese, "囲碁(Yi Go)" in Japanese, "바둑(Baduk)" in Korean.
    '';
    homepage = https://github.com/pzorin/qgo;
    license = licenses.gpl2;
    maintainers = with maintainers; [ zalakain ];
  };

  src = fetchFromGitHub {
    owner = "pzorin";
    repo = "qgo";
    rev = "1e65b0c74914e534ea4d040f8f0ef8908383e374";
    sha256 = "1xzkayclmhsi07p9mnbf8185jw8n5ikxp2mik3x8qz1i6rmrfl5b";
  };

  patches = [ ./fix-paths.patch ];
  postPatch = ''
    sed -i 's|@out@|'"''${out}"'|g' src/src.pro src/defines.h
  '';
  nativeBuildInputs = [ makeWrapper qmake ];
  # qt58 does not provide platform plugins
  # We need lib/qt*/plugins/platforms/libqxcb.so
  buildInputs = with qt56; [ qtbase.out qtmultimedia qttranslations ];
  enableParallelBuilding = true;
  postFixup = ''
    # libQt5XcbQpa is a platform plugin dependency and doesn't get linked
    patchelf --add-needed libQt5XcbQpa.so.5 $out/bin/qgo
    wrapProgram $out/bin/qgo \
      --set QT_QPA_PLATFORM_PLUGIN_PATH "${qt56.qtbase}/lib/qt-5.6/plugins/platforms/"
  '';
}
