{ lib, stdenv, fetchurl, ocaml, findlib, topkg, ocamlbuild, cmdliner, odoc, b0, }: { pname, version, nativeBuildInputs ? [ ], buildInputs ? [ ], ... }@args: lib.throwIf (args ? minimalOCamlVersion && lib.versionOlder ocaml.version args.minimalOCamlVersion) "${pname}-${version} is not available for OCaml ${ocaml.version}" stdenv.mkDerivation ( { dontAddStaticConfigureFlags = true; configurePlatforms = [ ]; strictDeps = true; inherit (topkg) buildPhase installPhase; } // (builtins.removeAttrs args [ "minimalOCamlVersion" ]) // { name = "ocaml${ocaml.version}-${pname}-${version}"; nativeBuildInputs = [ ocaml findlib ocamlbuild topkg ] ++ nativeBuildInputs; buildInputs = [ topkg ] ++ buildInputs; meta = (args.meta or { }) // { platforms = args.meta.platforms or ocaml.meta.platforms; }; } )