{lib, stdenv, fetchFromGitHub, fetchpatch, cmake, boost, zlib, python2}:

stdenv.mkDerivation rec {
  pname = "strelka";
  version = "2.9.10";

  src = fetchFromGitHub {
    owner = "Illumina";
    repo = "strelka";
    rev = "v${version}";
    sha256 = "1nykbmim1124xh22nrhrsn8xgjb3s2y7akrdapn9sl1gdych4ppf";
  };

  patches = [
    # Pull pending fix for gcc-12:
    #   https://github.com/Illumina/strelka/pull/204
    (fetchpatch {
      name = "limits.patch";
      url = "https://github.com/Illumina/strelka/commit/98272cd345c6e4c672e6a5b7721204fcac0502d6.patch";
      hash = "sha256-psBiuN32nvwZ+QX51JQjIdRhEE3k7PfwbkD10ckqvZk=";
    })
  ];

  postPatch = ''
    substituteInPlace src/cmake/boost.cmake \
      --replace "1.58.0" "${boost.version}" \
      --replace "Boost_USE_STATIC_LIBS ON" "Boost_USE_STATIC_LIBS OFF"
  '';

  nativeBuildInputs = [ cmake ];
  buildInputs = [ boost zlib python2 ];

  cmakeFlags = [
    "-DCMAKE_CXX_STANDARD=14"
  ];

  env.NIX_CFLAGS_COMPILE = toString [
    "-Wno-error=maybe-uninitialized"
    "-Wno-error=pessimizing-move"
  ];

  preConfigure = ''
    sed -i 's|/usr/bin/env python|${python2}/bin/python|' src/python/lib/makeRunScript.py
    patchShebangs .
  '';

  postFixup = ''
    pushd $out/lib/python/pyflow
    sed -i 's|/bin/bash|${stdenv.shell}|' pyflowTaskWrapper.py
    rm pyflowTaskWrapper.pyc
    echo "import pyflowTaskWrapper" | python2
    popd
  '';

  meta = with lib; {
    description = "Germline and small variant caller";
    license = licenses.gpl3;
    homepage = "https://github.com/Illumina/strelka";
    maintainers = with maintainers; [ jbedo ];
    platforms = platforms.linux;
  };

}
