{ lib
, stdenv
, fetchFromGitHub
, cmake
, zlib
, openssl
, c-ares
, readline
, icu
, git
, gbenchmark
, nghttp2
}:

stdenv.mkDerivation rec {
  pname = "tarantool";
  version = "2.10.4";

  src = fetchFromGitHub {
    owner = "tarantool";
    repo = pname;
    rev = version;
    hash = "sha256-yCRU5IxC6gNS+O2KYtKWjFk35EHkBnnzWy5UnyuB9f4=";
    fetchSubmodules = true;
  };

  buildInputs = [
    nghttp2
    git
    readline
    icu
    zlib
    openssl
    c-ares
  ];

  nativeCheckInputs = [ gbenchmark ];

  nativeBuildInputs = [ cmake ];

  cmakeBuildType = "RelWithDebInfo";

  cmakeFlags = [
    "-DENABLE_DIST=ON"
    "-DTARANTOOL_VERSION=${version}.builtByNix" # expects the commit hash as well
  ];

  meta = with lib; {
    description = "In-memory computing platform consisting of a database and an application server";
    homepage = "https://www.tarantool.io/";
    license = licenses.bsd2;
    mainProgram = "tarantool";
    maintainers = with maintainers; [ dit7ya ];
  };
}