{ lib, stdenv
, fetchFromGitHub
, useMpi ? false
, mpi
}:

stdenv.mkDerivation rec {
  pname = "RAxML${lib.optionalString useMpi "-mpi"}";
  version = "8.2.13";

  src = fetchFromGitHub {
    owner = "stamatak";
    repo = "standard-RAxML";
    rev = "v${version}";
    sha256 = "sha256-w+Eqi0GhVira1H6ZnMNeZGBMzDjiGT7JSFpQEVXONyk=";
  };

  buildInputs = lib.optionals useMpi [ mpi ];

  # TODO darwin, AVX and AVX2 makefile targets
  buildPhase = if useMpi then ''
      make -f Makefile.MPI.gcc
    '' else ''
      make -f Makefile.SSE3.PTHREADS.gcc
    '';

  installPhase = if useMpi then ''
    mkdir -p $out/bin && cp raxmlHPC-MPI $out/bin
  '' else ''
    mkdir -p $out/bin && cp raxmlHPC-PTHREADS-SSE3 $out/bin
  '';

  meta = with lib; {
    description = "Tool for Phylogenetic Analysis and Post-Analysis of Large Phylogenies";
    license = licenses.gpl3;
    homepage = "https://sco.h-its.org/exelixis/web/software/raxml/";
    maintainers = [ maintainers.unode ];
    platforms = [ "i686-linux" "x86_64-linux" ];
  };
}
