{
  lib,
  boost,
  cmake,
  fetchFromGitHub,
  openssl,
  stdenv,
  enableOpenMP ? false,
}:
stdenv.mkDerivation (finalAttrs: {
  pname = "shark";
  version = "4.0-unstable-2024-05-25";

  src = fetchFromGitHub {
    owner = "Shark-ML";
    repo = "Shark";
    rev = "16a7cecf1c012ceaa406e3a5af54d1a6a47d5cda";
    hash = "sha256-xwniI2+Kry04zQqlYjMTp60O6YLibFy+Q/2CY0PHpqs=";
  };

  # https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/tree/develop/SuperBuild/patches/SHARK?ref_type=heads
  # patch of hdf5 seems to be not needed based on latest master branch of shark as HDF5 has been removed
  # c.f https://github.com/Shark-ML/Shark/commit/221c1f2e8abfffadbf3c5ef7cf324bc6dc9b4315
  patches = [ ./shark-2-ext-num-literals-all.diff ];

  # https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/blob/develop/SuperBuild/CMake/External_shark.cmake?ref_type=heads
  cmakeFlags = [
    "-DBUILD_SHARED_LIBS=ON"
    "-DBUILD_EXAMPLES=OFF"
    "-DBUILD_DOCS=OFF"
    "-DBUILD_TESTING=OFF"
    "-DENABLE_CBLAS=OFF"
  ] ++ lib.optionals (!enableOpenMP) [ "-DENABLE_OPENMP=OFF" ];
  buildInputs = [
    boost
    openssl
  ];

  nativeBuildInputs = [ cmake ];

  meta = {
    description = "Fast, modular, general open-source C++ machine learning library";
    homepage = "https://shark-ml.github.io/Shark/";
    license = lib.licenses.lgpl3Only;
    maintainers = with lib.maintainers; [ daspk04 ];
  };
})