about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/ocaml-modules
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/ocaml-modules')
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/afl-persistent/default.nix2
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/awa/default.nix14
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/batteries/default.nix18
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/bin_prot/default.nix28
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/bistro/default.nix50
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/bitv/default.nix12
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/bolt/default.nix13
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/bz2/default.nix2
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/ca-certs-nss/default.nix8
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/calendar/default.nix18
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/carton/default.nix6
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/carton/git.nix2
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/carton/lwt.nix2
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/cil/default.nix10
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/coin/default.nix38
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/comparelib/default.nix12
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/conduit/default.nix4
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/config-file/default.nix9
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/containers/default.nix8
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/cryptokit/default.nix12
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/csv/1.5.nix10
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/ctypes/default.nix20
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/cudf/default.nix2
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/dolmen/default.nix3
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/dolog/default.nix19
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/dune-site/default.nix19
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/easy-format/default.nix20
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/eliom/default.nix45
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/elpi/default.nix13
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/enumerate/default.nix9
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/erm_xml/default.nix19
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/estring/default.nix21
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/faillib/default.nix28
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/fieldslib/default.nix29
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/fontconfig/default.nix6
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/fpath/default.nix8
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/genspio/default.nix2
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/gluten/default.nix34
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/gluten/lwt-unix.nix17
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/gluten/lwt.nix14
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/graphics/default.nix4
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/herelib/default.nix12
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/hidapi/default.nix2
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/higlo/default.nix24
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/higlo/install.patch14
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/inifiles/default.nix17
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/iri/default.nix24
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/iso8601/default.nix19
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/iter/default.nix6
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/0.14.nix20
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/async-rpc-kernel.nix18
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/bin_prot.nix17
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/buildOcamlJane.nix29
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/core_bench.nix20
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/fieldslib.nix19
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/js-build-tools-darwin.patch11
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/js-build-tools.nix31
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-assert.nix16
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-bench.nix18
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-bin-prot.nix14
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-compare.nix15
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-custom-printf.nix15
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-enumerate.nix14
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-expect.nix19
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-fields-conv.nix14
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-here.nix14
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-inline-test.nix14
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-jane.nix22
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-let.nix14
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-optcomp.nix15
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-pipebang.nix14
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-sexp-conv.nix14
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-sexp-message.nix14
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-sexp-value.nix14
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-typerep-conv.nix14
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-variants-conv.nix14
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/sexplib.nix18
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/typerep.nix20
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/janestreet/variantslib.nix19
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/javalib/default.nix22
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/junit/default.nix2
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/lablgl/default.nix34
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/lablgtk-extras/1.4.nix10
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/lablgtk-extras/default.nix14
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/lambdasoup/default.nix6
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/letsencrypt/app.nix2
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/letsencrypt/default.nix12
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/lwt/camlp4.nix2
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/lwt/default.nix15
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/lwt_ssl/default.nix10
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/macaque/default.nix18
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/magick/default.nix8
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/markup/default.nix10
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/mccs/default.nix2
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/mdx/default.nix4
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/menhir/default.nix2
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/menhir/lib.nix4
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/minisat/default.nix4
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/mirage-crypto/default.nix8
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/mirage-crypto/pk.nix4
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/mirage/runtime.nix4
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/mrmime/default.nix74
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/nonstd/default.nix2
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/ocaml-lsp/default.nix5
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/ocaml-lsp/jsonrpc.nix12
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/ocaml-migrate-parsetree/2.x.nix6
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/ocaml-text/default.nix25
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/ocaml-version/default.nix4
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/ocamlgraph/default.nix2
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/ocb-stubblr/default.nix8
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/ocf/default.nix33
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/ocf/ppx.nix14
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/ocplib-endian/default.nix10
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/ocsigen-deriving/default.nix50
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/ocsigen-start/default.nix2
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/ocurl/default.nix8
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/odn/default.nix16
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/odoc-parser/default.nix18
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/omd/default.nix8
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/optcomp/META12
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/optcomp/default.nix47
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/otr/default.nix12
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/pa_bench/default.nix23
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/pa_ounit/default.nix24
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/paf/default.nix18
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/paf/le.nix2
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/parany/default.nix4
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/phylogenetics/default.nix48
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/piaf/default.nix54
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/pipebang/default.nix12
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/ppx_cstubs/default.nix2
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/prettym/default.nix48
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/pycaml/default.nix13
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/react/default.nix11
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/reactivedata/default.nix18
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/reason-native/default.nix2
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/rosetta/default.nix34
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/sawja/default.nix16
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/sedlex/default.nix12
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/seq/default.nix2
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/sha/default.nix4
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/sodium/default.nix4
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/sosa/default.nix2
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/sqlite3EZ/default.nix17
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/tls/async.nix3
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/tls/default.nix10
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/twt/default.nix17
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/type_conv/108.08.00.nix15
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/type_conv/109.60.01.nix15
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/type_conv/112.01.01.nix2
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/typerep/default.nix23
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/uchar/default.nix9
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/uecc/default.nix2
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/unstrctrd/default.nix48
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/uuuu/default.nix40
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/variantslib/default.nix26
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/wayland/default.nix6
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/x509/default.nix8
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/xml-light/default.nix12
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/xtmpl/default.nix30
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/xtmpl/jsoo.patch26
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/xtmpl/ppx.nix14
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/yaml/default.nix6
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/yuscii/default.nix35
164 files changed, 1154 insertions, 1366 deletions
diff --git a/nixpkgs/pkgs/development/ocaml-modules/afl-persistent/default.nix b/nixpkgs/pkgs/development/ocaml-modules/afl-persistent/default.nix
index 5625cd95764f..ba266ade830e 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/afl-persistent/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/afl-persistent/default.nix
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
     sha256 = "06yyds2vcwlfr2nd3gvyrazlijjcrd1abnvkfpkaadgwdw3qam1i";
   };
 
-  buildInputs = [ ocaml findlib ];
+  nativeBuildInputs = [ ocaml findlib ];
 
   # don't run tests in buildPhase
   # don't overwrite test binary
diff --git a/nixpkgs/pkgs/development/ocaml-modules/awa/default.nix b/nixpkgs/pkgs/development/ocaml-modules/awa/default.nix
index 14f99bb6f8db..d870ab865053 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/awa/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/awa/default.nix
@@ -1,29 +1,30 @@
 { lib, buildDunePackage, fetchurl
 , ppx_sexp_conv, ppx_cstruct
 , mirage-crypto, mirage-crypto-rng, mirage-crypto-pk
-, x509, cstruct, cstruct-unix, cstruct-sexp, sexplib
+, x509, cstruct, cstruct-unix, cstruct-sexp, sexplib, eqaf
 , rresult, mtime, logs, fmt, cmdliner, base64, hacl_x25519
 , zarith
 }:
 
 buildDunePackage rec {
   pname = "awa";
-  version = "0.0.3";
+  version = "0.0.5";
 
   minimumOCamlVersion = "4.07";
   useDune2 = true;
 
   src = fetchurl {
-    url = "https://github.com/mirage/awa-ssh/releases/download/v${version}/awa-v${version}.tbz";
-    sha256 = "5a7927363ffe672cccf12d5425386e84f6f553a17ffec2b01ae5dc28180c831a";
+    url = "https://github.com/mirage/awa-ssh/releases/download/v${version}/awa-${version}.tbz";
+    sha256 = "14hqzmikp3hlynhs0wnwj2491106if183swsl7ldk4215a0b7ms4";
   };
 
-  nativeBuildInputs = [ ppx_sexp_conv ppx_cstruct ];
+  nativeBuildInputs = [ ppx_cstruct ];
 
   propagatedBuildInputs = [
     mirage-crypto mirage-crypto-rng mirage-crypto-pk x509
-    cstruct cstruct-sexp sexplib rresult mtime
+    cstruct cstruct-sexp sexplib mtime
     logs base64 hacl_x25519 zarith
+    ppx_sexp_conv eqaf
   ];
 
   doCheck = true;
@@ -33,6 +34,7 @@ buildDunePackage rec {
     description = "SSH implementation in OCaml";
     license = licenses.isc;
     homepage = "https://github.com/mirage/awa-ssh";
+    changelog = "https://github.com/mirage/awa-ssh/raw/v${version}/CHANGES.md";
     maintainers = [ maintainers.sternenseemann ];
   };
 }
diff --git a/nixpkgs/pkgs/development/ocaml-modules/batteries/default.nix b/nixpkgs/pkgs/development/ocaml-modules/batteries/default.nix
index b88b7c59956e..d2edb69e1b94 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/batteries/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/batteries/default.nix
@@ -1,15 +1,21 @@
-{ stdenv, lib, fetchurl, ocaml, findlib, ocamlbuild, qtest, num
+{ stdenv, lib, fetchFromGitHub, ocaml, findlib, ocamlbuild, qtest, num
 , doCheck ? lib.versionAtLeast ocaml.version "4.08" && !stdenv.isAarch64
 }:
 
-let version = "3.3.0"; in
+if !lib.versionAtLeast ocaml.version "4.02"
+then throw "batteries is not available for OCaml ${ocaml.version}"
+else
+
+let version = "3.4.0"; in
 
 stdenv.mkDerivation {
   name = "ocaml${ocaml.version}-batteries-${version}";
 
-  src = fetchurl {
-    url = "https://github.com/ocaml-batteries-team/batteries-included/releases/download/v${version}/batteries-${version}.tar.gz";
-    sha256 = "002pqkcg18zx59hsf172wg6s7lwsiagp5sfvf5yssp7xxal5jdgx";
+  src = fetchFromGitHub {
+    owner = "ocaml-batteries-team";
+    repo = "batteries-included";
+    rev = "v${version}";
+    sha256 = "sha256:1cd7475n1mxhq482aidmhh27mq5p2vmb8d9fkb1mlza9pz5z66yq";
   };
 
   buildInputs = [ ocaml findlib ocamlbuild ];
@@ -30,7 +36,7 @@ stdenv.mkDerivation {
       language.
     '';
     license = lib.licenses.lgpl21Plus;
-    platforms = ocaml.meta.platforms or [];
+    inherit (ocaml.meta) platforms;
     maintainers = [
       lib.maintainers.maggesi
     ];
diff --git a/nixpkgs/pkgs/development/ocaml-modules/bin_prot/default.nix b/nixpkgs/pkgs/development/ocaml-modules/bin_prot/default.nix
deleted file mode 100644
index 50ef935aff6b..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/bin_prot/default.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ lib, buildOcaml, fetchurl, ocaml, type_conv }:
-
-if lib.versionAtLeast ocaml.version "4.06"
-then throw "bin_prot-112.24.00 is not available for OCaml ${ocaml.version}"
-else
-
-buildOcaml rec {
-  name = "bin_prot";
-  version = "112.24.00";
-
-  minimumSupportedOcamlVersion = "4.00";
-
-  src = fetchurl {
-    url = "https://github.com/janestreet/bin_prot/archive/${version}.tar.gz";
-    sha256 = "dc0c978a825c7c123990af3317637c218f61079e6f35dc878260651084f1adb4";
-  };
-
-  propagatedBuildInputs = [ type_conv ];
-
-  hasSharedObjects = true;
-
-  meta = with lib; {
-    homepage = "https://github.com/janestreet/bin_prot";
-    description = "Binary protocol generator ";
-    license = licenses.asl20;
-    maintainers = [ maintainers.ericbmerritt ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/bistro/default.nix b/nixpkgs/pkgs/development/ocaml-modules/bistro/default.nix
index c63f3f796ae7..348d1bb97d47 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/bistro/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/bistro/default.nix
@@ -1,41 +1,43 @@
-{ lib, fetchFromGitHub, fetchpatch, buildDunePackage
-, base64, bos, core, lwt_react, ocamlgraph, rresult, tyxml
+{ lib
+, ocaml
+, fetchFromGitHub
+, buildDunePackage
+, base64
+, bos
+, core
+, lwt_react
+, ocamlgraph
+, ppx_sexp_conv
+, rresult
+, sexplib
+, tyxml
 }:
 
 buildDunePackage rec {
   pname = "bistro";
-  version = "0.5.0";
+  version = "unstable-2021-11-13";
 
   useDune2 = true;
 
   src = fetchFromGitHub {
     owner = "pveber";
     repo = pname;
-    rev = "v${version}";
-    sha256 = "114gq48cpj2mvycypa9lfyqqb26wa2gkdfwkcqhnx7m6sdwv9a38";
+    rev = "fb285b2c6d8adccda3c71e2293bceb01febd6624";
+    sha256 = "sha256-JChDU1WH8W9Czkppx9SHiVIu9/7QFWJy2A89oksp0Ek=";
   };
 
-  patches = [
-  # The following patch adds support for core.v0.13
-  (fetchpatch {
-    url = "https://github.com/pveber/bistro/commit/0931db43a146ad7829dff5120161a775f732a878.patch";
-    sha256 = "06y0sxbbab1mssc1xfjjv12lpv4rny5iqv9qkdqyzrvzpl1bdvnd";
-  })
-  # The following patch adds support for core.v0.14
-  (fetchpatch {
-    url = "https://github.com/pveber/bistro/commit/afbdcb2af7777ef7711c7f3c45dff605350a27b2.patch";
-    sha256 = "0ix6lx9qjnn3vqp0164c6l5an8b4rq69h2mxrg89piyk2g1yv0zg";
-  })
+  propagatedBuildInputs = [
+    base64
+    bos
+    core
+    lwt_react
+    ocamlgraph
+    ppx_sexp_conv
+    rresult
+    sexplib
+    tyxml
   ];
 
-  # Fix build with ppxlib 0.23
-  postPatch = ''
-    substituteInPlace ppx/ppx_bistro.ml \
-      --replace 'Parser.parse_expression' 'Ocaml_common.Parser.parse_expression'
-  '';
-
-  propagatedBuildInputs = [ base64 bos core lwt_react ocamlgraph rresult tyxml ];
-
   minimalOCamlVersion = "4.12";
 
   meta = {
diff --git a/nixpkgs/pkgs/development/ocaml-modules/bitv/default.nix b/nixpkgs/pkgs/development/ocaml-modules/bitv/default.nix
index 23e8d145a308..2ac3a0ba3e76 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/bitv/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/bitv/default.nix
@@ -1,16 +1,18 @@
-{ stdenv, lib, fetchzip, autoreconfHook, which, ocaml, findlib }:
+{ stdenv, lib, fetchFromGitHub, autoreconfHook, which, ocaml, findlib }:
 
 if !lib.versionAtLeast ocaml.version "4.02"
 then throw "bitv is not available for OCaml ${ocaml.version}"
 else
 
 stdenv.mkDerivation rec {
-  name = "ocaml${ocaml.version}-bitv-${version}";
+  pname = "ocaml${ocaml.version}-bitv";
   version = "1.3";
 
-  src = fetchzip {
-    url = "https://github.com/backtracking/bitv/archive/${version}.tar.gz";
-    sha256 = "0vkh1w9fpi5m1sgiqg6r38j3fqglhdajmbyiyr91113lrpljm75i";
+  src = fetchFromGitHub {
+    owner = "backtracking";
+    repo = "bitv";
+    rev = version;
+    sha256 = "sha256-sZwq6c10hBBS9tGvKlWD9GE3JBrZPByfDrXE6xIPcG4=";
   };
 
   buildInputs = [ autoreconfHook which ocaml findlib ];
diff --git a/nixpkgs/pkgs/development/ocaml-modules/bolt/default.nix b/nixpkgs/pkgs/development/ocaml-modules/bolt/default.nix
index ea32d659f646..a6b63676e775 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/bolt/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/bolt/default.nix
@@ -10,17 +10,18 @@ then throw "bolt is not available for OCaml ${ocaml.version}"
 else
 
 stdenv.mkDerivation rec {
-
-  name = "bolt-1.4";
+  pname = "bolt";
+  version = "1.4";
 
   src = fetchurl {
-    url = "https://forge.ocamlcore.org/frs/download.php/1043/${name}.tar.gz";
+    url = "https://forge.ocamlcore.org/frs/download.php/1043/bolt-${version}.tar.gz";
     sha256 = "1c807wrpxra9sbb34lajhimwra28ldxv04m570567lh2b04n38zy";
   };
 
   buildInputs = [ ocaml findlib ocamlbuild which camlp4 ];
 
-  patches = [ (fetchpatch {
+  patches = [
+    (fetchpatch {
       url = "https://raw.githubusercontent.com/ocaml/opam-repository/master/packages/bolt/bolt.1.4/files/opam.patch";
       sha256 = "08cl39r98w312sw23cskd5wian6zg20isn9ki41hnbcgkazhi7pb";
     })
@@ -43,7 +44,7 @@ EOF
   # option. Installation is handled by ocamlfind.
   dontAddPrefix = true;
   dontAddStaticConfigureFlags = true;
-  configurePlatforms = [];
+  configurePlatforms = [ ];
 
   createFindlibDestdir = true;
 
@@ -60,7 +61,7 @@ EOF
       modeled after the famous log4j logging framework for Java.
     '';
     license = licenses.lgpl3;
-    platforms = ocaml.meta.platforms or [];
+    platforms = ocaml.meta.platforms or [ ];
     maintainers = [ maintainers.jirkamarsik ];
   };
 }
diff --git a/nixpkgs/pkgs/development/ocaml-modules/bz2/default.nix b/nixpkgs/pkgs/development/ocaml-modules/bz2/default.nix
index 52a92d3a8d40..617715fc6edc 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/bz2/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/bz2/default.nix
@@ -36,6 +36,6 @@ stdenv.mkDerivation rec {
     description = "OCaml bindings for the libbz2 (AKA, bzip2) (de)compression library";
     downloadPage = "https://gitlab.com/irill/camlbz2";
     license = licenses.lgpl21;
-    maintainers = with maintainers; [ superherointj ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/ocaml-modules/ca-certs-nss/default.nix b/nixpkgs/pkgs/development/ocaml-modules/ca-certs-nss/default.nix
index 31dea9201bbb..2835852d6708 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/ca-certs-nss/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/ca-certs-nss/default.nix
@@ -1,13 +1,11 @@
 { lib
 , buildDunePackage
 , fetchurl
-, rresult
 , mirage-crypto
 , mirage-clock
 , x509
 , logs
 , fmt
-, hex
 , bos
 , astring
 , cmdliner
@@ -16,19 +14,18 @@
 
 buildDunePackage rec {
   pname = "ca-certs-nss";
-  version = "3.66";
+  version = "3.71.0.1";
 
   minimumOCamlVersion = "4.08";
 
   src = fetchurl {
     url = "https://github.com/mirage/ca-certs-nss/releases/download/v${version}/ca-certs-nss-v${version}.tbz";
-    sha256 = "f0f8035b470f2a48360b92d0e6287f41f98e4ba71576a1cd4c9246c468932f09";
+    sha256 = "b83749d983781631745079dccb7345d9ee1b52c1844ce865e97a25349289a124";
   };
 
   useDune2 = true;
 
   propagatedBuildInputs = [
-    rresult
     mirage-crypto
     mirage-clock
     x509
@@ -37,7 +34,6 @@ buildDunePackage rec {
   buildInputs = [
     logs
     fmt
-    hex
     bos
     astring
     cmdliner
diff --git a/nixpkgs/pkgs/development/ocaml-modules/calendar/default.nix b/nixpkgs/pkgs/development/ocaml-modules/calendar/default.nix
index 1210ed41dc2b..29927aae04a7 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/calendar/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/calendar/default.nix
@@ -1,21 +1,23 @@
-{stdenv, lib, fetchurl, ocaml, findlib}:
+{ stdenv, lib, fetchurl, ocaml, findlib }:
+
+stdenv.mkDerivation rec {
+  pname = "ocaml-calendar";
+  version = "2.5";
 
-stdenv.mkDerivation {
-  name = "ocaml-calendar-2.5";
   src = fetchurl {
-    url = "https://forge.ocamlcore.org/frs/download.php/915/calendar-2.5.tar.bz2";
+    url = "https://forge.ocamlcore.org/frs/download.php/915/calendar-${version}.tar.bz2";
     sha256 = "04pvhwb664g3s644c7v7419a3kvf5s3pynkhmk5j59dvlfm1yf0f";
-    };
+  };
 
-  buildInputs = [ocaml findlib];
+  buildInputs = [ ocaml findlib ];
 
   createFindlibDestdir = true;
 
-  meta =  {
+  meta = {
     homepage = "https://forge.ocamlcore.org/projects/calendar/";
     description = "An Objective Caml library managing dates and times";
     license = "LGPL";
-    platforms = ocaml.meta.platforms or [];
+    platforms = ocaml.meta.platforms or [ ];
     maintainers = [
       lib.maintainers.gal_bolle
     ];
diff --git a/nixpkgs/pkgs/development/ocaml-modules/carton/default.nix b/nixpkgs/pkgs/development/ocaml-modules/carton/default.nix
index 81893ae9ac36..97e00dc71b62 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/carton/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/carton/default.nix
@@ -7,14 +7,14 @@
 
 buildDunePackage rec {
   pname = "carton";
-  version = "0.4.2";
+  version = "0.4.3";
 
   useDune2 = true;
-  minimumOCamlVersion = "4.08";
+  minimalOCamlVersion = "4.08";
 
   src = fetchurl {
     url = "https://github.com/mirage/ocaml-git/releases/download/${pname}-v${version}/${pname}-${pname}-v${version}.tbz";
-    sha256 = "a0a03b2f7bb7dafe070bc6a74583b6d6da714d2c636dd4d5a6443c9f299ceacc";
+    sha256 = "sha256:0qz9ds5761wx4m7ly3av843b6dii7lmjpx2nnyijv8rm8aw95jgr";
   };
 
   # remove changelogs for mimic and the git* packages
diff --git a/nixpkgs/pkgs/development/ocaml-modules/carton/git.nix b/nixpkgs/pkgs/development/ocaml-modules/carton/git.nix
index ef41ff2b5947..4f7c880ae065 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/carton/git.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/carton/git.nix
@@ -8,7 +8,7 @@
 buildDunePackage {
   pname = "carton-git";
 
-  inherit (carton) version src useDune2 minimumOCamlVersion postPatch;
+  inherit (carton) version src useDune2 postPatch;
 
   propagatedBuildInputs = [
     carton
diff --git a/nixpkgs/pkgs/development/ocaml-modules/carton/lwt.nix b/nixpkgs/pkgs/development/ocaml-modules/carton/lwt.nix
index 024ff51559e4..17ba5dddf24e 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/carton/lwt.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/carton/lwt.nix
@@ -10,7 +10,7 @@
 buildDunePackage {
   pname = "carton-lwt";
 
-  inherit (carton) version src useDune2 minimumOCamlVersion postPatch;
+  inherit (carton) version src useDune2 postPatch;
 
   propagatedBuildInputs = [
     carton
diff --git a/nixpkgs/pkgs/development/ocaml-modules/cil/default.nix b/nixpkgs/pkgs/development/ocaml-modules/cil/default.nix
index 3aefe2eb874c..c5a3dcde2263 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/cil/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/cil/default.nix
@@ -4,10 +4,12 @@ if lib.versionAtLeast ocaml.version "4.06"
 then throw "cil is not available for OCaml ${ocaml.version}"
 else
 
-stdenv.mkDerivation {
-  name = "ocaml-cil-1.7.3";
+stdenv.mkDerivation rec {
+  pname = "ocaml-cil";
+  version = "1.7.3";
+
   src = fetchurl {
-    url = "mirror://sourceforge/cil/cil-1.7.3.tar.gz";
+    url = "mirror://sourceforge/cil/cil-${version}.tar.gz";
     sha256 = "05739da0b0msx6kmdavr3y2bwi92jbh3szc35d7d8pdisa8g5dv9";
   };
 
@@ -26,6 +28,6 @@ stdenv.mkDerivation {
     description = "A front-end for the C programming language that facilitates program analysis and transformation";
     license = licenses.bsd3;
     maintainers = [ maintainers.vbgl ];
-    platforms = ocaml.meta.platforms or [];
+    platforms = ocaml.meta.platforms or [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/ocaml-modules/coin/default.nix b/nixpkgs/pkgs/development/ocaml-modules/coin/default.nix
new file mode 100644
index 000000000000..f0697a9d880b
--- /dev/null
+++ b/nixpkgs/pkgs/development/ocaml-modules/coin/default.nix
@@ -0,0 +1,38 @@
+{ buildDunePackage
+, fetchzip
+, findlib
+, lib
+, menhir
+, ocaml
+, re
+}:
+
+buildDunePackage rec {
+  pname = "coin";
+  version = "0.1.3";
+  minimalOCamlVersion = "4.03";
+
+  src = fetchzip {
+    url = "https://github.com/mirage/coin/releases/download/v${version}/coin-v${version}.tbz";
+    sha256 = "06bfidvglyp9hzvr2xwbdx8wf26is2xrzc31fldzjf5ab0vd076p";
+  };
+
+  postPatch = ''
+    substituteInPlace src/dune --replace 'ocaml} ' \
+      'ocaml} -I ${findlib}/lib/ocaml/${ocaml.version}/site-lib '
+  '';
+
+  useDune2 = true;
+
+  nativeBuildInputs = [ menhir ];
+
+  checkInputs = [ re ];
+  doCheck = true;
+
+  meta = {
+    description = "A library to normalize an KOI8-{U,R} input to Unicode";
+    license = lib.licenses.mit;
+    homepage = "https://github.com/mirage/coin";
+    maintainers = with lib.maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/comparelib/default.nix b/nixpkgs/pkgs/development/ocaml-modules/comparelib/default.nix
index addba7a4b349..1d7c314f005c 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/comparelib/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/comparelib/default.nix
@@ -1,14 +1,16 @@
-{lib, buildOcaml, fetchurl, type_conv}:
+{ lib, buildOcaml, fetchFromGitHub, type_conv }:
 
 buildOcaml rec {
-  name = "comparelib";
+  pname = "comparelib";
   version = "113.00.00";
 
   minimumSupportedOcamlVersion = "4.00";
 
-  src = fetchurl {
-    url = "https://github.com/janestreet/comparelib/archive/${version}.tar.gz";
-    sha256 = "02l343drgi4200flfx73nzdk61zajwidsqjk9n80b2d37lvhazlf";
+  src = fetchFromGitHub {
+    owner = "janestreet";
+    repo = "comparelib";
+    rev = version;
+    sha256 = "sha256-gtJvXAUxiIt/L9bCzS+8wHcCQ+QpBubwcjDcyN0K2MA=";
   };
 
   propagatedBuildInputs = [ type_conv ];
diff --git a/nixpkgs/pkgs/development/ocaml-modules/conduit/default.nix b/nixpkgs/pkgs/development/ocaml-modules/conduit/default.nix
index 077180124e42..1dc28b2b5f79 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/conduit/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/conduit/default.nix
@@ -5,14 +5,14 @@
 
 buildDunePackage rec {
   pname = "conduit";
-  version = "4.0.1";
+  version = "4.0.2";
   useDune2 = true;
 
   minimumOCamlVersion = "4.03";
 
   src = fetchurl {
     url = "https://github.com/mirage/ocaml-conduit/releases/download/v${version}/conduit-v${version}.tbz";
-    sha256 = "500d95bf2a524f4851e94373e32d26b6e99ee04e5134db69fe6e151c3aad9b1f";
+    sha256 = "2a37ffaa352a1e145ef3d80ac28661213c69a741b238623e59f29e3d5a12c537";
   };
 
   buildInputs = [ ppx_sexp_conv ];
diff --git a/nixpkgs/pkgs/development/ocaml-modules/config-file/default.nix b/nixpkgs/pkgs/development/ocaml-modules/config-file/default.nix
index 29c7cd61c3f5..c408d1a392f1 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/config-file/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/config-file/default.nix
@@ -1,10 +1,11 @@
 { stdenv, lib, fetchurl, ocaml, findlib, camlp4 }:
 
-stdenv.mkDerivation {
-  name = "ocaml-config-file-1.2";
+stdenv.mkDerivation rec {
+  pname = "ocaml-config-file";
+  version = "1.2";
 
   src = fetchurl {
-    url = "https://forge.ocamlcore.org/frs/download.php/1387/config-file-1.2.tar.gz";
+    url = "https://forge.ocamlcore.org/frs/download.php/1387/config-file-${version}.tar.gz";
     sha256 = "1b02yxcnsjhr05ssh2br2ka4hxsjpdw34ldl3nk33wfnkwk7g67q";
   };
 
@@ -14,7 +15,7 @@ stdenv.mkDerivation {
 
   meta = {
     homepage = "http://config-file.forge.ocamlcore.org/";
-    platforms = ocaml.meta.platforms or [];
+    platforms = ocaml.meta.platforms or [ ];
     description = "An OCaml library used to manage the configuration file(s) of an application";
     license = lib.licenses.lgpl2Plus;
     maintainers = with lib.maintainers; [ vbgl ];
diff --git a/nixpkgs/pkgs/development/ocaml-modules/containers/default.nix b/nixpkgs/pkgs/development/ocaml-modules/containers/default.nix
index de6c8076ceda..281fbfbfde87 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/containers/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/containers/default.nix
@@ -1,11 +1,11 @@
 { lib, fetchFromGitHub, buildDunePackage, ocaml
 , dune-configurator
-, seq
+, either, seq
 , gen, iter, ounit, qcheck, uutf
 }:
 
 buildDunePackage rec {
-  version = "3.4";
+  version = "3.6.1";
   pname = "containers";
 
   useDune2 = true;
@@ -14,11 +14,11 @@ buildDunePackage rec {
     owner = "c-cube";
     repo = "ocaml-containers";
     rev = "v${version}";
-    sha256 = "0ixpy81p6rc3lq71djfndb2sg2hfj20j1jbzzrrmgqsysqdjsgzz";
+    sha256 = "sha256:1k8xrs3nki8g875sig9f5v6k4vwxrk5gn7ixrlkkys5ksbr4kis7";
   };
 
   buildInputs = [ dune-configurator ];
-  propagatedBuildInputs = [ seq ];
+  propagatedBuildInputs = [ either seq ];
 
   checkInputs = [ gen iter ounit qcheck uutf ];
 
diff --git a/nixpkgs/pkgs/development/ocaml-modules/cryptokit/default.nix b/nixpkgs/pkgs/development/ocaml-modules/cryptokit/default.nix
index 6a50c73103b7..1b5a50b13b97 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/cryptokit/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/cryptokit/default.nix
@@ -1,14 +1,16 @@
-{ lib, buildDunePackage, fetchurl, zlib, dune-configurator, zarith, ncurses }:
+{ lib, buildDunePackage, fetchFromGitHub, zlib, dune-configurator, zarith, ncurses }:
 
-buildDunePackage {
+buildDunePackage rec {
   pname = "cryptokit";
   version = "1.16.1";
 
   useDune2 = true;
 
-  src = fetchurl {
-    url = "https://github.com/xavierleroy/cryptokit/archive/release1161.tar.gz";
-    sha256 = "0kzqkk451m69nqi5qiwak0rd0rp5vzi613gcngsiig7dyxwka61c";
+  src = fetchFromGitHub {
+    owner = "xavierleroy";
+    repo = "cryptokit";
+    rev = "release${lib.replaceStrings ["."] [""] version}";
+    sha256 = "sha256-eDIzi16Al/mXCNos/lVqjZWCtdP9SllXnRfm4GBWMfA=";
   };
 
   # dont do autotools configuration, but do trigger findlib's preConfigure hook
diff --git a/nixpkgs/pkgs/development/ocaml-modules/csv/1.5.nix b/nixpkgs/pkgs/development/ocaml-modules/csv/1.5.nix
index 6fdf20308611..ee68782313c5 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/csv/1.5.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/csv/1.5.nix
@@ -1,11 +1,11 @@
 { lib, stdenv, fetchzip, ocaml, findlib, ocamlbuild }:
 
-stdenv.mkDerivation {
-
-  name = "ocaml${ocaml.version}-csv-1.5";
+stdenv.mkDerivation rec {
+  pname = "ocaml${ocaml.version}-csv";
+  version = "1.5";
 
   src = fetchzip {
-    url = "https://github.com/Chris00/ocaml-csv/releases/download/1.5/csv-1.5.tar.gz";
+    url = "https://github.com/Chris00/ocaml-csv/releases/download/${version}/csv-${version}.tar.gz";
     sha256 = "1ca7jgg58j24pccs5fshis726s06fdcjshnwza5kwxpjgdbvc63g";
   };
 
@@ -27,6 +27,6 @@ stdenv.mkDerivation {
     homepage = "https://github.com/Chris00/ocaml-csv";
     license = licenses.lgpl21;
     maintainers = [ maintainers.vbgl ];
-    platforms = ocaml.meta.platforms or [];
+    platforms = ocaml.meta.platforms or [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/ocaml-modules/ctypes/default.nix b/nixpkgs/pkgs/development/ocaml-modules/ctypes/default.nix
index f8ccffcf217f..8c20a68c2746 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/ctypes/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/ctypes/default.nix
@@ -1,28 +1,30 @@
-{ lib, stdenv, fetchzip, ocaml, findlib, libffi, pkg-config, ncurses, integers, bigarray-compat }:
+{ lib, stdenv, fetchFromGitHub, ocaml, findlib, libffi, pkg-config, ncurses, integers, bigarray-compat }:
 
 if !lib.versionAtLeast ocaml.version "4.02"
 then throw "ctypes is not available for OCaml ${ocaml.version}"
 else
 
 stdenv.mkDerivation rec {
-  name = "ocaml${ocaml.version}-ctypes-${version}";
+  pname = "ocaml${ocaml.version}-ctypes";
   version = "0.18.0";
 
-  src = fetchzip {
-    url = "https://github.com/ocamllabs/ocaml-ctypes/archive/${version}.tar.gz";
-    sha256 = "03zrbnl16m67ls0yfhq7a4k4238x6x6b3m456g4dw2yqwc153vks";
+  src = fetchFromGitHub {
+    owner = "ocamllabs";
+    repo = "ocaml-ctypes";
+    rev = version;
+    sha256 = "sha256-eu5RAuPYC97IM4XUsUw3HQ1BJlEHQ+eBpsdUE6hd+Q8=";
   };
 
   nativeBuildInputs = [ pkg-config ];
   buildInputs = [ ocaml findlib ncurses ];
   propagatedBuildInputs = [ integers libffi bigarray-compat ];
 
-  buildPhase =  ''
-     make XEN=false libffi.config ctypes-base ctypes-stubs
-     make XEN=false ctypes-foreign
+  buildPhase = ''
+    make XEN=false libffi.config ctypes-base ctypes-stubs
+    make XEN=false ctypes-foreign
   '';
 
-  installPhase =  ''
+  installPhase = ''
     mkdir -p $out/lib/ocaml/${ocaml.version}/site-lib/stublibs
     make install XEN=false
   '';
diff --git a/nixpkgs/pkgs/development/ocaml-modules/cudf/default.nix b/nixpkgs/pkgs/development/ocaml-modules/cudf/default.nix
index 22de0e690c8b..fe9793ea532f 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/cudf/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/cudf/default.nix
@@ -45,6 +45,6 @@ stdenv.mkDerivation {
     homepage = "https://www.mancoosi.org/cudf/";
     downloadPage = "https://gforge.inria.fr/projects/cudf/";
     license = licenses.lgpl3;
-    maintainers = with maintainers; [ superherointj ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/ocaml-modules/dolmen/default.nix b/nixpkgs/pkgs/development/ocaml-modules/dolmen/default.nix
index 56b87a4e971d..9a21da986814 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/dolmen/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/dolmen/default.nix
@@ -19,7 +19,8 @@ buildDunePackage rec {
   buildInputs = [ menhir ];
   propagatedBuildInputs = [ menhirLib fmt ];
 
-  doCheck = true;
+  # Testr are not compatible with menhir 20211128
+  doCheck = false;
 
   meta = {
     description = "An OCaml library providing clean and flexible parsers for input languages";
diff --git a/nixpkgs/pkgs/development/ocaml-modules/dolog/default.nix b/nixpkgs/pkgs/development/ocaml-modules/dolog/default.nix
index 690823c5358a..64fb2b2c5a59 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/dolog/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/dolog/default.nix
@@ -1,13 +1,14 @@
-{ stdenv, lib, fetchzip, ocaml, findlib, ocamlbuild }:
+{ stdenv, lib, fetchFromGitHub, ocaml, findlib, ocamlbuild }:
 
-let version = "3.0"; in
-
-stdenv.mkDerivation {
+stdenv.mkDerivation rec {
   pname = "ocaml-dolog";
-  inherit version;
-  src = fetchzip {
-    url = "https://github.com/UnixJunkie/dolog/archive/v${version}.tar.gz";
-    sha256 = "0gx2s4509vkkkaikl2yp7k5x7bqv45s1y1vsy408d8rakd7yl1zb";
+  version = "3.0";
+
+  src = fetchFromGitHub {
+    owner = "UnixJunkie";
+    repo = "dolog";
+    rev = "v${version}";
+    sha256 = "sha256-6wfqT5sqo4YA8XoHH3QhG6/TyzzXCzqjmnPuBArRoj8=";
   };
 
   buildInputs = [ ocaml findlib ocamlbuild ];
@@ -20,7 +21,7 @@ stdenv.mkDerivation {
   meta = {
     homepage = "https://github.com/UnixJunkie/dolog";
     description = "Minimalistic lazy logger in OCaml";
-    platforms = ocaml.meta.platforms or [];
+    platforms = ocaml.meta.platforms or [ ];
     license = lib.licenses.bsd3;
     maintainers = with lib.maintainers; [ vbgl ];
   };
diff --git a/nixpkgs/pkgs/development/ocaml-modules/dune-site/default.nix b/nixpkgs/pkgs/development/ocaml-modules/dune-site/default.nix
new file mode 100644
index 000000000000..9462393d2697
--- /dev/null
+++ b/nixpkgs/pkgs/development/ocaml-modules/dune-site/default.nix
@@ -0,0 +1,19 @@
+{ lib, buildDunePackage, dune_2, dune-private-libs }:
+
+buildDunePackage rec {
+  pname = "dune-site";
+  inherit (dune_2) src version patches;
+
+  useDune2 = true;
+
+  dontAddPrefix = true;
+
+  propagatedBuildInputs = [ dune-private-libs ];
+
+  meta = with lib; {
+    description = "A library for embedding location information inside executable and libraries";
+    inherit (dune_2.meta) homepage;
+    maintainers = with lib.maintainers; [ ];
+    license = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/easy-format/default.nix b/nixpkgs/pkgs/development/ocaml-modules/easy-format/default.nix
index 161e263e129b..a6e78977846c 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/easy-format/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/easy-format/default.nix
@@ -1,15 +1,15 @@
-{ lib, stdenv, fetchzip, ocaml, findlib }:
-let
+{ lib, stdenv, fetchFromGitHub, ocaml, findlib }:
+
+stdenv.mkDerivation rec {
+
   pname = "easy-format";
   version = "1.2.0";
-in
-stdenv.mkDerivation {
-
-  name = "${pname}-${version}";
 
-  src = fetchzip {
-    url = "https://github.com/mjambon/${pname}/archive/v${version}.tar.gz";
-    sha256 = "00ga7mrlycjc99gzp3bgx6iwhf7i6j8856f8xzrf1yas7zwzgzm9";
+  src = fetchFromGitHub {
+    owner = "mjambon";
+    repo = "easy-format";
+    rev = "v${version}";
+    sha256 = "sha256-qf73+T9a+eDy78iZgpA08TjIo+lvjftfSkwyT3M96gE=";
   };
 
   nativeBuildInputs = [ ocaml findlib ];
@@ -22,7 +22,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "A high-level and functional interface to the Format module of the OCaml standard library";
-    homepage = "https://github.com/ocaml-community/${pname}";
+    homepage = "https://github.com/ocaml-community/easy-format";
     license = licenses.bsd3;
     maintainers = [ maintainers.vbgl ];
   };
diff --git a/nixpkgs/pkgs/development/ocaml-modules/eliom/default.nix b/nixpkgs/pkgs/development/ocaml-modules/eliom/default.nix
index 79c7a650cffd..69ac628d2014 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/eliom/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/eliom/default.nix
@@ -1,29 +1,40 @@
-{ stdenv, lib, fetchzip, which, ocsigen_server, ocaml,
-  lwt_react,
-  opaline, ppx_deriving, findlib
-, ocaml-migrate-parsetree
-, ppx_tools_versioned
-, js_of_ocaml-ocamlbuild, js_of_ocaml-ppx, js_of_ocaml-ppx_deriving_json
+{ stdenv
+, lib
+, fetchFromGitHub
+, which
+, ocsigen_server
+, ocaml
+, lwt_react
+, opaline
+, ppx_deriving
+, findlib
+, js_of_ocaml-ocamlbuild
+, js_of_ocaml-ppx
+, js_of_ocaml-ppx_deriving_json
 , js_of_ocaml-lwt
 , js_of_ocaml-tyxml
 , lwt_ppx
 , ocamlnet
 }:
 
-stdenv.mkDerivation rec
-{
+stdenv.mkDerivation rec {
   pname = "eliom";
-  version = "8.6.0";
+  version = "8.9.0";
 
-  src = fetchzip {
-    url = "https://github.com/ocsigen/eliom/archive/${version}.tar.gz";
-    sha256 = "0s1hpawwhqp4qcy8w1067n8c6zg8jcjpzplc39bjbb1ycqw667j9";
+  src = fetchFromGitHub {
+    owner = "ocsigen";
+    repo = "eliom";
+    rev = version;
+    sha256 = "sha256-VNxzpVpXEGlixyjadbW0GjL83jcKV5TWd46UReNYO6w=";
   };
 
-  buildInputs = [ ocaml which findlib js_of_ocaml-ocamlbuild
-    ocaml-migrate-parsetree
-    js_of_ocaml-ppx_deriving_json opaline
-    ppx_tools_versioned
+  buildInputs = [
+    ocaml
+    which
+    findlib
+    js_of_ocaml-ocamlbuild
+    js_of_ocaml-ppx_deriving_json
+    opaline
     ocamlnet
   ];
 
@@ -45,7 +56,7 @@ stdenv.mkDerivation rec
     homepage = "http://ocsigen.org/eliom/";
     description = "OCaml Framework for programming Web sites and client/server Web applications";
 
-    longDescription =''Eliom is a framework for programming Web sites
+    longDescription = ''Eliom is a framework for programming Web sites
     and client/server Web applications. It introduces new concepts to
     simplify programming common behaviours and uses advanced static
     typing features of OCaml to check many properties of the Web site
diff --git a/nixpkgs/pkgs/development/ocaml-modules/elpi/default.nix b/nixpkgs/pkgs/development/ocaml-modules/elpi/default.nix
index 642a249e4937..4412f568508c 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/elpi/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/elpi/default.nix
@@ -1,10 +1,13 @@
 { stdenv, lib, fetchzip, buildDunePackage, camlp5
-, ppxlib, ppx_deriving, re, perl, ncurses
-, version ? "1.13.5"
+, re, perl, ncurses
+, ppxlib, ppx_deriving
+, ppxlib_0_15, ppx_deriving_0_15
+, version ? "1.13.7"
 }:
 with lib;
 let fetched = import ../../../build-support/coq/meta-fetch/default.nix
   {inherit lib stdenv fetchzip; } ({
+    release."1.13.7".sha256 = "10fnwz30bsvj7ii1vg4l1li5pd7n0qqmwj18snkdr5j9gk0apc1r";
     release."1.13.5".sha256 = "02a6r23mximrdvs6kgv6rp0r2dgk7zynbs99nn7lphw2c4189kka";
     release."1.13.1".sha256 = "12a9nbdvg9gybpw63lx3nw5wnxfznpraprb0wj3l68v1w43xq044";
     release."1.13.0".sha256 = "0dmzy058m1mkndv90byjaik6lzzfk3aaac7v84mpmkv6my23bygr";
@@ -22,7 +25,11 @@ buildDunePackage rec {
 
   buildInputs = [ perl ncurses ];
 
-  propagatedBuildInputs = [ camlp5 ppxlib ppx_deriving re ];
+  propagatedBuildInputs = [ camlp5 re ]
+  ++ (if lib.versionAtLeast version "1.13"
+     then [ ppxlib ppx_deriving ]
+     else [ ppxlib_0_15 ppx_deriving_0_15 ]
+  );
 
   meta = {
     description = "Embeddable λProlog Interpreter";
diff --git a/nixpkgs/pkgs/development/ocaml-modules/enumerate/default.nix b/nixpkgs/pkgs/development/ocaml-modules/enumerate/default.nix
index eb0495be797f..d7f467e8eb98 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/enumerate/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/enumerate/default.nix
@@ -6,11 +6,12 @@ if lib.versionAtLeast ocaml.version "4.06"
 then throw "enumerate-111.08.00 is not available for OCaml ${ocaml.version}"
 else
 
-stdenv.mkDerivation {
-  name = "ocaml-enumerate-111.08.00";
+stdenv.mkDerivation rec {
+  pname = "ocaml-enumerate";
+  version = "111.08.00";
 
   src = fetchurl {
-    url = "https://ocaml.janestreet.com/ocaml-core/111.08.00/individual/enumerate-111.08.00.tar.gz";
+    url = "https://ocaml.janestreet.com/ocaml-core/${lib.versions.majorMinor version}.00/individual/enumerate-${version}.tar.gz";
     sha256 = "0b6mx5p01lcpimvak4wx6aj2119707wsfzd83rwgb91bhpgzh156";
   };
 
@@ -23,6 +24,6 @@ stdenv.mkDerivation {
     homepage = "https://ocaml.janestreet.com/";
     description = "Quotation expanders for enumerating finite types";
     license = lib.licenses.asl20;
-    platforms = ocaml.meta.platforms or [];
+    platforms = ocaml.meta.platforms or [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/ocaml-modules/erm_xml/default.nix b/nixpkgs/pkgs/development/ocaml-modules/erm_xml/default.nix
index 56b5c9295708..fa072f8bd1c1 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/erm_xml/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/erm_xml/default.nix
@@ -1,17 +1,18 @@
-{ stdenv, lib, fetchzip, ocaml, findlib, ocamlbuild }:
+{ stdenv, lib, fetchFromGitHub, ocaml, findlib, ocamlbuild }:
 
 if !lib.versionAtLeast ocaml.version "4.02"
 then throw "erm_xml is not available for OCaml ${ocaml.version}"
 else
 
-let version = "0.3+20180112"; in
+stdenv.mkDerivation rec {
+  pname = "ocaml${ocaml.version}-erm_xml";
+  version = "0.3+20180112";
 
-stdenv.mkDerivation {
-  name = "ocaml${ocaml.version}-erm_xml-${version}";
-
-  src = fetchzip {
-    url = "https://github.com/hannesm/xml/archive/bbabdade807d8281fc48806da054b70dfe482479.tar.gz";
-    sha256 = "1gawpmg8plip0wia0xq60m024dn7l3ykwbjpbqx9f9bdmx74n1rr";
+  src = fetchFromGitHub {
+    owner = "hannesm";
+    repo = "xml";
+    rev = "bbabdade807d8281fc48806da054b70dfe482479";
+    sha256 = "sha256-OQdLTq9tJZc6XlcuPv2gxzYiQAUGd6AiBzfSi169XL0=";
   };
 
   buildInputs = [ ocaml findlib ocamlbuild ];
@@ -21,7 +22,7 @@ stdenv.mkDerivation {
   meta = {
     homepage = "https://github.com/hannesm/xml";
     description = "XML Parser for discrete data";
-    platforms = ocaml.meta.platforms or [];
+    platforms = ocaml.meta.platforms or [ ];
     license = lib.licenses.bsd3;
     maintainers = with lib.maintainers; [ vbgl ];
   };
diff --git a/nixpkgs/pkgs/development/ocaml-modules/estring/default.nix b/nixpkgs/pkgs/development/ocaml-modules/estring/default.nix
deleted file mode 100644
index 7424d14220dc..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/estring/default.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ lib, buildOcaml, ocaml, fetchurl }:
-
-if lib.versionAtLeast ocaml.version "4.06"
-then throw "estring is not available for OCaml ${ocaml.version}"
-else
-
-buildOcaml rec {
-  name = "estring";
-  version = "1.3";
-
-  src = fetchurl {
-    url = "https://forge.ocamlcore.org/frs/download.php/1012/estring-${version}.tar.gz";
-    sha256 = "0b6znz5igm8pp28w4b7sgy82rpd9m5aw6ss933rfbw1mrh05gvcg";
-  };
-
-  meta = with lib; {
-    homepage = "http://estring.forge.ocamlcore.org/";
-    description = "Extension for string literals";
-    license = licenses.bsd3;
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/faillib/default.nix b/nixpkgs/pkgs/development/ocaml-modules/faillib/default.nix
deleted file mode 100644
index 63040fadda5d..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/faillib/default.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ lib, buildOcaml, fetchurl, ocaml, herelib, camlp4 }:
-
-if lib.versionAtLeast ocaml.version "4.06"
-then throw "faillib-111.17.00 is not available for OCaml ${ocaml.version}"
-else
-
-buildOcaml rec {
-  minimumSupportedOcamlVersion = "4.00";
-  name = "faillib";
-  version = "111.17.00";
-
-  src = fetchurl {
-    url = "https://github.com/janestreet/faillib/archive/${version}.tar.gz";
-    sha256 = "12dvaxkmgf7yzzvbadcyk1n17llgh6p8qr33867d21npaljy7l9v";
-  };
-
-  propagatedBuildInputs = [ camlp4 herelib ];
-
-  doCheck = true;
-  checkPhase = "make test";
-
-  meta = with lib; {
-    homepage = "https://ocaml.janestreet.com/";
-    description = "Library for dealing with failure in OCaml";
-    license = licenses.asl20;
-    maintainers = [ maintainers.maurer ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/fieldslib/default.nix b/nixpkgs/pkgs/development/ocaml-modules/fieldslib/default.nix
deleted file mode 100644
index 4adddbfe54d2..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/fieldslib/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ lib, stdenv, fetchurl, ocaml, findlib, ocamlbuild, type_conv, camlp4 }:
-
-assert lib.versionOlder "4.00" (lib.getVersion ocaml);
-
-if lib.versionAtLeast ocaml.version "4.06"
-then throw "fieldslib-109.20.03 is not available for OCaml ${ocaml.version}"
-else
-
-stdenv.mkDerivation {
-  name = "ocaml-fieldslib-109.20.03";
-
-  src = fetchurl {
-    url = "https://ocaml.janestreet.com/ocaml-core/109.20.00/individual/fieldslib-109.20.03.tar.gz";
-    sha256 = "1dkzk0wf26rhvji80dz1r56dp6x9zqrnp87wldd4pj56jli94vir";
-  };
-
-  buildInputs = [ ocaml findlib ocamlbuild ];
-  propagatedBuildInputs = [ type_conv camlp4 ];
-
-  createFindlibDestdir = true;
-
-  meta = with lib; {
-    homepage = "https://ocaml.janestreet.com/";
-    description = "OCaml syntax extension to define first class values representing record fields, to get and set record fields, iterate and fold over all fields of a record and create new record values";
-    license = licenses.asl20;
-    maintainers = [ maintainers.vbgl ];
-    platforms = ocaml.meta.platforms or [];
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/fontconfig/default.nix b/nixpkgs/pkgs/development/ocaml-modules/fontconfig/default.nix
index 55e8e9418955..f4afe80d532d 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/fontconfig/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/fontconfig/default.nix
@@ -1,7 +1,9 @@
 { stdenv, lib, fetchFromGitHub, pkg-config, fontconfig, ocaml }:
 
 stdenv.mkDerivation {
-  name = "ocaml-fontconfig-20131103";
+  pname = "ocaml-fontconfig";
+  version = "unstable-2013-11-03";
+
   src = fetchFromGitHub {
     owner = "flh";
     repo = "ocaml-fontconfig";
@@ -19,7 +21,7 @@ stdenv.mkDerivation {
   meta = {
     description = "Fontconfig bindings for OCaml";
     license = lib.licenses.gpl2Plus;
-    platforms = ocaml.meta.platforms or [];
+    platforms = ocaml.meta.platforms or [ ];
     maintainers = with lib.maintainers; [ vbgl ];
   };
 }
diff --git a/nixpkgs/pkgs/development/ocaml-modules/fpath/default.nix b/nixpkgs/pkgs/development/ocaml-modules/fpath/default.nix
index 785a71e13a7f..532210888bf3 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/fpath/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/fpath/default.nix
@@ -4,10 +4,12 @@ if !lib.versionAtLeast ocaml.version "4.03"
 then throw "fpath is not available for OCaml ${ocaml.version}"
 else
 
-stdenv.mkDerivation {
-  name = "ocaml${ocaml.version}-fpath-0.7.3";
+stdenv.mkDerivation rec {
+  pname = "ocaml${ocaml.version}-fpath";
+  version = "0.7.3";
+
   src = fetchurl {
-    url = "https://erratique.ch/software/fpath/releases/fpath-0.7.3.tbz";
+    url = "https://erratique.ch/software/fpath/releases/fpath-${version}.tbz";
     sha256 = "03z7mj0sqdz465rc4drj1gr88l9q3nfs374yssvdjdyhjbqqzc0j";
   };
 
diff --git a/nixpkgs/pkgs/development/ocaml-modules/genspio/default.nix b/nixpkgs/pkgs/development/ocaml-modules/genspio/default.nix
index 7e7b3a0b9aee..db3c42bca36c 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/genspio/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/genspio/default.nix
@@ -24,7 +24,7 @@ buildDunePackage rec {
   doCheck = true;
 
   meta = with lib; {
-    homepage = https://smondet.gitlab.io/genspio-doc/;
+    homepage = "https://smondet.gitlab.io/genspio-doc/";
     description = "Typed EDSL to generate POSIX Shell scripts";
     license = licenses.asl20;
     maintainers = [ maintainers.alexfmpe ];
diff --git a/nixpkgs/pkgs/development/ocaml-modules/gluten/default.nix b/nixpkgs/pkgs/development/ocaml-modules/gluten/default.nix
new file mode 100644
index 000000000000..fb6f85b10487
--- /dev/null
+++ b/nixpkgs/pkgs/development/ocaml-modules/gluten/default.nix
@@ -0,0 +1,34 @@
+{ buildDunePackage
+, bigstringaf
+, faraday
+, fetchurl
+, lib
+}:
+
+buildDunePackage rec {
+  pname = "gluten";
+  version = "0.2.1";
+
+  src = fetchurl {
+    url = "https://github.com/anmonteiro/gluten/releases/download/${version}/gluten-${version}.tbz";
+    sha256 = "1pl0mpcprz8hmaiv28p7w51qfcx7s76zdkak0vm5cazbjl38nc46";
+  };
+
+  minimalOCamlVersion = "4.06";
+
+  useDune2 = true;
+
+  propagatedBuildInputs = [
+    bigstringaf
+    faraday
+  ];
+
+  doCheck = false; # No tests
+
+  meta = {
+    description = "An implementation of a platform specific runtime code for driving network libraries based on state machines, such as http/af, h2 and websocketaf";
+    license = lib.licenses.bsd3;
+    homepage = "https://github.com/anmonteiro/gluten";
+    maintainers = with lib.maintainers; [ anmonteiro ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/gluten/lwt-unix.nix b/nixpkgs/pkgs/development/ocaml-modules/gluten/lwt-unix.nix
new file mode 100644
index 000000000000..f3986b051355
--- /dev/null
+++ b/nixpkgs/pkgs/development/ocaml-modules/gluten/lwt-unix.nix
@@ -0,0 +1,17 @@
+{ buildDunePackage
+, faraday-lwt-unix
+, gluten
+, gluten-lwt
+, lwt_ssl
+}:
+
+buildDunePackage rec {
+  pname = "gluten-lwt-unix";
+  inherit (gluten) doCheck meta src useDune2 version;
+
+  propagatedBuildInputs = [
+    faraday-lwt-unix
+    gluten-lwt
+    lwt_ssl
+  ];
+}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/gluten/lwt.nix b/nixpkgs/pkgs/development/ocaml-modules/gluten/lwt.nix
new file mode 100644
index 000000000000..e2643d618954
--- /dev/null
+++ b/nixpkgs/pkgs/development/ocaml-modules/gluten/lwt.nix
@@ -0,0 +1,14 @@
+{ buildDunePackage
+, gluten
+, lwt
+}:
+
+buildDunePackage rec {
+  pname = "gluten-lwt";
+  inherit (gluten) doCheck meta src useDune2 version;
+
+  propagatedBuildInputs = [
+    gluten
+    lwt
+  ];
+}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/graphics/default.nix b/nixpkgs/pkgs/development/ocaml-modules/graphics/default.nix
index 10d0b4ea6fc7..38db74fc9faf 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/graphics/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/graphics/default.nix
@@ -3,13 +3,13 @@
 buildDunePackage rec {
 
   pname = "graphics";
-  version = "5.1.1";
+  version = "5.1.2";
 
   useDune2 = true;
 
   src = fetchurl {
     url = "https://github.com/ocaml/graphics/releases/download/${version}/graphics-${version}.tbz";
-    sha256 = "sha256-KGyD497ZKHA2xeXHezmh3P1zoSlre1h5N9zjkAFmMo4=";
+    sha256 = "sha256-QA/YHSPxy0FGuWl5NCwkeXHdVPWHn/0vgOx80CEuMtQ=";
   };
 
   buildInputs = [ dune-configurator ];
diff --git a/nixpkgs/pkgs/development/ocaml-modules/herelib/default.nix b/nixpkgs/pkgs/development/ocaml-modules/herelib/default.nix
index c5223637a158..14c775d25fcd 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/herelib/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/herelib/default.nix
@@ -1,14 +1,16 @@
-{lib, buildOcaml, fetchurl}:
+{ lib, buildOcaml, fetchFromGitHub }:
 
 buildOcaml rec {
   version = "112.35.00";
-  name = "herelib";
+  pname = "herelib";
 
   minimumSupportedOcamlVersion = "4.00";
 
-  src = fetchurl {
-    url = "https://github.com/janestreet/herelib/archive/${version}.tar.gz";
-    sha256 = "03rrlpjmnd8d1rzzmd112355m7a5bwn3vf90xkbc6gkxlad9cxbs";
+  src = fetchFromGitHub {
+    owner = "janestreet";
+    repo = "herelib";
+    rev = version;
+    sha256 = "sha256-EuMhHu2na3lcpsJ1wMVOgBr6VKndlonq8jgAW01eelI=";
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/ocaml-modules/hidapi/default.nix b/nixpkgs/pkgs/development/ocaml-modules/hidapi/default.nix
index 0de997881c2c..2caa25654e39 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/hidapi/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/hidapi/default.nix
@@ -21,7 +21,7 @@ buildDunePackage rec {
   doCheck = true;
 
   meta = with lib; {
-    homepage = https://github.com/vbmithr/ocaml-hidapi;
+    homepage = "https://github.com/vbmithr/ocaml-hidapi";
     description = "Bindings to Signal11's hidapi library";
     license = licenses.isc;
     maintainers = [ maintainers.alexfmpe ];
diff --git a/nixpkgs/pkgs/development/ocaml-modules/higlo/default.nix b/nixpkgs/pkgs/development/ocaml-modules/higlo/default.nix
index 3c4b7a37f99e..19b2fa8942a5 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/higlo/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/higlo/default.nix
@@ -1,27 +1,23 @@
-{ lib, stdenv, fetchFromGitHub, ocaml, findlib, xtmpl, ulex }:
+{ lib, buildDunePackage, fetchFromGitLab, sedlex_2, xtmpl }:
 
-stdenv.mkDerivation rec {
+buildDunePackage rec {
   pname = "higlo";
-  version = "0.6";
-  src = fetchFromGitHub {
+  version = "0.8";
+  useDune2 = true;
+  src = fetchFromGitLab {
+    domain = "framagit.org";
     owner = "zoggy";
     repo = "higlo";
-    rev = "release-${version}";
-    sha256 = "0m0qyk2ydivai54502s45sdw9w4xr0j3jpwyc4vqk62a7iz9ihxh";
+    rev = version;
+    sha256 = "sha256:09hsbwy5asacgh4gdj0vjpy4kzfnq3qji9szbsbyswsf1nbyczir";
   };
 
-  buildInputs = [ ocaml findlib ];
-  propagatedBuildInputs = [ xtmpl ulex ];
-
-  createFindlibDestdir = true;
-
-  patches = ./install.patch;
+  propagatedBuildInputs = [ sedlex_2 xtmpl ];
 
   meta = with lib; {
     description = "OCaml library for syntax highlighting";
-    homepage = "https://zoggy.github.io/higlo/";
+    inherit (src.meta) homepage;
     license = licenses.lgpl3;
-    platforms = ocaml.meta.platforms or [];
     maintainers = with maintainers; [ regnat ];
   };
 }
diff --git a/nixpkgs/pkgs/development/ocaml-modules/higlo/install.patch b/nixpkgs/pkgs/development/ocaml-modules/higlo/install.patch
deleted file mode 100644
index bbdaace293bf..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/higlo/install.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff --git a/Makefile b/Makefile
-index b8c2e01..fcd07ed 100644
---- a/Makefile
-+++ b/Makefile
-@@ -149,7 +149,8 @@ webdoc:
- install: install-lib install-bin
- 
- install-bin:
--	$(CP) $(HIGLO) $(HIGLO_BYTE) $(MK_HIGLO) `dirname \`which ocamlfind\``/
-+	mkdir -p $(out)/bin
-+	$(CP) $(HIGLO) $(HIGLO_BYTE) $(MK_HIGLO) $(out)/bin
- 
- install-lib: higlo.cmo higlo.cmx higlo.cmxs $(HIGLO) $(HIGLO_BYTE)
- 	ocamlfind install higlo META LICENSE \
diff --git a/nixpkgs/pkgs/development/ocaml-modules/inifiles/default.nix b/nixpkgs/pkgs/development/ocaml-modules/inifiles/default.nix
index ad9bd3e2dc71..90308ee7d6d9 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/inifiles/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/inifiles/default.nix
@@ -1,17 +1,20 @@
 { stdenv, lib, fetchurl, fetchpatch, ocaml, findlib, ocaml_pcre }:
 
-stdenv.mkDerivation {
-  name = "ocaml${ocaml.version}-inifiles-1.2";
+stdenv.mkDerivation rec {
+  pname = "ocaml${ocaml.version}-inifiles";
+  version = "1.2";
 
   src = fetchurl {
-    url = "http://archive.ubuntu.com/ubuntu/pool/universe/o/ocaml-inifiles/ocaml-inifiles_1.2.orig.tar.gz";
+    url = "mirror://ubuntu/pool/universe/o/ocaml-inifiles/ocaml-inifiles_${version}.orig.tar.gz";
     sha256 = "0jhzgiypmh6hwsv1zpiq77fi0cvcmwbiy5x0yg7mz6p3dh1dmkns";
   };
 
-  patches = [ (fetchpatch {
-    url = "https://raw.githubusercontent.com/ocaml/opam-repository/master/packages/ocaml-inifiles/ocaml-inifiles.1.2/files/ocaml-inifiles.diff";
-    sha256 = "037kk3172s187w8vwsykdxlpklxzc7m7np57sapk499d8adzdgwn";
-  })];
+  patches = [
+    (fetchpatch {
+      url = "https://raw.githubusercontent.com/ocaml/opam-repository/master/packages/ocaml-inifiles/ocaml-inifiles.1.2/files/ocaml-inifiles.diff";
+      sha256 = "037kk3172s187w8vwsykdxlpklxzc7m7np57sapk499d8adzdgwn";
+    })
+  ];
 
   buildInputs = [ ocaml findlib ];
   propagatedBuildInputs = [ ocaml_pcre ];
diff --git a/nixpkgs/pkgs/development/ocaml-modules/iri/default.nix b/nixpkgs/pkgs/development/ocaml-modules/iri/default.nix
index 0845e4c1841e..6a00fb453dfd 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/iri/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/iri/default.nix
@@ -1,34 +1,26 @@
-{ stdenv, lib, fetchFromGitLab, ocaml, findlib
-, sedlex, uunf, uutf
+{ lib, buildDunePackage, fetchFromGitLab
+, sedlex_2, uunf, uutf
 }:
 
-if !lib.versionAtLeast ocaml.version "4.03"
-then throw "iri is not available for OCaml ${ocaml.version}"
-else
-
-stdenv.mkDerivation rec {
-  version = "0.4.0";
-  name = "ocaml${ocaml.version}-iri-${version}";
+buildDunePackage rec {
+  pname = "iri";
+  version = "0.6.0";
+  useDune2 = true;
 
   src = fetchFromGitLab {
     domain = "framagit.org";
     owner = "zoggy";
     repo = "ocaml-iri";
     rev = version;
-    sha256 = "0fsmfmzmyggm0h77a7mb0n41vqi6q4ln1xzsv72zbvysa7l8w84q";
+    sha256 = "sha256:0zk8nnwcyljkc1a556byncv6cn1vqhk4267z1lm15flh1k7chyax";
   };
 
-  buildInputs = [ ocaml findlib ];
-
-  propagatedBuildInputs = [ sedlex uunf uutf ];
-
-  createFindlibDestdir = true;
+  propagatedBuildInputs = [ sedlex_2 uunf uutf ];
 
   meta = {
     description = "IRI (RFC3987) native OCaml implementation";
     license = lib.licenses.lgpl3;
     maintainers = [ lib.maintainers.vbgl ];
     inherit (src.meta) homepage;
-    inherit (ocaml.meta) platforms;
   };
 }
diff --git a/nixpkgs/pkgs/development/ocaml-modules/iso8601/default.nix b/nixpkgs/pkgs/development/ocaml-modules/iso8601/default.nix
index d1b55609bc4a..add18281008c 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/iso8601/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/iso8601/default.nix
@@ -1,13 +1,14 @@
-{ stdenv, lib, fetchzip, ocaml, findlib, ocamlbuild }:
+{ stdenv, lib, fetchFromGitHub, ocaml, findlib, ocamlbuild }:
 
-let version = "0.2.4"; in
-
-stdenv.mkDerivation {
+stdenv.mkDerivation rec {
   pname = "ocaml-iso8601";
-  inherit version;
-  src = fetchzip {
-    url = "https://github.com/sagotch/ISO8601.ml/archive/${version}.tar.gz";
-    sha256 = "0ypdd1p04xdjxxx3b61wp7abswfrq3vcvwwaxvywxwqljw0dhydi";
+  version = "0.2.4";
+
+  src = fetchFromGitHub {
+    owner = "sagotch";
+    repo = "ISO8601.ml";
+    rev = version;
+    sha256 = "sha256-sXnYAJcU88797orzzfbA2XG91Lk8mDV677J1Am5o7Xo=";
   };
 
   buildInputs = [ ocaml findlib ocamlbuild ];
@@ -17,7 +18,7 @@ stdenv.mkDerivation {
     homepage = "https://ocaml-community.github.io/ISO8601.ml/";
     description = "ISO 8601 and RFC 3999 date parsing for OCaml";
     license = lib.licenses.mit;
-    platforms = ocaml.meta.platforms or [];
+    platforms = ocaml.meta.platforms or [ ];
     maintainers = with lib.maintainers; [ vbgl ];
   };
 }
diff --git a/nixpkgs/pkgs/development/ocaml-modules/iter/default.nix b/nixpkgs/pkgs/development/ocaml-modules/iter/default.nix
index 34e14baea7c9..4fa7e42c5d51 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/iter/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/iter/default.nix
@@ -4,15 +4,15 @@
 
 buildDunePackage rec {
   pname = "iter";
-  version = "1.2.1";
+  version = "1.3";
 
   useDune2 = true;
 
   src = fetchFromGitHub {
     owner = "c-cube";
     repo = pname;
-    rev = version;
-    sha256 = "0j2sg50byn0ppmf6l36ksip7zx1d3gv7sc4hbbxs2rmx39jr7vxh";
+    rev = "v${version}";
+    sha256 = "sha256:0xgkplpbi41sw0yv1wfd12cfbybls6cal8qxddmd9x8khgk5s3vx";
   };
 
   buildInputs = [ dune-configurator ];
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/0.14.nix b/nixpkgs/pkgs/development/ocaml-modules/janestreet/0.14.nix
index 116349746bf3..d22a87a92f3f 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/0.14.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/janestreet/0.14.nix
@@ -1,4 +1,5 @@
 { self
+, fetchpatch
 , lib
 , openssl
 , zstd
@@ -578,6 +579,18 @@ with self;
     propagatedBuildInputs = [ ppxlib ];
   };
 
+  ppx_python = janePackage {
+    pname = "ppx_python";
+    hash = "0gk4nqz4i9v3hwjg5mvgpgwj0dfcgpyc7ikba93cafyhn6fy83zk";
+    meta.description = "A [@@deriving] plugin to generate Python conversion functions ";
+    # Compatibility with ppxlib 0.23
+    patches = fetchpatch {
+      url = "https://github.com/janestreet/ppx_python/commit/b2fe0040cc39fa6164de868f8a20edb38d81170e.patch";
+      sha256 = "sha256:1mrdwp0zw3dqavzx3ffrmzq5cdlninyf67ksavfzxb8gb16w6zpz";
+    };
+    propagatedBuildInputs = [ ppx_base ppxlib pyml ];
+  };
+
   ppx_sexp_conv = janePackage {
     pname = "ppx_sexp_conv";
     version = "0.14.3";
@@ -647,6 +660,13 @@ with self;
     propagatedBuildInputs = [ core_kernel ];
   };
 
+  pythonlib = janePackage {
+    pname = "pythonlib";
+    hash = "0qr0mh9jiv1ham5zlz9i4im23a1vh6x1yp6dp2db2s4icmfph639";
+    meta.description = "A library to help writing wrappers around ocaml code for python";
+    propagatedBuildInputs = [ ppx_expect ppx_let ppx_python stdio typerep ];
+  };
+
   re2 = janePackage {
     pname = "re2";
     hash = "1j7dizls6lkz3i9dgf8nq2fm382mfbrmz72ci066zl3hkgdq8xwc";
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/async-rpc-kernel.nix b/nixpkgs/pkgs/development/ocaml-modules/janestreet/async-rpc-kernel.nix
deleted file mode 100644
index 15f391342bdb..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/async-rpc-kernel.nix
+++ /dev/null
@@ -1,18 +0,0 @@
-{lib, buildOcamlJane, async_kernel, bin_prot, core_kernel,
- fieldslib, ppx_assert, ppx_bench, ppx_driver, ppx_expect, ppx_inline_test,
- ppx_jane, sexplib, typerep, variantslib}:
-
-buildOcamlJane {
-  name = "async_rpc_kernel";
-  hash = "0pvys7giqix1nfidw1f4i3r94cf03ba1mvhadpm2zpdir3av91sw";
-  propagatedBuildInputs = [ async_kernel bin_prot core_kernel fieldslib
-    ppx_assert ppx_bench ppx_driver ppx_expect ppx_inline_test ppx_jane
-    sexplib typerep variantslib ];
-
-  meta = with lib; {
-    homepage = "https://github.com/janestreet/async_rpc_kernel";
-    description = "Platform-independent core of Async RPC library";
-    license = licenses.asl20;
-    maintainers = [ maintainers.maurer ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/bin_prot.nix b/nixpkgs/pkgs/development/ocaml-modules/janestreet/bin_prot.nix
deleted file mode 100644
index 5f3c2ab83ff4..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/bin_prot.nix
+++ /dev/null
@@ -1,17 +0,0 @@
-{lib, buildOcamlJane, type_conv}:
-
-buildOcamlJane {
-  name = "bin_prot";
-  version = "113.33.03";
-  minimumSupportedOcamlVersion = "4.02";
-  hash = "0jlarpfby755j0kikz6vnl1l6q0ga09b9zrlw6i84r22zchnqdsh";
-
-  propagatedBuildInputs = [ type_conv ];
-
-  meta = with lib; {
-    homepage = "https://github.com/janestreet/bin_prot";
-    description = "Binary protocol generator ";
-    license = licenses.asl20;
-    maintainers = [ maintainers.maurer maintainers.ericbmerritt ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/buildOcamlJane.nix b/nixpkgs/pkgs/development/ocaml-modules/janestreet/buildOcamlJane.nix
deleted file mode 100644
index 62876e5eaf94..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/buildOcamlJane.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ buildOcaml, opaline, js_build_tools, ocaml_oasis, fetchurl } :
-
-{ name, version ? "113.33.03", buildInputs ? [],
-  hash ? "",
-  minimumSupportedOcamlVersion ? "4.02", ...
-}@args:
-
-buildOcaml (args // {
-  inherit name version minimumSupportedOcamlVersion;
-  src = fetchurl {
-    url = "https://github.com/janestreet/${name}/archive/${version}.tar.gz";
-    sha256 = hash;
-  };
-
-  hasSharedObjects = true;
-
-  buildInputs = [ ocaml_oasis js_build_tools opaline ] ++ buildInputs;
-
-  dontAddPrefix = true;
-  dontAddStaticConfigureFlags = true;
-  configurePlatforms = [];
-
-  configurePhase = "./configure --prefix $out";
-
-  buildPhase = "OCAML_TOPLEVEL_PATH=`ocamlfind query findlib`/.. make";
-
-  installPhase = "opaline -prefix $prefix -libdir $OCAMLFIND_DESTDIR ${name}.install";
-
-})
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/core_bench.nix b/nixpkgs/pkgs/development/ocaml-modules/janestreet/core_bench.nix
deleted file mode 100644
index 52a9350eeeac..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/core_bench.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-{ lib
-, buildOcamlJane
-, core
-, core_extended
-, textutils
-}:
-
-buildOcamlJane {
-  name = "core_bench";
-  hash = "1d1ainpakgsf5rg8dvar12ksgilqcc4465jr8gf7fz5mmn0mlifj";
-  propagatedBuildInputs =
-    [ core core_extended textutils ];
-
-  meta = with lib; {
-    homepage = "https://github.com/janestreet/core_bench";
-    description = "Micro-benchmarking library for OCaml";
-    license = licenses.asl20;
-    maintainers = [ maintainers.pmahoney ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/fieldslib.nix b/nixpkgs/pkgs/development/ocaml-modules/janestreet/fieldslib.nix
deleted file mode 100644
index 6ed34f2a28c6..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/fieldslib.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-{ lib, type_conv, buildOcamlJane }:
-
-buildOcamlJane {
-  name = "fieldslib";
-  version = "113.33.03";
-
-  minimumSupportedOcamlVersion = "4.02";
-
-  hash = "0mkbix32f8sq32q81hb10z2q31bw5f431jxv0jafbdrif0vr6xqd";
-
-  propagatedBuildInputs = [ type_conv ];
-
-  meta = with lib; {
-    homepage = "https://ocaml.janestreet.com/";
-    description = "OCaml syntax extension to define first class values representing record fields, to get and set record fields, iterate and fold over all fields of a record and create new record values";
-    license = licenses.asl20;
-    maintainers = [ maintainers.maurer maintainers.vbgl ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/js-build-tools-darwin.patch b/nixpkgs/pkgs/development/ocaml-modules/janestreet/js-build-tools-darwin.patch
deleted file mode 100644
index 8878b4be68b8..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/js-build-tools-darwin.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/ocamlbuild_goodies/jane_street_ocamlbuild_goodies.ml
-+++ b/ocamlbuild_goodies/jane_street_ocamlbuild_goodies.ml
-@@ -65,7 +65,7 @@ let track_external_deps = function
-
-     let stat, md5sum =
-       match run_and_read "uname" |> String.trim with
--      | "Darwin" ->
-+      | "FreeBSD" | "NetBSD" ->
-         (S [A "stat"; A "-f"; A "%d:%i:%m"],
-          A "md5")
-       | _ ->
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/js-build-tools.nix b/nixpkgs/pkgs/development/ocaml-modules/janestreet/js-build-tools.nix
deleted file mode 100644
index 2f68ee8230e7..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/js-build-tools.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ lib, buildOcaml, fetchurl, ocaml_oasis, opaline }:
-
-buildOcaml rec {
-  name = "js-build-tools";
-  version = "113.33.06";
-
-  minimumSupportedOcamlVersion = "4.02";
-
-  src = fetchurl {
-    url = "https://github.com/janestreet/${name}/archive/${version}.tar.gz";
-    sha256 = "1nvgyp4gsnlnpix3li6kr90b12iin5ihichv298p03i6h2809dia";
-  };
-
-  hasSharedObjects = true;
-
-  buildInputs = [ ocaml_oasis opaline ];
-
-  dontAddPrefix = true;
-  dontAddStaticConfigureFlags = true;
-  configurePlatforms = [];
-  configurePhase = "./configure --prefix $prefix";
-  installPhase = "opaline -prefix $prefix -libdir $OCAMLFIND_DESTDIR ${name}.install";
-
-  patches = [ ./js-build-tools-darwin.patch ];
-
-  meta = with lib; {
-    description = "Jane Street Build Tools";
-    maintainers = [ maintainers.maurer ];
-    license = licenses.asl20;
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-assert.nix b/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-assert.nix
deleted file mode 100644
index 8f4eb7e41510..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-assert.nix
+++ /dev/null
@@ -1,16 +0,0 @@
-{lib, buildOcamlJane,
- ppx_compare, ppx_core, ppx_driver, ppx_here, ppx_sexp_conv, ppx_tools, ppx_type_conv, sexplib}:
-
-buildOcamlJane {
-  name = "ppx_assert";
-  hash = "0n7fa1j79ykbkhp8xz0ksg5096asri5d0msshsaqhw5fz18chvz4";
-  propagatedBuildInputs =
-    [ ppx_compare ppx_core ppx_driver ppx_here ppx_sexp_conv ppx_tools
-      ppx_type_conv sexplib ];
-
-  meta = with lib; {
-    description = "Assert-like extension nodes that raise useful errors on failure";
-    maintainers = [ maintainers.maurer ];
-    license = licenses.asl20;
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-bench.nix b/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-bench.nix
deleted file mode 100644
index 2aa1b208d503..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-bench.nix
+++ /dev/null
@@ -1,18 +0,0 @@
-{lib, buildOcamlJane,
- ppx_core, ppx_driver, ppx_inline_test, ppx_tools}:
-
-buildOcamlJane {
-  name = "ppx_bench";
-  minimumSupportedOcamlVersion = "4.02";
-  hash = "1l5jlwy1d1fqz70wa2fkf7izngp6nx3g4s9bmnd6ca4dx1x5bksk";
-
-  hasSharedObjects = true;
-
-  propagatedBuildInputs = [ ppx_core ppx_driver ppx_inline_test ppx_tools ];
-
-  meta = with lib; {
-    description = "Syntax extension for writing in-line benchmarks in ocaml code";
-    maintainers = [ maintainers.maurer ];
-    license = licenses.asl20;
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-bin-prot.nix b/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-bin-prot.nix
deleted file mode 100644
index 2dc64497ca23..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-bin-prot.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-{lib, buildOcamlJane,
- ppx_core, ppx_tools, ppx_type_conv, bin_prot}:
-
-buildOcamlJane {
-  name = "ppx_bin_prot";
-  hash = "0kwmrrrybdkmphqczsr3lg3imsxcjb8iy41syvn44s3kcjfyyzbz";
-  propagatedBuildInputs = [ ppx_core ppx_tools ppx_type_conv bin_prot ];
-
-  meta = with lib; {
-    description = "Generation of bin_prot readers and writers from types";
-    maintainers = [ maintainers.maurer ];
-    license = licenses.asl20;
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-compare.nix b/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-compare.nix
deleted file mode 100644
index 103f17c455ea..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-compare.nix
+++ /dev/null
@@ -1,15 +0,0 @@
-{lib, buildOcamlJane,
- ppx_core, ppx_driver, ppx_tools, ppx_type_conv}:
-
-buildOcamlJane {
-  name = "ppx_compare";
-  hash = "05cnwxfxm8201lpfmcqkcqfy6plh5c2151jbj4qsnxhlvvjli459";
-  propagatedBuildInputs =
-    [ppx_core ppx_driver ppx_tools ppx_type_conv ];
-
-  meta = with lib; {
-    description = "Generation of fast comparison functions from type expressions and definitions";
-    maintainers = [ maintainers.maurer ];
-    license = licenses.asl20;
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-custom-printf.nix b/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-custom-printf.nix
deleted file mode 100644
index 785cdbc31c07..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-custom-printf.nix
+++ /dev/null
@@ -1,15 +0,0 @@
-{lib, buildOcamlJane,
- ppx_core, ppx_driver, ppx_sexp_conv, ppx_tools}:
-
-buildOcamlJane {
-  name = "ppx_custom_printf";
-  hash = "06y85m6ky376byja4w7gdwd339di5ag0xrf0czkylzjsnylhdr85";
-
-  propagatedBuildInputs = [ ppx_core ppx_driver ppx_sexp_conv ppx_tools ];
-
-  meta = with lib; {
-    description = "Extensions to printf-style format-strings for user-defined string conversion";
-    maintainers = [ maintainers.maurer ];
-    license = licenses.asl20;
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-enumerate.nix b/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-enumerate.nix
deleted file mode 100644
index edb73814704f..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-enumerate.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-{lib, buildOcamlJane,
- ppx_core, ppx_tools, ppx_type_conv}:
-
-buildOcamlJane {
-  name = "ppx_enumerate";
-  hash = "0m11921q2pjzkwckf21fynd2qfy83n9jjsgks23yagdai8a7ym16";
-  propagatedBuildInputs = [ ppx_core ppx_tools ppx_type_conv ];
-
-  meta = with lib; {
-    description = "Generate a list containing all values of a finite type";
-    maintainers = [ maintainers.maurer ];
-    license = licenses.asl20;
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-expect.nix b/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-expect.nix
deleted file mode 100644
index 7506e09e30e0..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-expect.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-{lib, buildOcamlJane,
- ppx_assert, ppx_compare, ppx_core, ppx_custom_printf, ppx_driver,
- ppx_fields_conv, ppx_here, ppx_inline_test, ppx_sexp_conv, ppx_tools,
- ppx_variants_conv, re, sexplib, variantslib, fieldslib}:
-
-buildOcamlJane {
-  name = "ppx_expect";
-  hash = "0cwagb4cj3x1vsr19kyfa9pxlvaz9a5v863cahi5glinsh4mzgdx";
-  propagatedBuildInputs =
-    [ ppx_assert ppx_compare ppx_core ppx_custom_printf ppx_driver
-      ppx_fields_conv ppx_here ppx_inline_test ppx_sexp_conv ppx_tools
-      ppx_variants_conv re sexplib variantslib fieldslib ];
-
-  meta = with lib; {
-    description = "Cram-like framework for OCaml";
-    maintainers = [ maintainers.maurer ];
-    license = licenses.asl20;
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-fields-conv.nix b/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-fields-conv.nix
deleted file mode 100644
index 857e85f8f03a..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-fields-conv.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-{lib, buildOcamlJane,
- ppx_core, ppx_tools, ppx_type_conv}:
-
-buildOcamlJane {
-  name = "ppx_fields_conv";
-  hash = "11w9wfjgkv7yxv3rwlwi6m193zan6rhmi45q7n3ddi2s8ls3gra7";
-  propagatedBuildInputs = [ ppx_core ppx_tools ppx_type_conv ];
-
-  meta = with lib; {
-    description = "Generation of accessor and iteration functions for ocaml records";
-    maintainers = [ maintainers.maurer ];
-    license = licenses.asl20;
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-here.nix b/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-here.nix
deleted file mode 100644
index d9c7de65347e..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-here.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-{lib, buildOcamlJane,
- ppx_core, ppx_driver}:
-
-buildOcamlJane {
-  name = "ppx_here";
-  hash = "1mzdgn8k171zkwmbizf1a48l525ny0w3363c7gknpnifcinxniiw";
-  propagatedBuildInputs = [ ppx_core ppx_driver ];
-
-  meta = with lib; {
-    description = "A ppx rewriter that defines an extension node whose value is its source position";
-    maintainers = [ maintainers.maurer ];
-    license = licenses.asl20;
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-inline-test.nix b/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-inline-test.nix
deleted file mode 100644
index 0b9bb9838947..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-inline-test.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-{lib, buildOcamlJane,
- ppx_core, ppx_driver, ppx_tools}:
-
-buildOcamlJane {
-  name = "ppx_inline_test";
-  hash = "0ygapa54i0wwcj3jcqwiimrc6z0b7aafgjhbk37h6vvclnm5n7f6";
-  propagatedBuildInputs = [ ppx_core ppx_driver ppx_tools ];
-
-  meta = with lib; {
-    description = "Syntax extension for writing in-line tests in ocaml code";
-    maintainers = [ maintainers.maurer ];
-    license = licenses.asl20;
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-jane.nix b/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-jane.nix
deleted file mode 100644
index e6c51bebd52c..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-jane.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{lib, buildOcamlJane,
- ppx_assert,
- ppx_bench, ppx_bin_prot, ppx_compare, ppx_custom_printf, ppx_driver,
- ppx_enumerate, ppx_expect, ppx_fail, ppx_fields_conv, ppx_here,
- ppx_inline_test, ppx_let, ppx_pipebang, ppx_sexp_conv, ppx_sexp_message,
- ppx_sexp_value, ppx_typerep_conv, ppx_variants_conv}:
-
-buildOcamlJane {
-  name = "ppx_jane";
-  hash  = "1la0rp8fhzfglwb15gqh1pl1ld8ls4cnidaw9mjc5q1hb0yj1qd9";
-  propagatedBuildInputs =
-    [ ppx_assert ppx_bench ppx_bin_prot ppx_compare ppx_custom_printf
-      ppx_driver ppx_enumerate ppx_expect ppx_fail ppx_fields_conv
-      ppx_here ppx_inline_test ppx_let ppx_pipebang ppx_sexp_conv
-      ppx_sexp_message ppx_sexp_value ppx_typerep_conv ppx_variants_conv ];
-
-  meta = with lib; {
-    description = "A ppx_driver including all standard ppx rewriters";
-    maintainers = [ maintainers.maurer ];
-    license = licenses.asl20;
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-let.nix b/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-let.nix
deleted file mode 100644
index 49333fb0e865..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-let.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-{lib, buildOcamlJane,
- ppx_core, ppx_driver}:
-
-buildOcamlJane {
-  name = "ppx_let";
-  hash = "0whnfq4rgkq4apfqnvc100wlk25pmqdyvy6s21dsn3fcm9hff467";
-  propagatedBuildInputs = [ ppx_core ppx_driver ];
-
-  meta = with lib; {
-    description = "A ppx rewriter for monadic and applicative let bindings and match statements";
-    maintainers = [ maintainers.maurer ];
-    license = licenses.asl20;
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-optcomp.nix b/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-optcomp.nix
deleted file mode 100644
index 1ee00ecfa70f..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-optcomp.nix
+++ /dev/null
@@ -1,15 +0,0 @@
-{lib, buildOcamlJane,
- ppx_core, ppx_tools}:
-
-buildOcamlJane {
-  name = "ppx_optcomp";
-  hash = "09m2x2a5ics4bz1j29n5slhh1rlyhcwdfmf44v1jfxcby3f0riwd";
-  propagatedBuildInputs =
-    [ ppx_core ppx_tools ];
-
-  meta = with lib; {
-    description = "ppx_optcomp stands for Optional Compilation. It is a tool used to handle optional compilations of pieces of code depending of the word size, the version of the compiler, etc.";
-    maintainers = [ maintainers.maurer ];
-    license = licenses.asl20;
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-pipebang.nix b/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-pipebang.nix
deleted file mode 100644
index 9afc27e8a5dd..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-pipebang.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-{lib, buildOcamlJane,
- ppx_core, ppx_driver, ppx_tools}:
-
-buildOcamlJane {
-  name = "ppx_pipebang";
-  hash = "0k25bhj9ziiw89xvs4svz7cgazbbmprba9wbic2llffg55fp7acc";
-  propagatedBuildInputs = [ ppx_core ppx_driver ppx_tools ];
-
-  meta = with lib; {
-    description = "A ppx rewriter that inlines reverse application operators |> and |!";
-    maintainers = [ maintainers.maurer ];
-    license = licenses.asl20;
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-sexp-conv.nix b/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-sexp-conv.nix
deleted file mode 100644
index 537a5941a9fd..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-sexp-conv.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-{lib, buildOcamlJane,
- ppx_core, ppx_tools, ppx_type_conv, sexplib}:
-
-buildOcamlJane {
-  name = "ppx_sexp_conv";
-  hash = "1kgbmlc11w5jhbhmy5n0f734l44zwyry48342dm5qydi9sfzcgq2";
-  propagatedBuildInputs = [ ppx_core ppx_tools ppx_type_conv sexplib];
-
-  meta = with lib; {
-    description = "PPX syntax extension that generates code for converting OCaml types to and from s-expressions, as defined in the sexplib library";
-    maintainers = [ maintainers.maurer ];
-    license = licenses.asl20;
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-sexp-message.nix b/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-sexp-message.nix
deleted file mode 100644
index 714c3356ea0c..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-sexp-message.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-{lib, buildOcamlJane,
- ppx_core, ppx_driver, ppx_here, ppx_sexp_conv, ppx_tools}:
-
-buildOcamlJane {
-  name = "ppx_sexp_message";
-  hash = "0inbff25qii868p141jb1y8n3vjfyz66jpnsl9nma6nkkyjkp05j";
-  propagatedBuildInputs = [ ppx_core ppx_driver ppx_here ppx_sexp_conv ppx_tools ];
-
-  meta = with lib; {
-    description = "Easy construction of S-Expressions";
-    maintainers = [ maintainers.maurer ];
-    license = licenses.asl20;
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-sexp-value.nix b/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-sexp-value.nix
deleted file mode 100644
index 5bfbd185cee9..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-sexp-value.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-{lib, buildOcamlJane,
- ppx_core, ppx_driver, ppx_here, ppx_sexp_conv, ppx_tools}:
-
-buildOcamlJane {
-  name = "ppx_sexp_value";
-  hash = "04602ppqfwx33ghjywam00hlqqzsz4d99r60k9q0v1mynk9pjhj0";
-  propagatedBuildInputs = [ ppx_core ppx_driver ppx_here ppx_sexp_conv ppx_tools ];
-
-  meta = with lib; {
-    description = "A ppx rewriter that simplifies building S-Expression from OCaml Values";
-    maintainers = [ maintainers.maurer ];
-    license = licenses.asl20;
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-typerep-conv.nix b/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-typerep-conv.nix
deleted file mode 100644
index 842e90276b73..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-typerep-conv.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-{lib, buildOcamlJane,
- ppx_core, ppx_tools, ppx_type_conv, typerep}:
-
-buildOcamlJane {
-  name = "ppx_typerep_conv";
-  hash = "0dldlx73r07j6w0i7h4hxly0v678naa79na5rafsk2974gs5ih9g";
-  propagatedBuildInputs = [ ppx_core ppx_tools ppx_type_conv typerep ];
-
-  meta = with lib; {
-    description = "Automatic generation of runtime types from type definitions";
-    maintainers = [ maintainers.maurer ];
-    license = licenses.asl20;
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-variants-conv.nix b/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-variants-conv.nix
deleted file mode 100644
index a2c8de8a8deb..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/ppx-variants-conv.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-{lib, buildOcamlJane,
- ppx_core, ppx_tools, ppx_type_conv, sexplib, variantslib}:
-
-buildOcamlJane {
-  name = "ppx_variants_conv";
-  hash = "0kgal8b9yh7wrd75hllb9fyl6zbksfnr9k7pykpzdm3js98dirhn";
-  propagatedBuildInputs = [ ppx_core ppx_tools ppx_type_conv sexplib variantslib ];
-
-  meta = with lib; {
-    description = "Generation of accessor and iteration functions for ocaml variant types";
-    maintainers = [ maintainers.maurer ];
-    license = licenses.asl20;
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/sexplib.nix b/nixpkgs/pkgs/development/ocaml-modules/janestreet/sexplib.nix
deleted file mode 100644
index b0b2ce3a451e..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/sexplib.nix
+++ /dev/null
@@ -1,18 +0,0 @@
-{lib, buildOcamlJane, type_conv}:
-
-buildOcamlJane {
-  minimumSupportedOcamlVersion = "4.02";
-  name = "sexplib";
-  version = "113.33.03";
-
-  hash = "1klar4qw4s7bj47ig7kxz2m4j1q3c60pfppis4vxrxv15r0kfh22";
-
-  propagatedBuildInputs = [ type_conv ];
-
-  meta = with lib; {
-    homepage = "https://ocaml.janestreet.com/";
-    description = "Library for serializing OCaml values to and from S-expressions";
-    license = licenses.asl20;
-    maintainers = [ maintainers.maurer maintainers.ericbmerritt ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/typerep.nix b/nixpkgs/pkgs/development/ocaml-modules/janestreet/typerep.nix
deleted file mode 100644
index 41e845b362ea..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/typerep.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-{lib, buildOcamlJane, type_conv}:
-
-buildOcamlJane {
-  name = "typerep";
-  version = "113.33.03";
-
-  minimumSupportedOcamlVersion = "4.00";
-
-  hash = "1ss34nq20vfgx8hwi5sswpmn3my9lvrpdy5dkng746xchwi33ar7";
-
-  propagatedBuildInputs = [ type_conv ];
-
-  meta = with lib; {
-    homepage = "https://github.com/janestreet/typerep";
-    description = "Runtime types for OCaml (beta version)";
-    license = licenses.asl20;
-    maintainers = [ maintainers.maurer maintainers.ericbmerritt ];
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/janestreet/variantslib.nix b/nixpkgs/pkgs/development/ocaml-modules/janestreet/variantslib.nix
deleted file mode 100644
index 053ab412f88d..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/janestreet/variantslib.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-{lib, buildOcamlJane, type_conv}:
-
-buildOcamlJane {
-  name = "variantslib";
-  version = "113.33.03";
-
-  minimumSupportedOcamlVersion = "4.00";
-
-  hash = "1hv0f75msrryxsl6wfnbmhc0n8kf7qxs5f82ry3b8ldb44s3wigp";
-
-  propagatedBuildInputs = [ type_conv ];
-
-  meta = with lib; {
-    homepage = "https://github.com/janestreet/variantslib";
-    description = "OCaml variants as first class values";
-    license = licenses.asl20;
-    maintainers = [ maintainers.maurer maintainers.ericbmerritt ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/javalib/default.nix b/nixpkgs/pkgs/development/ocaml-modules/javalib/default.nix
index 15678f89da3c..78b61de8d9c1 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/javalib/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/javalib/default.nix
@@ -1,5 +1,11 @@
-{ lib, stdenv, fetchzip, which, ocaml, findlib
-, camlzip, extlib
+{ lib
+, stdenv
+, fetchFromGitHub
+, which
+, ocaml
+, findlib
+, camlzip
+, extlib
 }:
 
 if !lib.versionAtLeast ocaml.version "4.04"
@@ -7,12 +13,14 @@ then throw "javalib is not available for OCaml ${ocaml.version}"
 else
 
 stdenv.mkDerivation rec {
-  name = "ocaml${ocaml.version}-javalib-${version}";
+  pname = "ocaml${ocaml.version}-javalib";
   version = "3.2.1";
 
-  src = fetchzip {
-    url = "https://github.com/javalib-team/javalib/archive/v${version}.tar.gz";
-    sha256 = "1fkdaiiza145yv0r1cm0n2hsrr0rbn6b27vs66njgv405zwn3vbn";
+  src = fetchFromGitHub {
+    owner = "javalib-team";
+    repo = "javalib";
+    rev = "v${version}";
+    sha256 = "sha256-du1h+S+A7CetMXofsYxdGeSsobCgspDB9oUE9WNUbbo=";
   };
 
   buildInputs = [ which ocaml findlib ];
@@ -26,7 +34,7 @@ stdenv.mkDerivation rec {
   configureScript = "./configure.sh";
   dontAddPrefix = "true";
   dontAddStaticConfigureFlags = true;
-  configurePlatforms = [];
+  configurePlatforms = [ ];
 
   propagatedBuildInputs = [ camlzip extlib ];
 
diff --git a/nixpkgs/pkgs/development/ocaml-modules/junit/default.nix b/nixpkgs/pkgs/development/ocaml-modules/junit/default.nix
index c91625e823b0..4c1df880ec86 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/junit/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/junit/default.nix
@@ -20,7 +20,7 @@ buildDunePackage (rec {
   meta = with lib; {
     description = "ocaml-junit is an OCaml package for the creation of JUnit XML reports, proving a typed API to produce valid reports acceptable to Jenkins, comes with packages supporting OUnit and Alcotest.";
     license = licenses.gpl3;
-    maintainers = with maintainers; [ superherointj ];
+    maintainers = with maintainers; [ ];
     homepage = "https://github.com/Khady/ocaml-junit";
   };
 })
diff --git a/nixpkgs/pkgs/development/ocaml-modules/lablgl/default.nix b/nixpkgs/pkgs/development/ocaml-modules/lablgl/default.nix
index 3d57c4e40ed6..da4318aef4c1 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/lablgl/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/lablgl/default.nix
@@ -1,34 +1,36 @@
-{lib, stdenv, fetchurl, ocaml, lablgtk, findlib, libGLU, libGL, freeglut, camlp4 } :
+{ lib, stdenv, fetchFromGitHub, ocaml, findlib, libGLU, libGL, freeglut } :
 
-let
-  pname = "lablgl";
-in
+if !lib.versionAtLeast ocaml.version "4.03"
+then throw "lablgl is not available for OCaml ${ocaml.version}"
+else
 
 stdenv.mkDerivation rec {
-  name = "${pname}-${version}";
-  version = "1.05";
-
-  src = fetchurl {
-    url = "http://wwwfun.kurims.kyoto-u.ac.jp/soft/lsl/dist/lablgl-${version}.tar.gz";
-    sha256 = "0qabydd219i4ak7hxgc67496qnnscpnydya2m4ijn3cpbgih7zyq";
+  pname = "ocaml${ocaml.version}-lablgl";
+  version = "1.06";
+
+  src = fetchFromGitHub {
+    owner = "garrigue";
+    repo = "lablgl";
+    rev = "v${version}";
+    sha256 = "sha256:141kc816iv59z96738i3vn9m9iw9g2zhi45hk4cchpwd99ar5l6k";
   };
 
-  buildInputs = [ocaml findlib lablgtk freeglut camlp4];
+  buildInputs = [ ocaml findlib freeglut ];
   propagatedBuildInputs = [ libGLU libGL ];
 
   patches = [ ./Makefile.config.patch ./META.patch ];
 
   preConfigure = ''
+    mkdir -p $out/bin
+    mkdir -p $out/lib/ocaml/${ocaml.version}/site-lib/stublibs
     substituteInPlace Makefile.config \
-      --subst-var-by BINDIR $out/bin \
-      --subst-var-by INSTALLDIR $out/lib/ocaml/${ocaml.version}/site-lib/lablgl \
-      --subst-var-by DLLDIR $out/lib/ocaml/${ocaml.version}/site-lib/lablgl \
+      --subst-var-by BINDIR $out/bin/ \
+      --subst-var-by INSTALLDIR $out/lib/ocaml/${ocaml.version}/site-lib/lablgl/ \
+      --subst-var-by DLLDIR $out/lib/ocaml/${ocaml.version}/site-lib/stublibs/ \
       --subst-var-by TKINCLUDES "" \
       --subst-var-by XINCLUDES ""
   '';
 
-  createFindlibDestdir = true;
-
   buildFlags = [ "lib" "libopt" "glut" "glutopt" ];
 
   postInstall = ''
diff --git a/nixpkgs/pkgs/development/ocaml-modules/lablgtk-extras/1.4.nix b/nixpkgs/pkgs/development/ocaml-modules/lablgtk-extras/1.4.nix
index 70cc88d21166..f2fbc71b5a93 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/lablgtk-extras/1.4.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/lablgtk-extras/1.4.nix
@@ -1,9 +1,11 @@
 { stdenv, lib, fetchurl, ocaml, findlib, camlp4, config-file, lablgtk, xmlm }:
 
-stdenv.mkDerivation {
-  name = "ocaml-lablgtk-extras-1.4";
+stdenv.mkDerivation rec {
+  pname = "ocaml-lablgtk-extras";
+  version = "1.4";
+
   src = fetchurl {
-    url = "http://forge.ocamlcore.org/frs/download.php/1282/lablgtkextras-1.4.tar.gz";
+    url = "http://forge.ocamlcore.org/frs/download.php/1282/lablgtkextras-${version}.tar.gz";
     sha256 = "09fqxwdib7r9yxynknc9gv3jw2hnhj5cak7q5jngk6m8rzvmhfcc";
   };
 
@@ -13,7 +15,7 @@ stdenv.mkDerivation {
   createFindlibDestdir = true;
 
   meta = {
-    platforms = ocaml.meta.platforms or [];
+    platforms = ocaml.meta.platforms or [ ];
     maintainers = with lib.maintainers; [ vbgl ];
     homepage = "http://gtk-extras.forge.ocamlcore.org/";
     description = "A collection of libraries and modules useful when developing OCaml/LablGtk2 applications";
diff --git a/nixpkgs/pkgs/development/ocaml-modules/lablgtk-extras/default.nix b/nixpkgs/pkgs/development/ocaml-modules/lablgtk-extras/default.nix
index 3cd13b2c4d6c..373e5ded952a 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/lablgtk-extras/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/lablgtk-extras/default.nix
@@ -1,11 +1,15 @@
-{ stdenv, lib, fetchFromGitHub, ocaml, findlib, camlp4, config-file, lablgtk, xmlm }:
+{ stdenv, lib, fetchFromGitLab, ocaml, findlib, camlp4, config-file, lablgtk, xmlm }:
 
-assert lib.versionAtLeast (lib.getVersion ocaml) "4.02";
+if !lib.versionAtLeast ocaml.version "4.02"
+|| lib.versionAtLeast ocaml.version "4.13"
+then throw "lablgtk-extras is not available for OCaml ${ocaml.version}"
+else
 
 stdenv.mkDerivation rec {
   version = "1.6";
   name = "ocaml${ocaml.version}-lablgtk-extras-${version}";
-  src = fetchFromGitHub {
+  src = fetchFromGitLab {
+    domain = "framagit.org";
     owner = "zoggy";
     repo = "lablgtk-extras";
     rev = "release-${version}";
@@ -18,9 +22,9 @@ stdenv.mkDerivation rec {
   createFindlibDestdir = true;
 
   meta = {
-    platforms = ocaml.meta.platforms or [];
+    inherit (ocaml.meta) platforms;
     maintainers = with lib.maintainers; [ vbgl ];
-    homepage = "http://gtk-extras.forge.ocamlcore.org/";
+    homepage = "https://framagit.org/zoggy/lablgtk-extras/";
     description = "A collection of libraries and modules useful when developing OCaml/LablGtk2 applications";
     license = lib.licenses.lgpl2Plus;
   };
diff --git a/nixpkgs/pkgs/development/ocaml-modules/lambdasoup/default.nix b/nixpkgs/pkgs/development/ocaml-modules/lambdasoup/default.nix
index de5fbf63b383..d7d0028b2c15 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/lambdasoup/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/lambdasoup/default.nix
@@ -2,9 +2,9 @@
 
 buildDunePackage rec {
   pname = "lambdasoup";
-  version = "0.7.2";
+  version = "0.7.3";
 
-  minimumOCamlVersion = "4.02";
+  minimalOCamlVersion = "4.02";
 
   useDune2 = true;
 
@@ -12,7 +12,7 @@ buildDunePackage rec {
     owner = "aantron";
     repo = pname;
     rev = version;
-    sha256 = "0php51lyz3ll0psazjd59yw02xb9w84150gkyiwmn3fa0iq8nf7m";
+    sha256 = "sha256:1wclkn1pl0d150dw0xswb29jc7y1q9mhipff1pnsc1hli3pyvvb7";
   };
 
   propagatedBuildInputs = [ markup ];
diff --git a/nixpkgs/pkgs/development/ocaml-modules/letsencrypt/app.nix b/nixpkgs/pkgs/development/ocaml-modules/letsencrypt/app.nix
index dc9006d6d16b..de1dbbb8c849 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/letsencrypt/app.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/letsencrypt/app.nix
@@ -12,6 +12,7 @@
 , bos
 , fpath
 , randomconv
+, cstruct
 }:
 
 buildDunePackage {
@@ -37,6 +38,7 @@ buildDunePackage {
     bos
     fpath
     randomconv
+    cstruct
   ];
 
   meta = letsencrypt.meta // {
diff --git a/nixpkgs/pkgs/development/ocaml-modules/letsencrypt/default.nix b/nixpkgs/pkgs/development/ocaml-modules/letsencrypt/default.nix
index 623fba942f2f..a0646517b1bc 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/letsencrypt/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/letsencrypt/default.nix
@@ -1,15 +1,14 @@
 { buildDunePackage
 , lib
 , fetchurl
-, astring
 , asn1-combinators
 , uri
-, rresult
 , base64
 , logs
 , fmt
 , lwt
 , mirage-crypto
+, mirage-crypto-ec
 , mirage-crypto-pk
 , mirage-crypto-rng
 , x509
@@ -17,15 +16,16 @@
 , ounit
 , ptime
 , domain-name
+, cstruct
 }:
 
 buildDunePackage rec {
   pname = "letsencrypt";
-  version = "0.3.0";
+  version = "0.4.1";
 
   src = fetchurl {
     url = "https://github.com/mmaker/ocaml-letsencrypt/releases/download/v${version}/letsencrypt-v${version}.tbz";
-    sha256 = "8772b7e6dbda0559a03a7b23b75c1431d42ae09a154eefd64b4c7e23b8d92deb";
+    sha256 = "f90875f5c9bdcab4c8be5ec7ebe9ea763030fa708e02857300996bb16e7c2070";
   };
 
   minimumOCamlVersion = "4.08";
@@ -43,12 +43,12 @@ buildDunePackage rec {
     lwt
     base64
     mirage-crypto
+    mirage-crypto-ec
     mirage-crypto-pk
     asn1-combinators
     x509
     uri
-    rresult
-    astring
+    cstruct
   ];
 
   doCheck = true;
diff --git a/nixpkgs/pkgs/development/ocaml-modules/lwt/camlp4.nix b/nixpkgs/pkgs/development/ocaml-modules/lwt/camlp4.nix
index fbf920d9621d..88bb3d6759a0 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/lwt/camlp4.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/lwt/camlp4.nix
@@ -2,7 +2,7 @@
 
 buildDunePackage rec {
   pname = "lwt_camlp4";
-  version = "git-20180325";
+  version = "unstable-2018-03-25";
 
   src = fetchFromGitHub {
     owner = "ocsigen";
diff --git a/nixpkgs/pkgs/development/ocaml-modules/lwt/default.nix b/nixpkgs/pkgs/development/ocaml-modules/lwt/default.nix
index 7d6424564d2f..76e973a813e4 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/lwt/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/lwt/default.nix
@@ -1,4 +1,4 @@
-{ lib, fetchzip, pkg-config, ncurses, libev, buildDunePackage, ocaml
+{ lib, fetchFromGitHub, pkg-config, ncurses, libev, buildDunePackage, ocaml
 , cppo, dune-configurator, ocplib-endian, result
 , mmap, seq
 , ocaml-syntax-shims
@@ -12,14 +12,15 @@ buildDunePackage rec {
 
   useDune2 = true;
 
-  src = fetchzip {
-    url = "https://github.com/ocsigen/${pname}/archive/${version}.tar.gz";
-    sha256 = "0cq2qy23sa1a5zk6nja3c652mp29i84yfrkcwks6i8sdqwli36jy";
+  src = fetchFromGitHub {
+    owner = "ocsigen";
+    repo = "lwt";
+    rev = version;
+    sha256 = "sha256-XpoRKcdNo2j05Gxm5wmKSdwqimFDSWvmLyooPYTHAjM=";
   };
 
-  nativeBuildInputs = [ pkg-config ];
-  buildInputs = [ cppo dune-configurator ]
-   ++ optional (!versionAtLeast ocaml.version "4.08") ocaml-syntax-shims
+  nativeBuildInputs = [ pkg-config cppo dune-configurator ];
+  buildInputs = optional (!versionAtLeast ocaml.version "4.08") ocaml-syntax-shims
    ++ optional (!versionAtLeast ocaml.version "4.07") ncurses;
   propagatedBuildInputs = [ libev mmap ocplib-endian seq result ];
 
diff --git a/nixpkgs/pkgs/development/ocaml-modules/lwt_ssl/default.nix b/nixpkgs/pkgs/development/ocaml-modules/lwt_ssl/default.nix
index 173094aacb84..64decd8e5d63 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/lwt_ssl/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/lwt_ssl/default.nix
@@ -1,4 +1,4 @@
-{ lib, fetchzip, buildDunePackage, ssl, lwt }:
+{ lib, fetchFromGitHub, buildDunePackage, ssl, lwt }:
 
 buildDunePackage rec {
   pname = "lwt_ssl";
@@ -7,9 +7,11 @@ buildDunePackage rec {
   minimumOCamlVersion = "4.02";
   useDune2 = true;
 
-  src = fetchzip {
-    url = "https://github.com/aantron/${pname}/archive/${version}.tar.gz";
-    sha256 = "0v417ch5zn0yknj156awa5mrq3mal08pbrvsyribbn63ix6f9y3p";
+  src = fetchFromGitHub {
+    owner = "aantron";
+    repo = "lwt_ssl";
+    rev = version;
+    sha256 = "sha256-d/jkTI/D2LVi9nrndRGgqg6ca1FcmRKknR7YXyA7gWw=";
   };
 
   propagatedBuildInputs = [ ssl lwt ];
diff --git a/nixpkgs/pkgs/development/ocaml-modules/macaque/default.nix b/nixpkgs/pkgs/development/ocaml-modules/macaque/default.nix
index 61ee7ebfe9c5..a91e898227d6 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/macaque/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/macaque/default.nix
@@ -1,10 +1,14 @@
-{ lib, stdenv, fetchzip, ocaml, findlib, ocamlbuild, pgocaml, camlp4 }:
+{ lib, stdenv, fetchFromGitHub, ocaml, findlib, ocamlbuild, pgocaml, camlp4 }:
 
-stdenv.mkDerivation {
-  name = "ocaml-macaque-0.7.2";
-  src = fetchzip {
-    url = "https://github.com/ocsigen/macaque/archive/0.7.2.tar.gz";
-    sha256 = "14i0a8cndzndjmlkyhf31r451q99cnkndgxcj0id4qjqhdl4bmjv";
+stdenv.mkDerivation rec {
+  pname = "ocaml-macaque";
+  version = "0.7.2";
+
+  src = fetchFromGitHub {
+    owner = "ocsigen";
+    repo = "macaque";
+    rev = version;
+    sha256 = "sha256-W9ZFaINYYtIikKy/ZqdlKeFQSA7DQT9plc3+ZhlSIJI=";
   };
 
   buildInputs = [ ocaml findlib ocamlbuild camlp4 ];
@@ -16,7 +20,7 @@ stdenv.mkDerivation {
     description = "Macros for Caml Queries";
     homepage = "https://github.com/ocsigen/macaque";
     license = licenses.lgpl2;
-    platforms = ocaml.meta.platforms or [];
+    platforms = ocaml.meta.platforms or [ ];
     maintainers = with maintainers; [ vbgl ];
   };
 }
diff --git a/nixpkgs/pkgs/development/ocaml-modules/magick/default.nix b/nixpkgs/pkgs/development/ocaml-modules/magick/default.nix
index 016c059573b0..f9fec120a625 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/magick/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/magick/default.nix
@@ -4,10 +4,12 @@ if lib.versionAtLeast ocaml.version "4.06"
 then throw "magick is not available for OCaml ${ocaml.version}"
 else
 
-stdenv.mkDerivation {
-  name = "ocaml-magick-0.34";
+stdenv.mkDerivation rec {
+  pname = "ocaml-magick";
+  version = "0.34";
+
   src = fetchurl {
-    url = "http://www.linux-nantes.org/~fmonnier/OCaml/ImageMagick/ImageMagick/OCaml-ImageMagick-0.34.tgz";
+    url = "http://www.linux-nantes.org/~fmonnier/OCaml/ImageMagick/ImageMagick/OCaml-ImageMagick-${version}.tgz";
     sha256 = "0gn9l2qdr8gby2x8c2mb59x1kipb2plr45rbq6ymcxyi0wmzfh3q";
   };
 
diff --git a/nixpkgs/pkgs/development/ocaml-modules/markup/default.nix b/nixpkgs/pkgs/development/ocaml-modules/markup/default.nix
index a8246e1cc7e8..8d35ae641a6a 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/markup/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/markup/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildDunePackage, fetchzip, ocaml, uchar, uutf, ounit2 }:
+{ lib, buildDunePackage, fetchFromGitHub, ocaml, uchar, uutf, ounit2 }:
 
 buildDunePackage rec {
   pname = "markup";
@@ -6,9 +6,11 @@ buildDunePackage rec {
 
   useDune2 = true;
 
-  src = fetchzip {
-    url = "https://github.com/aantron/markup.ml/archive/${version}.tar.gz";
-    sha256 = "09hkrf9pw6hpb9j06p5bddklpnjwdjpqza3bx2179l970yl67an9";
+  src = fetchFromGitHub {
+    owner = "aantron";
+    repo = "markup.ml";
+    rev = version;
+    sha256 = "sha256-yapjqAcn0XSC6Guoj69sXNpLZ2urXANkWhcafpPLEyY=";
   };
 
   propagatedBuildInputs = [ uchar uutf ];
diff --git a/nixpkgs/pkgs/development/ocaml-modules/mccs/default.nix b/nixpkgs/pkgs/development/ocaml-modules/mccs/default.nix
index 3b396215e575..beadceff02b0 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/mccs/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/mccs/default.nix
@@ -24,6 +24,6 @@ buildDunePackage rec {
     downloadPage = "https://github.com/AltGr/ocaml-mccs";
     homepage = "https://www.i3s.unice.fr/~cpjm/misc/";
     license = with licenses; [ lgpl21 gpl3 ];
-    maintainers = with maintainers; [ superherointj ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/ocaml-modules/mdx/default.nix b/nixpkgs/pkgs/development/ocaml-modules/mdx/default.nix
index 2677f56584e7..e5132d64d4d5 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/mdx/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/mdx/default.nix
@@ -5,12 +5,12 @@
 
 buildDunePackage rec {
   pname = "mdx";
-  version = "1.11.0";
+  version = "1.11.1";
   useDune2 = true;
 
   src = fetchurl {
     url = "https://github.com/realworldocaml/mdx/releases/download/${version}/mdx-${version}.tbz";
-    sha256 = "1hk8ffh3d9hiibrj6691khnbmjnfs9psmiawnrbgi0577bw030wx";
+    sha256 = "sha256:1q6169gmynnbrvlnzlmx7lpd6hwv6vwxg5j8ibc88wgs5s0r0fb0";
   };
 
   nativeBuildInputs = [ cppo ];
diff --git a/nixpkgs/pkgs/development/ocaml-modules/menhir/default.nix b/nixpkgs/pkgs/development/ocaml-modules/menhir/default.nix
index 686cf9820580..1938206361e5 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/menhir/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/menhir/default.nix
@@ -5,6 +5,8 @@
 buildDunePackage rec {
   pname = "menhir";
 
+  minimalOCamlVersion = "4.03";
+
   inherit (menhirLib) version src useDune2;
 
   buildInputs = [ menhirLib menhirSdk ];
diff --git a/nixpkgs/pkgs/development/ocaml-modules/menhir/lib.nix b/nixpkgs/pkgs/development/ocaml-modules/menhir/lib.nix
index 3f6660f23ee9..4d27fe327389 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/menhir/lib.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/menhir/lib.nix
@@ -2,14 +2,14 @@
 
 buildDunePackage rec {
   pname = "menhirLib";
-  version = "20210419";
+  version = "20211128";
 
   src = fetchFromGitLab {
     domain = "gitlab.inria.fr";
     owner = "fpottier";
     repo = "menhir";
     rev = version;
-    sha256 = "0jcbr7s3iwfr7xxfybs3h407g76yfp5yq5r9i0wg2ahvvbqh03ky";
+    sha256 = "sha256-L/zfjPZfn9L7qqqqJGk3Ge52rvujOVPiL8jxfH5R60g=";
   };
 
   useDune2 = true;
diff --git a/nixpkgs/pkgs/development/ocaml-modules/minisat/default.nix b/nixpkgs/pkgs/development/ocaml-modules/minisat/default.nix
index f9d37d6b4faf..433431d8f9c0 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/minisat/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/minisat/default.nix
@@ -2,7 +2,7 @@
 
 buildDunePackage rec {
   pname = "minisat";
-  version = "0.3";
+  version = "0.4";
 
   useDune2 = true;
 
@@ -12,7 +12,7 @@ buildDunePackage rec {
     owner  = "c-cube";
     repo   = "ocaml-minisat";
     rev    = "v${version}";
-    sha256 = "01wggbziqz5x6d7mwdl40sbf6qal7fd853b224zjf9n0kzzsnczh";
+    sha256 = "009jncrvnl9synxx6jnm6gp0cs7zlj71z22zz7bs1750b0jrfm2r";
   };
 
   meta = {
diff --git a/nixpkgs/pkgs/development/ocaml-modules/mirage-crypto/default.nix b/nixpkgs/pkgs/development/ocaml-modules/mirage-crypto/default.nix
index f1ca1fef7028..102d3d2de07e 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/mirage-crypto/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/mirage-crypto/default.nix
@@ -1,4 +1,4 @@
-{ lib, fetchurl, buildDunePackage, ounit, cstruct, dune-configurator, eqaf, bigarray-compat, pkg-config
+{ lib, fetchurl, buildDunePackage, ounit, cstruct, dune-configurator, eqaf, pkg-config
 , withFreestanding ? false
 , ocaml-freestanding
 }:
@@ -7,11 +7,11 @@ buildDunePackage rec {
   minimumOCamlVersion = "4.08";
 
   pname = "mirage-crypto";
-  version = "0.10.3";
+  version = "0.10.5";
 
   src = fetchurl {
     url = "https://github.com/mirage/mirage-crypto/releases/download/v${version}/mirage-crypto-v${version}.tbz";
-    sha256 = "a27910365d59b02c3f0e8a40d93a5b81835acf832e1ffa596ee772b41e8a900b";
+    sha256 = "sha256-eeKMSRZrBiTzWLv80P5LeouPib24uTigk2HLtORKpJU=";
   };
 
   useDune2 = true;
@@ -21,7 +21,7 @@ buildDunePackage rec {
 
   nativeBuildInputs = [ dune-configurator pkg-config ];
   propagatedBuildInputs = [
-    cstruct eqaf bigarray-compat
+    cstruct eqaf
   ] ++ lib.optionals withFreestanding [
     ocaml-freestanding
   ];
diff --git a/nixpkgs/pkgs/development/ocaml-modules/mirage-crypto/pk.nix b/nixpkgs/pkgs/development/ocaml-modules/mirage-crypto/pk.nix
index d6c4d494510d..82400b5da7c2 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/mirage-crypto/pk.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/mirage-crypto/pk.nix
@@ -1,5 +1,5 @@
 { buildDunePackage, ounit, randomconv, mirage-crypto, mirage-crypto-rng
-, cstruct, sexplib, ppx_sexp_conv, zarith, eqaf, rresult, gmp }:
+, cstruct, sexplib0, zarith, eqaf, gmp }:
 
 buildDunePackage {
   pname = "mirage-crypto-pk";
@@ -8,7 +8,7 @@ buildDunePackage {
 
   buildInputs = [ gmp ];
   propagatedBuildInputs = [ cstruct mirage-crypto mirage-crypto-rng
-                            zarith eqaf rresult sexplib ppx_sexp_conv ];
+                            zarith eqaf sexplib0 ];
 
   doCheck = true;
   checkInputs = [ ounit randomconv ];
diff --git a/nixpkgs/pkgs/development/ocaml-modules/mirage/runtime.nix b/nixpkgs/pkgs/development/ocaml-modules/mirage/runtime.nix
index 4a876658d181..ce50ffd2c3ae 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/mirage/runtime.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/mirage/runtime.nix
@@ -3,7 +3,7 @@
 
 buildDunePackage rec {
   pname = "mirage-runtime";
-  version = "3.10.4";
+  version = "3.10.7";
 
   useDune2 = true;
 
@@ -11,7 +11,7 @@ buildDunePackage rec {
 
   src = fetchurl {
     url = "https://github.com/mirage/mirage/releases/download/v${version}/mirage-v${version}.tbz";
-    sha256 = "c2ea22b6faf16bed783cac0e0bafd87f321756a91798f56c9a930f0edb5d9116";
+    sha256 = "fec4492239c6d1fdd73db4da0782e33e66202e19595bf1d52aa98972296cc72d";
   };
 
   propagatedBuildInputs = [ ipaddr functoria-runtime fmt logs ocaml_lwt ];
diff --git a/nixpkgs/pkgs/development/ocaml-modules/mrmime/default.nix b/nixpkgs/pkgs/development/ocaml-modules/mrmime/default.nix
new file mode 100644
index 000000000000..a5c2a68ee47b
--- /dev/null
+++ b/nixpkgs/pkgs/development/ocaml-modules/mrmime/default.nix
@@ -0,0 +1,74 @@
+{ afl-persistent
+, alcotest
+, angstrom
+, base64
+, bigarray-compat
+, bigarray-overlap
+, bigstringaf
+, buildDunePackage
+, emile
+, fetchzip
+, fmt
+, fpath
+, hxd
+, ipaddr
+, jsonm
+, ke
+, lib
+, mirage-crypto-rng
+, pecu
+, prettym
+, ptime
+, rosetta
+, rresult
+, unstrctrd
+, uutf
+}:
+
+buildDunePackage rec {
+  pname = "mrmime";
+  version = "0.5.0";
+
+  src = fetchzip {
+    url = "https://github.com/mirage/mrmime/releases/download/v${version}/mrmime-v${version}.tbz";
+    sha256 = "14k67v0b39b8jq3ny2ymi8g8sqx2gd81mlzsjphdzdqnlx6fk716";
+  };
+
+  useDune2 = true;
+
+  propagatedBuildInputs = [
+    angstrom
+    base64
+    emile
+    fmt
+    ipaddr
+    ke
+    pecu
+    prettym
+    ptime
+    rosetta
+    rresult
+    unstrctrd
+    uutf
+    afl-persistent
+    bigarray-compat
+    bigarray-overlap
+    bigstringaf
+    fpath
+    mirage-crypto-rng
+  ];
+
+  checkInputs = [
+    alcotest
+    hxd
+    jsonm
+  ];
+  doCheck = true;
+
+  meta = {
+    description = "Parser and generator of mail in OCaml";
+    license = lib.licenses.mit;
+    homepage = "https://github.com/mirage/mrmime";
+    maintainers = with lib.maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/nonstd/default.nix b/nixpkgs/pkgs/development/ocaml-modules/nonstd/default.nix
index a584f7bc9ed1..9de535154eeb 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/nonstd/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/nonstd/default.nix
@@ -14,7 +14,7 @@ buildDunePackage rec {
   doCheck = true;
 
   meta = with lib; {
-    homepage = https://bitbucket.org/smondet/nonstd;
+    homepage = "https://bitbucket.org/smondet/nonstd";
     description = "Non-standard mini-library";
     license = licenses.isc;
     maintainers = [ maintainers.alexfmpe ];
diff --git a/nixpkgs/pkgs/development/ocaml-modules/ocaml-lsp/default.nix b/nixpkgs/pkgs/development/ocaml-modules/ocaml-lsp/default.nix
index 13ae64292ec7..602f5eb77fe7 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/ocaml-lsp/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/ocaml-lsp/default.nix
@@ -1,4 +1,4 @@
-{ buildDunePackage, jsonrpc, lsp, re, makeWrapper, dot-merlin-reader }:
+{ lib, buildDunePackage, jsonrpc, lsp, re, makeWrapper, dot-merlin-reader, spawn }:
 
 buildDunePackage {
   pname = "ocaml-lsp-server";
@@ -7,7 +7,8 @@ buildDunePackage {
 
   inherit (lsp) preBuild;
 
-  buildInputs = lsp.buildInputs ++ [ lsp re ];
+  buildInputs = lsp.buildInputs ++ [ lsp re ]
+  ++ lib.optional (lib.versionAtLeast jsonrpc.version "1.9") spawn;
 
   nativeBuildInputs = [ makeWrapper ];
 
diff --git a/nixpkgs/pkgs/development/ocaml-modules/ocaml-lsp/jsonrpc.nix b/nixpkgs/pkgs/development/ocaml-modules/ocaml-lsp/jsonrpc.nix
index 004b7854107e..26deb2f05970 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/ocaml-lsp/jsonrpc.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/ocaml-lsp/jsonrpc.nix
@@ -10,10 +10,14 @@
 }:
 
 let params =
-  if lib.versionAtLeast ocaml.version "4.12"
+  if lib.versionAtLeast ocaml.version "4.13"
   then {
-    version = "1.8.3";
-    sha256 = "sha256-WO9ap78XZxJCi04LEBX+r21nfL2UdPiCLRMrJSI7FOk=";
+    version = "1.9.1";
+    sha256 = "sha256:1vnwdpjppihprc8q2i5zcqq7vp67255jclg90ldfvwafgljxn76g";
+  } else if lib.versionAtLeast ocaml.version "4.12"
+  then {
+    version = "1.9.0";
+    sha256 = "sha256:1ac44n6g3rf84gvhcca545avgf9vpkwkkkm0s8ipshfhp4g4jikh";
   } else {
     version = "1.4.1";
     sha256 = "1ssyazc0yrdng98cypwa9m3nzfisdzpp7hqnx684rqj8f0g3gs6f";
@@ -29,7 +33,7 @@ buildDunePackage rec {
   };
 
   useDune2 = true;
-  minimumOCamlVersion = "4.06";
+  minimalOCamlVersion = "4.06";
 
   buildInputs =
     if lib.versionAtLeast version "1.7.0" then
diff --git a/nixpkgs/pkgs/development/ocaml-modules/ocaml-migrate-parsetree/2.x.nix b/nixpkgs/pkgs/development/ocaml-modules/ocaml-migrate-parsetree/2.x.nix
index dab537df2219..9f4979d7563c 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/ocaml-migrate-parsetree/2.x.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/ocaml-migrate-parsetree/2.x.nix
@@ -2,15 +2,15 @@
 
 buildDunePackage rec {
    pname = "ocaml-migrate-parsetree";
-   version = "2.2.0";
+   version = "2.3.0";
 
    useDune2 = true;
 
    minimalOCamlVersion = "4.02";
 
    src = fetchurl {
-     url = "https://github.com/ocaml-ppx/${pname}/releases/download/v${version}/${pname}-v${version}.tbz";
-     sha256 = "188v3z09bg4gyv80c138fa3a3j2w54w5gc4r1ajw7klr70yqz9mj";
+     url = "https://github.com/ocaml-ppx/${pname}/releases/download/v${version}/${pname}-${version}.tbz";
+     sha256 = "sha256:02mzh1rcvc2xpq4iz01z7kvzsgxns3774ggxi96f147i8yr2d08h";
    };
 
    meta = {
diff --git a/nixpkgs/pkgs/development/ocaml-modules/ocaml-text/default.nix b/nixpkgs/pkgs/development/ocaml-modules/ocaml-text/default.nix
deleted file mode 100644
index e5dc3dd54d34..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/ocaml-text/default.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ stdenv, lib, fetchzip, libiconv, ocaml, findlib, ocamlbuild, ncurses }:
-
-stdenv.mkDerivation rec {
-  pname = "ocaml-text";
-  version = "0.8";
-
-  src = fetchzip {
-    url = "https://github.com/vbmithr/ocaml-text/archive/${version}.tar.gz";
-    sha256 = "11jamdfn5s19a0yvl012q1xvdk1grkp4rkrn819imqrvdplqkn1y";
-  };
-
-  buildInputs = [ ocaml findlib ocamlbuild ncurses libiconv ];
-
-  configurePhase = "iconv_prefix=${libiconv} ocaml setup.ml -configure";
-
-  createFindlibDestdir = true;
-
-
-  meta = {
-    homepage = "http://ocaml-text.forge.ocamlcore.org/";
-    description = "A library for convenient text manipulation";
-    license = lib.licenses.bsd3;
-    platforms = ocaml.meta.platforms or [];
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/ocaml-version/default.nix b/nixpkgs/pkgs/development/ocaml-modules/ocaml-version/default.nix
index a8912c0f5d58..aeb9c9dc699c 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/ocaml-version/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/ocaml-version/default.nix
@@ -2,11 +2,11 @@
 
 buildDunePackage rec {
   pname = "ocaml-version";
-  version = "3.1.0";
+  version = "3.4.0";
 
   src = fetchurl {
     url = "https://github.com/ocurrent/ocaml-version/releases/download/v${version}/ocaml-version-v${version}.tbz";
-    sha256 = "sha256-rHuhagnY9yISdC85NpgPv667aYx7v2JRgq99ayw83l8=";
+    sha256 = "sha256-2MG+tejY67dxC19DTOZqPsi3UrHk1rqHxP4nRSvbiiU=";
   };
 
   minimumOCamlVersion = "4.07";
diff --git a/nixpkgs/pkgs/development/ocaml-modules/ocamlgraph/default.nix b/nixpkgs/pkgs/development/ocaml-modules/ocamlgraph/default.nix
index a7815d951cd3..4c71246cf9cb 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/ocamlgraph/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/ocamlgraph/default.nix
@@ -21,6 +21,6 @@ buildDunePackage rec {
       downloadPage = "https://github.com/backtracking/ocamlgraph";
       description = "Graph library for OCaml";
       license = licenses.gpl2Oss;
-      maintainers = with maintainers; [ kkallio superherointj ];
+      maintainers = with maintainers; [ kkallio ];
   };
 }
diff --git a/nixpkgs/pkgs/development/ocaml-modules/ocb-stubblr/default.nix b/nixpkgs/pkgs/development/ocaml-modules/ocb-stubblr/default.nix
index d8d19f5e3651..2f26eb32ffb6 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/ocb-stubblr/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/ocb-stubblr/default.nix
@@ -1,9 +1,11 @@
 { stdenv, lib, fetchzip, ocaml, findlib, ocamlbuild, topkg, astring }:
 
-stdenv.mkDerivation {
-  name = "ocaml${ocaml.version}-ocb-stubblr-0.1.0";
+stdenv.mkDerivation rec {
+  pname = "ocaml${ocaml.version}-ocb-stubblr";
+  version = "0.1.0";
+
   src = fetchzip {
-    url = "https://github.com/pqwy/ocb-stubblr/releases/download/v0.1.0/ocb-stubblr-0.1.0.tbz";
+    url = "https://github.com/pqwy/ocb-stubblr/releases/download/v${version}/ocb-stubblr-${version}.tbz";
     name = "src.tar.bz";
     sha256 = "0hpds1lkq4j8wgslv7hnirgfrjmqi36h5rarpw9mwf24gfp5ays2";
   };
diff --git a/nixpkgs/pkgs/development/ocaml-modules/ocf/default.nix b/nixpkgs/pkgs/development/ocaml-modules/ocf/default.nix
index ee14a83d57ce..30f589e75613 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/ocf/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/ocf/default.nix
@@ -1,37 +1,24 @@
-{ lib, stdenv, fetchFromGitHub, fetchpatch, ocaml, findlib, ppx_tools, yojson }:
+{ lib, buildDunePackage, fetchFromGitLab, yojson }:
 
-if lib.versionOlder ocaml.version "4.03"
-|| lib.versionAtLeast ocaml.version "4.08"
-then throw "ocf not supported for ocaml ${ocaml.version}"
-else
-stdenv.mkDerivation rec {
+buildDunePackage rec {
   pname = "ocf";
-  version = "0.5.0";
-  src = fetchFromGitHub {
+  version = "0.8.0";
+  useDune2 = true;
+  minimalOCamlVersion = "4.03";
+  src = fetchFromGitLab {
+    domain = "framagit.org";
     owner = "zoggy";
     repo = "ocf";
-    rev = "release-${version}";
-    sha256 = "1fhq9l2nmr39hxzpavc0jssmba71nnmhsncdn4dsbh2ylv29w56y";
+    rev = version;
+    sha256 = "sha256:00ap3q5yjqmpk87lxqv1j2wkc7583ynhjr1jjrfn9r0j2h9pfd60";
   };
 
-  buildInputs = [ ocaml findlib ppx_tools ];
   propagatedBuildInputs = [ yojson ];
 
-  createFindlibDestdir = true;
-
-  dontStrip = true;
-
-  patches = [(fetchpatch {
-    url = "https://github.com/zoggy/ocf/commit/3a231c7a6c5e535a77c25e207af8952793436444.patch";
-    sha256 = "0nc8cggc5gxhch9amaz3s71lxs1xbgi7fs9p90cng04dsgr64xk5";
-  })
-  ];
-
   meta = with lib; {
     description = "OCaml library to read and write configuration options in JSON syntax";
-    homepage = "https://zoggy.github.io/ocf/";
+    homepage = "https://zoggy.frama.io/ocf/";
     license = licenses.lgpl3;
-    platforms = ocaml.meta.platforms or [];
     maintainers = with maintainers; [ regnat ];
   };
 }
diff --git a/nixpkgs/pkgs/development/ocaml-modules/ocf/ppx.nix b/nixpkgs/pkgs/development/ocaml-modules/ocf/ppx.nix
new file mode 100644
index 000000000000..0b1f6998ccad
--- /dev/null
+++ b/nixpkgs/pkgs/development/ocaml-modules/ocf/ppx.nix
@@ -0,0 +1,14 @@
+{ buildDunePackage, ocf, ppxlib }:
+
+buildDunePackage {
+  pname = "ocf_ppx";
+  minimalOCamlVersion = "4.11";
+
+  inherit (ocf) src version useDune2;
+
+  buildInputs = [ ppxlib ocf ];
+
+  meta = ocf.meta // {
+    description = "Preprocessor for Ocf library";
+  };
+}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/ocplib-endian/default.nix b/nixpkgs/pkgs/development/ocaml-modules/ocplib-endian/default.nix
index 2cb066a7c035..c0bccbd65a65 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/ocplib-endian/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/ocplib-endian/default.nix
@@ -1,17 +1,19 @@
-{ lib, buildDunePackage, fetchzip, cppo }:
+{ lib, buildDunePackage, fetchFromGitHub, cppo }:
 
 buildDunePackage rec {
   version = "1.1";
   pname = "ocplib-endian";
 
-  src = fetchzip {
-    url = "https://github.com/OCamlPro/ocplib-endian/archive/${version}.tar.gz";
+  src = fetchFromGitHub {
+    owner = "OCamlPro";
+    repo = "ocplib-endian";
+    rev = version;
     sha256 = "sha256-zKsSkhlZBXSqPtw+/WN3pwo9plM9rDZfMbGVfosqb10=";
   };
 
   useDune2 = true;
 
-  buildInputs = [ cppo ];
+  nativeBuildInputs = [ cppo ];
 
   meta = with lib; {
     description = "Optimised functions to read and write int16/32/64";
diff --git a/nixpkgs/pkgs/development/ocaml-modules/ocsigen-deriving/default.nix b/nixpkgs/pkgs/development/ocaml-modules/ocsigen-deriving/default.nix
index 1feb3ecae714..d2e20838ecaf 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/ocsigen-deriving/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/ocsigen-deriving/default.nix
@@ -1,41 +1,41 @@
-{ stdenv, lib, fetchzip, ocaml, findlib, ocamlbuild, oasis, ocaml_optcomp, camlp4
+{ stdenv
+, lib
+, fetchFromGitHub
+, ocaml
+, findlib
+, ocamlbuild
+, oasis
+, camlp4
 , num
 }:
 
-let param =
-  if lib.versionAtLeast ocaml.version "4.03"
-  then {
-    version = "0.8.1";
-    sha256 = "03vzrybdpjydbpil97zmir71kpsn2yxkjnzysma7fvybk8ll4zh9";
-    buildInputs = [ num ];
-  } else {
-    version = "0.7.1";
-    sha256 = "0gg3nr3iic4rwqrcc0qvfm9x0x57zclvdsnpy0z8rv2fl5isbzms";
-  };
-in
+if !lib.versionAtLeast ocaml.version "4.03"
+then throw "ocsigen-deriving is not available of OCaml ${ocaml.version}"
+else
 
-let inherit (param) version; in
+stdenv.mkDerivation rec {
+  pname = "ocaml${ocaml.version}-ocsigen-deriving";
+  version = "0.8.2";
 
-stdenv.mkDerivation {
-  pname = "ocsigen-deriving";
-  inherit version;
-  src = fetchzip {
-    url = "https://github.com/ocsigen/deriving/archive/${version}.tar.gz";
-    inherit (param) sha256;
+  src = fetchFromGitHub {
+    owner = "ocsigen";
+    repo = "deriving";
+    rev = version;
+    sha256 = "sha256:09rp9mrr551na0nmclpxddlrkb6l2d7763xv14xfx467kff3z0wf";
   };
 
-  buildInputs = [ ocaml findlib ocamlbuild oasis ocaml_optcomp camlp4 ]
-  ++ (param.buildInputs or []);
-
   createFindlibDestdir = true;
 
-  meta =  {
+  buildInputs = [ ocaml findlib ocamlbuild oasis camlp4 num ];
+
+  meta = {
     homepage = "https://github.com/ocsigen/deriving";
     description = "Extension to OCaml for deriving functions from type declarations";
     license = lib.licenses.mit;
-    platforms = ocaml.meta.platforms or [];
+    inherit (ocaml.meta) platforms;
     maintainers = with lib.maintainers; [
-      gal_bolle vbgl
+      gal_bolle
+      vbgl
     ];
   };
 
diff --git a/nixpkgs/pkgs/development/ocaml-modules/ocsigen-start/default.nix b/nixpkgs/pkgs/development/ocaml-modules/ocsigen-start/default.nix
index ea5609e63b55..1fccbbb9b30c 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/ocsigen-start/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/ocsigen-start/default.nix
@@ -5,7 +5,7 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "ocaml${ocaml.version}-ocsigen-start-${version}";
+  pname = "ocaml${ocaml.version}-ocsigen-start";
   version = "4.3.0";
 
   buildInputs = [ ocaml findlib ];
diff --git a/nixpkgs/pkgs/development/ocaml-modules/ocurl/default.nix b/nixpkgs/pkgs/development/ocaml-modules/ocurl/default.nix
index 83668b30cecd..ea2af8dd4c82 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/ocurl/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/ocurl/default.nix
@@ -5,9 +5,11 @@ then throw "ocurl is not available for OCaml ${ocaml.version}"
 else
 
 stdenv.mkDerivation rec {
-  name = "ocurl-0.9.1";
+  pname = "ocurl";
+  version = "0.9.1";
+
   src = fetchurl {
-    url = "http://ygrek.org.ua/p/release/ocurl/${name}.tar.gz";
+    url = "http://ygrek.org.ua/p/release/ocurl/ocurl-${version}.tar.gz";
     sha256 = "0n621cxb9012pj280c7821qqsdhypj8qy9qgrah79dkh6a8h2py6";
   };
 
@@ -19,6 +21,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.mit;
     homepage = "http://ygrek.org.ua/p/ocurl/";
     maintainers = with lib.maintainers; [ bennofs ];
-    platforms = ocaml.meta.platforms or [];
+    platforms = ocaml.meta.platforms or [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/ocaml-modules/odn/default.nix b/nixpkgs/pkgs/development/ocaml-modules/odn/default.nix
index edf7d8649551..9179ce3f1d16 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/odn/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/odn/default.nix
@@ -4,11 +4,12 @@ if lib.versionAtLeast ocaml.version "4.06"
 then throw "ocaml-data-notation is not available for OCaml ${ocaml.version}"
 else
 
-stdenv.mkDerivation {
-  name = "ocaml-data-notation-0.0.11";
+stdenv.mkDerivation rec {
+  pname = "ocaml-data-notation";
+  version = "0.0.11";
 
   src = fetchurl {
-    url = "https://forge.ocamlcore.org/frs/download.php/1310/ocaml-data-notation-0.0.11.tar.gz";
+    url = "https://forge.ocamlcore.org/frs/download.php/1310/ocaml-data-notation-${version}.tar.gz";
     sha256 = "09a8zdyifpc2nl4hdvg9206142y31cq95ajgij011s1qcg3z93lj";
   };
 
@@ -17,16 +18,17 @@ stdenv.mkDerivation {
   createFindlibDestdir = true;
 
   configurePhase = "ocaml setup.ml -configure";
-  buildPhase     = "ocaml setup.ml -build";
-  installPhase   = "ocaml setup.ml -install";
+  buildPhase = "ocaml setup.ml -build";
+  installPhase = "ocaml setup.ml -install";
 
   meta = with lib; {
     description = "Store data using OCaml notation";
     homepage = "https://forge.ocamlcore.org/projects/odn/";
     license = licenses.lgpl21;
-    platforms = ocaml.meta.platforms or [];
+    platforms = ocaml.meta.platforms or [ ];
     maintainers = with maintainers; [
-      vbgl maggesi
+      vbgl
+      maggesi
     ];
   };
 }
diff --git a/nixpkgs/pkgs/development/ocaml-modules/odoc-parser/default.nix b/nixpkgs/pkgs/development/ocaml-modules/odoc-parser/default.nix
index a8e6bd2599c3..7a2b5abd974b 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/odoc-parser/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/odoc-parser/default.nix
@@ -1,14 +1,24 @@
-{ lib, fetchurl, buildDunePackage, astring, result }:
+{ lib, fetchurl, buildDunePackage, astring, result , version ? "1.0.0" }:
 
+let param = {
+  "1.0.0" = {
+    sha256 = "sha256-tqoI6nGp662bK+vE2h7aDXE882dObVfRBFnZNChueqE=";
+  };
+  "0.9.0" = {
+    sha256 = "sha256-3w2tG605v03mvmZsS2O5c71y66O3W+n3JjFxIbXwvXk=";
+  };
+}."${version}"; in
+
+let v = version; in
 buildDunePackage rec {
   pname = "odoc-parser";
-  version = "0.9.0";
+  inherit version;
 
   minimumOCamlVersion = "4.02";
 
   src = fetchurl {
-    url = "https://github.com/ocaml-doc/odoc-parser/releases/download/0.9.0/odoc-parser-0.9.0.tbz";
-    sha256 = "0ydxy2sj2w9i4vvyjnxplgmp5gbkp5ilnv36pvk4vgrrmldss3fz";
+    url = "https://github.com/ocaml-doc/odoc-parser/releases/download/${version}/odoc-parser-${version}.tbz";
+    inherit (param) sha256;
   };
 
   useDune2 = true;
diff --git a/nixpkgs/pkgs/development/ocaml-modules/omd/default.nix b/nixpkgs/pkgs/development/ocaml-modules/omd/default.nix
index fee2f300eac7..d6cea183d85c 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/omd/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/omd/default.nix
@@ -1,9 +1,11 @@
 { stdenv, lib, fetchurl, ocaml, findlib, ocamlbuild }:
 
-stdenv.mkDerivation {
-  name = "ocaml${ocaml.version}-omd-1.3.1";
+stdenv.mkDerivation rec {
+  pname = "ocaml${ocaml.version}-omd";
+  version = "1.3.1";
+
   src = fetchurl {
-    url = "https://github.com/Chris00/omd/releases/download/1.3.1/omd-1.3.1.tar.gz";
+    url = "https://github.com/Chris00/omd/releases/download/${version}/omd-${version}.tar.gz";
     sha256 = "1sgdgzpx96br7npj8mh91cli5mqmzsjpngwm7x4212n3k1d0ivwa";
   };
 
diff --git a/nixpkgs/pkgs/development/ocaml-modules/optcomp/META b/nixpkgs/pkgs/development/ocaml-modules/optcomp/META
deleted file mode 100644
index 8a942288f752..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/optcomp/META
+++ /dev/null
@@ -1,12 +0,0 @@
-# OASIS_START
-# DO NOT EDIT (digest: ec844fa3189acb2a866b89a69d111ba4)
-version = "1.6"
-description = "Optional compilation with cpp-like directives"
-requires = "camlp4"
-archive(syntax, preprocessor) = "optcomp.cma"
-archive(syntax, toploop) = "optcomp.cma"
-archive(syntax, preprocessor, native) = "optcomp.cmxa"
-archive(syntax, preprocessor, native, plugin) = "optcomp.cmxs"
-exists_if = "optcomp.cma"
-# OASIS_STOP
-
diff --git a/nixpkgs/pkgs/development/ocaml-modules/optcomp/default.nix b/nixpkgs/pkgs/development/ocaml-modules/optcomp/default.nix
deleted file mode 100644
index b78d070962e7..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/optcomp/default.nix
+++ /dev/null
@@ -1,47 +0,0 @@
-{ stdenv, lib, fetchurl, fetchpatch, ocaml, findlib, ocamlbuild, camlp4 }:
-
-stdenv.mkDerivation {
-  name = "ocaml-optcomp-1.6";
-  src = fetchurl {
-    url = "https://github.com/diml/optcomp/archive/1.6.tar.gz";
-    sha256 = "0hhhb2gisah1h22zlg5iszbgqxdd7x85cwd57bd4mfkx9l7dh8jh";
-  };
-
-  patches =
-    let inherit (lib) optional versionAtLeast; in
-    optional (versionAtLeast ocaml.version "4.02") (fetchpatch {
-      url = "https://github.com/diml/optcomp/commit/b7f809360c9794b383a4bc0492f6df381276b429.patch";
-      sha256 = "1n095lk94jq1rwi0l24g2wbgms7249wdd31n0ji895dr6755s93y";
-    })
-  ;
-
-  createFindlibDestdir = true;
-
-  buildInputs = [ ocaml findlib ocamlbuild camlp4 ];
-
-  configurePhase = ''
-    cp ${./META} META
-  '';
-
-  buildPhase = ''
-    ocamlbuild src/optcomp.cmxs src/optcomp.cma src/optcomp_o.native src/optcomp_r.native
-  '';
-
-  installPhase = ''
-    mkdir -p $out/bin
-    cp _build/src/optcomp_o.native $out/bin/optcomp-o
-    cp _build/src/optcomp_r.native $out/bin/optcomp-r
-    ocamlfind install optcomp META _build/src/optcomp.{a,cma,cmxa,cmxs} _build/src/pa_optcomp.{cmi,cmx,mli}
-  '';
-
-  meta =  {
-    homepage = "https://github.com/diml/optcomp";
-    description = "Optional compilation for OCaml with cpp-like directives";
-    license = lib.licenses.bsd3;
-    platforms = ocaml.meta.platforms or [];
-    maintainers = [
-      lib.maintainers.gal_bolle
-    ];
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/otr/default.nix b/nixpkgs/pkgs/development/ocaml-modules/otr/default.nix
index cec5d2ee0d07..d2ed78d51b8a 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/otr/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/otr/default.nix
@@ -1,24 +1,24 @@
 { lib, fetchurl, buildDunePackage
-, cstruct, sexplib0, rresult, mirage-crypto, mirage-crypto-pk, astring, base64
-, mirage-crypto-rng
+, cstruct, sexplib0, mirage-crypto, mirage-crypto-pk, astring, base64
 }:
 
 buildDunePackage rec {
   pname = "otr";
-  version = "0.3.8";
+  version = "0.3.10";
+
+  minimumOCamlVersion = "4.08";
 
   src = fetchurl {
     url = "https://github.com/hannesm/ocaml-otr/releases/download/v${version}/otr-v${version}.tbz";
-    sha256 = "18hn9l8wznqnlh2jf1hpnp36f1cx80ncwiiivsbj34llhgp3893d";
+    sha256 = "0dssc7p6s7z53n0mddyipjghzr8ld8bb7alaxqrx9gdpspwab1gq";
   };
 
   useDune2 = true;
 
   propagatedBuildInputs = [ cstruct sexplib0 mirage-crypto mirage-crypto-pk
-                            astring rresult base64 ];
+                            astring base64 ];
 
   doCheck = true;
-  checkInputs = [ mirage-crypto-rng ];
 
   meta = with lib; {
     homepage = "https://github.com/hannesm/ocaml-otr";
diff --git a/nixpkgs/pkgs/development/ocaml-modules/pa_bench/default.nix b/nixpkgs/pkgs/development/ocaml-modules/pa_bench/default.nix
deleted file mode 100644
index e5f9ac52067d..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/pa_bench/default.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{lib, buildOcaml, fetchurl, type_conv, pa_ounit}:
-
-buildOcaml rec {
-  name = "pa_bench";
-  version = "113.00.00";
-
-  minimumSupportedOcamlVersion = "4.00";
-
-  src = fetchurl {
-    url = "https://github.com/janestreet/pa_bench/archive/${version}.tar.gz";
-    sha256 = "1cd6291gdnk6h8ziclg6x3if8z5xy67nfz9gx8sx4k2cwv0j29k5";
-  };
-
-  buildInputs = [ pa_ounit ];
-  propagatedBuildInputs = [ type_conv ];
-
-  meta = with lib; {
-    homepage = "https://github.com/janestreet/pa_bench";
-    description = "Syntax extension for inline benchmarks";
-    license = licenses.asl20;
-    maintainers = [ maintainers.ericbmerritt ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/pa_ounit/default.nix b/nixpkgs/pkgs/development/ocaml-modules/pa_ounit/default.nix
deleted file mode 100644
index 26d000042227..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/pa_ounit/default.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ lib, buildOcaml, ocaml, fetchurl, ounit }:
-
-if lib.versionAtLeast ocaml.version "4.06"
-then throw "pa_ounit is not available for OCaml ${ocaml.version}"
-else
-
-buildOcaml rec {
-  name = "pa_ounit";
-  version = "113.00.00";
-
-  src = fetchurl {
-    url = "https://github.com/janestreet/pa_ounit/archive/${version}.tar.gz";
-    sha256 = "0vi0p2hxcrdsl0319c9s8mh9hmk2i4ir6c6vrj8axkc37zkgc437";
-  };
-
-  propagatedBuildInputs = [ ounit ];
-
-  meta = with lib; {
-    homepage = "https://github.com/janestreet/pa_ounit";
-    description = "OCaml inline testing";
-    license = licenses.asl20;
-    maintainers = [ maintainers.ericbmerritt ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/paf/default.nix b/nixpkgs/pkgs/development/ocaml-modules/paf/default.nix
index a4f3a99ce48f..30277de4e512 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/paf/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/paf/default.nix
@@ -7,17 +7,10 @@
 , h2
 , tls-mirage
 , mimic
-, cohttp-lwt
-, letsencrypt
-, emile
 , ke
 , bigstringaf
-, domain-name
-, duration
 , faraday
-, ipaddr
 , tls
-, x509
 , lwt
 , logs
 , fmt
@@ -32,11 +25,11 @@
 
 buildDunePackage rec {
   pname = "paf";
-  version = "0.0.5";
+  version = "0.0.6";
 
   src = fetchurl {
     url = "https://github.com/dinosaure/paf-le-chien/releases/download/${version}/paf-${version}.tbz";
-    sha256 = "e85a018046eb062d2399fdbe8d9d3400a4d5cd51bb62840446503f557c3eeff1";
+    sha256 = "21adbe0f7f9c0242354fa996468d01bf21d5cbcbdd978c911df8e2e299e8f9ae";
   };
 
   useDune2 = true;
@@ -48,17 +41,10 @@ buildDunePackage rec {
     h2
     tls-mirage
     mimic
-    cohttp-lwt
-    letsencrypt
-    emile
     ke
     bigstringaf
-    domain-name
-    ipaddr
-    duration
     faraday
     tls
-    x509
     cstruct
   ];
 
diff --git a/nixpkgs/pkgs/development/ocaml-modules/paf/le.nix b/nixpkgs/pkgs/development/ocaml-modules/paf/le.nix
index 9281e48b6c26..06a8d9b51eb3 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/paf/le.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/paf/le.nix
@@ -8,6 +8,7 @@
 , mirage-stack
 , mirage-time
 , tls-mirage
+, x509
 }:
 
 buildDunePackage {
@@ -29,6 +30,7 @@ buildDunePackage {
     mirage-stack
     mirage-time
     tls-mirage
+    x509
   ];
 
   doCheck = true;
diff --git a/nixpkgs/pkgs/development/ocaml-modules/parany/default.nix b/nixpkgs/pkgs/development/ocaml-modules/parany/default.nix
index 29213031f358..4f072391deb0 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/parany/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/parany/default.nix
@@ -2,7 +2,7 @@
 
 buildDunePackage rec {
   pname = "parany";
-  version = "12.1.1";
+  version = "12.1.2";
 
   useDune2 = true;
   minimumOCamlVersion = "4.03.0";
@@ -11,7 +11,7 @@ buildDunePackage rec {
     owner = "UnixJunkie";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0s2sbmywy4yyh69dcrcqd85hd8jcd7qgfczy79nam4bvn87bjm72";
+    sha256 = "yOeJzb2Wr6jA4efI9/fuqDCl/Tza3zxT3YjAiJmhHHg=";
   };
 
   propagatedBuildInputs = [ ocamlnet cpu ];
diff --git a/nixpkgs/pkgs/development/ocaml-modules/phylogenetics/default.nix b/nixpkgs/pkgs/development/ocaml-modules/phylogenetics/default.nix
index b284f7ef5eba..1a23a4d3e131 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/phylogenetics/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/phylogenetics/default.nix
@@ -1,30 +1,50 @@
-{ lib, buildDunePackage, fetchFromGitHub, ppx_deriving
-, alcotest, angstrom-unix, biocaml, gnuplot, gsl, lacaml, menhir, owl, printbox }:
+{ lib
+, buildDunePackage
+, fetchurl
+, ppx_deriving
+, bppsuite
+, alcotest
+, angstrom-unix
+, biocaml
+, core
+, gsl
+, lacaml
+, menhir
+, menhirLib
+, printbox
+}:
 
 buildDunePackage rec {
   pname = "phylogenetics";
-  version = "unstable-2020-11-23";
+  version = "0.0.0";
 
   useDune2 = true;
 
-  src = fetchFromGitHub {
-    owner  = "biocaml";
-    repo   = pname;
-    rev    = "e6e10efa0a3a8fd61bf4ab69e91a09549cc1ded6";
-    sha256 = "0pmypzp0rvlpzm8zpbcfkphwnhrpyfwfv44kshvx2f8nslmksh8c";
+  src = fetchurl {
+    url = "https://github.com/biocaml/phylogenetics/releases/download/v${version}/${pname}-${version}.tbz";
+    sha256 = "sha256:0knfh2s0jfnsc0vsq5yw5xla7m7i98xd0qv512dyh3jhkh7m00l9";
   };
 
-  minimumOCamlVersion = "4.08";  # e.g., uses Float.min
+  minimalOCamlVersion = "4.08";
 
-  checkInputs = [ alcotest ];
+  checkInputs = [ alcotest bppsuite ];
   buildInputs = [ menhir ];
-  propagatedBuildInputs = [ angstrom-unix biocaml gnuplot gsl lacaml owl ppx_deriving printbox ];
+  propagatedBuildInputs = [
+    angstrom-unix
+    biocaml
+    core
+    gsl
+    lacaml
+    menhirLib
+    ppx_deriving
+    printbox
+  ];
 
-  doCheck = false;  # many tests require bppsuite
+  doCheck = true;
 
   meta = with lib; {
-    inherit (src.meta) homepage;
-    description = "Bioinformatics library for Ocaml";
+    homepage = "https://github.com/biocaml/phylogenetics";
+    description = "Algorithms and datastructures for phylogenetics";
     maintainers = [ maintainers.bcdarwin ];
     license = licenses.cecill-b;
   };
diff --git a/nixpkgs/pkgs/development/ocaml-modules/piaf/default.nix b/nixpkgs/pkgs/development/ocaml-modules/piaf/default.nix
new file mode 100644
index 000000000000..5f1834c5f100
--- /dev/null
+++ b/nixpkgs/pkgs/development/ocaml-modules/piaf/default.nix
@@ -0,0 +1,54 @@
+{ alcotest-lwt
+, buildDunePackage
+, dune-site
+, fetchzip
+, gluten-lwt-unix
+, lib
+, logs
+, lwt_ssl
+, magic-mime
+, mrmime
+, openssl
+, pecu
+, psq
+, ssl
+, uri
+}:
+
+buildDunePackage rec {
+  pname = "piaf";
+  version = "0.1.0";
+
+  src = fetchzip {
+    url = "https://github.com/anmonteiro/piaf/releases/download/${version}/piaf-${version}.tbz";
+    sha256 = "0d431kz3bkwlgdamvsv94mzd9631ppcjpv516ii91glzlfdzh5hz";
+  };
+
+  postPatch = ''
+    substituteInPlace ./vendor/dune --replace "mrmime.prettym" "prettym"
+  '';
+
+  useDune2 = true;
+
+  propagatedBuildInputs = [
+    logs
+    magic-mime
+    mrmime
+    psq
+    uri
+    gluten-lwt-unix
+  ];
+
+  checkInputs = [
+    alcotest-lwt
+    dune-site
+  ];
+  doCheck = true;
+
+  meta = {
+    description = "An HTTP library with HTTP/2 support written entirely in OCaml";
+    homepage = "https://github.com/anmonteiro/piaf";
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ anmonteiro ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/pipebang/default.nix b/nixpkgs/pkgs/development/ocaml-modules/pipebang/default.nix
index 36eb3fe54bbe..489ca3d2c708 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/pipebang/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/pipebang/default.nix
@@ -1,14 +1,16 @@
-{lib, buildOcaml, fetchurl}:
+{ lib, buildOcaml, fetchFromGitHub }:
 
 buildOcaml rec {
-  name = "pipebang";
+  pname = "pipebang";
   version = "113.00.00";
 
   minimumSupportedOcamlVersion = "4.00";
 
-  src = fetchurl {
-    url = "https://github.com/janestreet/pipebang/archive/${version}.tar.gz";
-    sha256 = "0acm2y8wxvnapa248lkgm0vcc44hlwhrjxqkx1awjxzcmarnxhfk";
+  src = fetchFromGitHub {
+    owner = "janestreet";
+    repo = "pipebang";
+    rev = version;
+    sha256 = "sha256-9A3X/ciL5HtuKQ5awS+hDDBLL5ytOr12wHsmJLNRn+Q=";
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/ocaml-modules/ppx_cstubs/default.nix b/nixpkgs/pkgs/development/ocaml-modules/ppx_cstubs/default.nix
index 6ad6c4cd8985..935d67f70845 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/ppx_cstubs/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/ppx_cstubs/default.nix
@@ -15,6 +15,8 @@ buildDunePackage rec {
   pname = "ppx_cstubs";
   version = "0.6.1.2";
 
+  minimalOCamlVersion = "4.08";
+
   useDune2 = true;
 
   src = fetchFromGitHub {
diff --git a/nixpkgs/pkgs/development/ocaml-modules/prettym/default.nix b/nixpkgs/pkgs/development/ocaml-modules/prettym/default.nix
new file mode 100644
index 000000000000..d19233cf13c9
--- /dev/null
+++ b/nixpkgs/pkgs/development/ocaml-modules/prettym/default.nix
@@ -0,0 +1,48 @@
+{ alcotest
+, base64
+, bigarray-compat
+, bigarray-overlap
+, bigstringaf
+, buildDunePackage
+, fetchzip
+, fmt
+, jsonm
+, ke
+, lib
+, ptime
+}:
+
+buildDunePackage rec {
+  pname = "prettym";
+  version = "0.0.2";
+
+  src = fetchzip {
+    url = "https://github.com/dinosaure/prettym/releases/download/${version}/prettym-${version}.tbz";
+    sha256 = "03x7jh62mvzc6x2d8xsy456qa6iphw72zm7jmqrakpmsy6zcf2lb";
+  };
+
+  useDune2 = true;
+
+  propagatedBuildInputs = [
+    bigarray-compat
+    bigarray-overlap
+    bigstringaf
+    fmt
+    ke
+  ];
+
+  checkInputs = [
+    ptime
+    alcotest
+    jsonm
+    base64
+  ];
+  doCheck = true;
+
+  meta = {
+    description = "A simple bounded encoder to serialize human readable values and respect the 80-column constraint";
+    license = lib.licenses.mit;
+    homepage = "https://github.com/dinosaure/prettym";
+    maintainers = with lib.maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/pycaml/default.nix b/nixpkgs/pkgs/development/ocaml-modules/pycaml/default.nix
index 1aa2590f2ae5..bee8a6106ea1 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/pycaml/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/pycaml/default.nix
@@ -1,18 +1,19 @@
-{stdenv, fetchurl, ocaml, findlib, ncurses, python, ocaml_make}:
+{ lib, stdenv, fetchurl, ocaml, findlib, ncurses, python, ocaml_make }:
 
 # This is the original pycaml version with patches from debian.
 
-stdenv.mkDerivation {
-  name = "pycaml-0.82-14";
+stdenv.mkDerivation rec {
+  pname = "pycaml";
+  version = "0.82-14";
 
   srcs = [
     (fetchurl {
-      url = "mirror://debian/pool/main/p/pycaml/pycaml_0.82.orig.tar.gz";
+      url = "mirror://debian/pool/main/p/pycaml/pycaml_${lib.versions.majorMinor version}.orig.tar.gz";
       sha256 = "d57be559c8d586c575717d47817986bbdbcebe2ffd16ad6b291525c62868babe";
     })
 
     (fetchurl {
-      url = "mirror://debian/pool/main/p/pycaml/pycaml_0.82-14.debian.tar.gz";
+      url = "mirror://debian/pool/main/p/pycaml/pycaml_${version}.debian.tar.gz";
       sha256 = "a763088ec1fa76c769bf586ed6692e7ac035b0a2bfd48a90a8e7a9539ec0c2f1";
     })
   ];
@@ -41,6 +42,6 @@ stdenv.mkDerivation {
     homepage = "https://github.com/chemoelectric/pycaml";
     description = "Bindings for python and ocaml";
     license = "LGPL";
-    platforms = ocaml.meta.platforms or [];
+    platforms = ocaml.meta.platforms or [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/ocaml-modules/react/default.nix b/nixpkgs/pkgs/development/ocaml-modules/react/default.nix
index 7ae3e8e66f33..0edae9830698 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/react/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/react/default.nix
@@ -1,10 +1,11 @@
 { lib, stdenv, fetchurl, ocaml, findlib, topkg, ocamlbuild }:
 
-stdenv.mkDerivation {
-  name = "ocaml-react-1.2.1";
+stdenv.mkDerivation rec {
+  pname = "ocaml-react";
+  version = "1.2.1";
 
   src = fetchurl {
-    url = "https://erratique.ch/software/react/releases/react-1.2.1.tbz";
+    url = "https://erratique.ch/software/react/releases/react-${version}.tbz";
     sha256 = "1aj8w79gdd9xnrbz7s5p8glcb4pmimi8jp9f439dqnf6ih3mqb3v";
   };
 
@@ -16,7 +17,7 @@ stdenv.mkDerivation {
     homepage = "https://erratique.ch/software/react";
     description = "Applicative events and signals for OCaml";
     license = licenses.bsd3;
-    platforms = ocaml.meta.platforms or [];
-    maintainers = with maintainers; [ maggesi vbmithr gal_bolle];
+    platforms = ocaml.meta.platforms or [ ];
+    maintainers = with maintainers; [ maggesi vbmithr gal_bolle ];
   };
 }
diff --git a/nixpkgs/pkgs/development/ocaml-modules/reactivedata/default.nix b/nixpkgs/pkgs/development/ocaml-modules/reactivedata/default.nix
index 899547a937be..bc0c8f9e9b8c 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/reactivedata/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/reactivedata/default.nix
@@ -1,14 +1,18 @@
-{ lib, stdenv, fetchurl, ocaml, findlib, ocamlbuild, react, opaline }:
+{ lib, stdenv, fetchFromGitHub, ocaml, findlib, ocamlbuild, react, opaline }:
 
 if !lib.versionAtLeast ocaml.version "4.04"
 then throw "reactiveData is not available for OCaml ${ocaml.version}"
 else
 
-stdenv.mkDerivation {
-  name = "ocaml${ocaml.version}-reactiveData-0.2.2";
-  src = fetchurl {
-    url = "https://github.com/ocsigen/reactiveData/archive/0.2.2.tar.gz";
-    sha256 = "0jzagyp4zla28wykvcgqwd8df71ir0vb4s8akp02cfacd5v86sng";
+stdenv.mkDerivation rec {
+  pname = "ocaml${ocaml.version}-reactiveData";
+  version = "0.2.2";
+
+  src = fetchFromGitHub {
+    owner = "ocsigen";
+    repo = "reactiveData";
+    rev = version;
+    sha256 = "sha256-YLkacIbjxZQ/ThgSxjTqviBYih6eW2GX5H7iybQDv1A=";
   };
 
   buildInputs = [ ocaml findlib ocamlbuild opaline ];
@@ -22,7 +26,7 @@ stdenv.mkDerivation {
     description = "An OCaml module for functional reactive programming (FRP) based on React";
     homepage = "https://github.com/ocsigen/reactiveData";
     license = licenses.lgpl21;
-    platforms = ocaml.meta.platforms or [];
+    platforms = ocaml.meta.platforms or [ ];
     maintainers = with maintainers; [ vbgl ];
   };
 }
diff --git a/nixpkgs/pkgs/development/ocaml-modules/reason-native/default.nix b/nixpkgs/pkgs/development/ocaml-modules/reason-native/default.nix
index f65aa5159b9d..d20f994b832d 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/reason-native/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/reason-native/default.nix
@@ -23,7 +23,7 @@ let
             downloadPage = "https://github.com/reasonml/reason-native";
             homepage = "https://reason-native.com/";
             license = licenses.mit;
-            maintainers = with maintainers; [ superherointj ];
+            maintainers = with maintainers; [ ];
           } // (prepkg.meta or {});
         } // prepkg)
   );
diff --git a/nixpkgs/pkgs/development/ocaml-modules/rosetta/default.nix b/nixpkgs/pkgs/development/ocaml-modules/rosetta/default.nix
new file mode 100644
index 000000000000..3675b8994264
--- /dev/null
+++ b/nixpkgs/pkgs/development/ocaml-modules/rosetta/default.nix
@@ -0,0 +1,34 @@
+{ buildDunePackage
+, coin
+, fetchzip
+, lib
+, yuscii
+, uuuu
+}:
+
+buildDunePackage rec {
+  pname = "rosetta";
+  version = "0.3.0";
+
+  src = fetchzip {
+    url = "https://github.com/mirage/rosetta/releases/download/v${version}/rosetta-v${version}.tbz";
+    sha256 = "1gzp3fbk8qd207cm25dgj9kj7b44ldqpjs63pl6xqvi9hx60m3ij";
+  };
+
+  useDune2 = true;
+
+  propagatedBuildInputs = [
+    coin
+    uuuu
+    yuscii
+  ];
+
+  doCheck = false; # No tests.
+
+  meta = {
+    description = "Universal decoder of an encoded flow (UTF-7, ISO-8859 and KOI8) to Unicode";
+    license = lib.licenses.mit;
+    homepage = "https://github.com/mirage/rosetta";
+    maintainers = with lib.maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/sawja/default.nix b/nixpkgs/pkgs/development/ocaml-modules/sawja/default.nix
index 30ac2cfb22dd..284ba97b9c70 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/sawja/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/sawja/default.nix
@@ -1,8 +1,8 @@
-{ lib, stdenv, fetchFromGitHub, which, perl, ocaml, findlib, javalib }:
+{ lib, stdenv, fetchFromGitHub, which, ocaml, findlib, javalib }:
 
 let
   pname = "sawja";
-  version = "1.5.8";
+  version = "1.5.10";
   webpage = "http://sawja.inria.fr/";
 in
 
@@ -12,16 +12,20 @@ else
 
 stdenv.mkDerivation {
 
-  name = "ocaml${ocaml.version}-${pname}-${version}";
+  pname = "ocaml${ocaml.version}-${pname}";
+
+  inherit version;
 
   src = fetchFromGitHub {
     owner = "javalib-team";
     repo = pname;
-    rev = "v${version}";
-    sha256 = "0rawr0jav33rvagm8sxc0arc7ya1fd9w5nng3lhfk8p02f9z8wrp";
+    rev = version;
+    sha256 = "sha256:0k51rscs9mdgpg3qn4cahql5ncdvlb207m015hr8v6r1vfgn0ddq";
   };
 
-  buildInputs = [ which perl ocaml findlib ];
+  nativeBuildInputs = [ which ];
+
+  buildInputs = [ ocaml findlib ];
 
   patches = [ ./configure.sh.patch ./Makefile.config.example.patch ];
 
diff --git a/nixpkgs/pkgs/development/ocaml-modules/sedlex/default.nix b/nixpkgs/pkgs/development/ocaml-modules/sedlex/default.nix
index 3a9f87bd93ab..c1ea56b5c506 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/sedlex/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/sedlex/default.nix
@@ -1,16 +1,18 @@
-{ stdenv, lib, fetchzip, ocaml, findlib, gen, ppx_tools_versioned, ocaml-migrate-parsetree }:
+{ stdenv, lib, fetchFromGitHub, ocaml, findlib, gen, ppx_tools_versioned, ocaml-migrate-parsetree }:
 
 if !lib.versionAtLeast ocaml.version "4.02"
 then throw "sedlex is not available for OCaml ${ocaml.version}"
 else
 
 stdenv.mkDerivation rec {
-  name = "ocaml${ocaml.version}-sedlex-${version}";
+  pname = "ocaml${ocaml.version}-sedlex";
   version = "1.99.5";
 
-  src = fetchzip {
-    url = "https://github.com/ocaml-community/sedlex/archive/fb84e1766fc4b29e79ec40029ffee5cdb37b392f.tar.gz";
-    sha256 = "0phnqyn6mpv5byr1kkphl24y9q9fb2k3xg9yb457h5816q6ya72n";
+  src = fetchFromGitHub {
+    owner = "ocaml-community";
+    repo = "sedlex";
+    rev = "fb84e1766fc4b29e79ec40029ffee5cdb37b392f";
+    sha256 = "sha256-VhzlDTYBFXgKWT69PqZYLuHkiaDwzhmyX2XfaqzHFl4=";
   };
 
   buildInputs = [ ocaml findlib ];
diff --git a/nixpkgs/pkgs/development/ocaml-modules/seq/default.nix b/nixpkgs/pkgs/development/ocaml-modules/seq/default.nix
index 44503668ff0a..6131585e34b1 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/seq/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/seq/default.nix
@@ -2,7 +2,7 @@
 
 stdenv.mkDerivation ({
   version = "0.1";
-  name = "ocaml${ocaml.version}-seq-0.1";
+  pname = "ocaml${ocaml.version}-seq";
 
   meta = {
     license = lib.licenses.lgpl21;
diff --git a/nixpkgs/pkgs/development/ocaml-modules/sha/default.nix b/nixpkgs/pkgs/development/ocaml-modules/sha/default.nix
index 80a5205a2301..c1a76e4149e6 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/sha/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/sha/default.nix
@@ -2,11 +2,11 @@
 
 buildDunePackage rec {
   pname = "sha";
-  version = "1.14";
+  version = "1.15.1";
 
   src = fetchurl {
     url = "https://github.com/djs55/ocaml-${pname}/releases/download/v${version}/${pname}-v${version}.tbz";
-    sha256 = "114vydrfdp7fayigvgk3ckiby0kh4n49c1j53v8k40gk6nzm3l19";
+    sha256 = "sha256-cRtjydvwgXgimi6F3C48j7LrWgfMO6m9UJKjKlxvp0Q=";
   };
 
   useDune2 = true;
diff --git a/nixpkgs/pkgs/development/ocaml-modules/sodium/default.nix b/nixpkgs/pkgs/development/ocaml-modules/sodium/default.nix
index dc090e91743f..cff3d6186d1a 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/sodium/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/sodium/default.nix
@@ -1,9 +1,5 @@
 { lib, stdenv, fetchFromGitHub, ocaml, findlib, ocamlbuild, ctypes, libsodium }:
 
-if lib.versionAtLeast ocaml.version "4.10"
-then throw "sodium is not available for OCaml ${ocaml.version}"
-else
-
 stdenv.mkDerivation rec {
   pname = "ocaml${ocaml.version}-sodium";
   version = "0.6.0";
diff --git a/nixpkgs/pkgs/development/ocaml-modules/sosa/default.nix b/nixpkgs/pkgs/development/ocaml-modules/sosa/default.nix
index 3687f2be9974..f244ad550bf1 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/sosa/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/sosa/default.nix
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
   doCheck = true;
 
   meta = with lib; {
-    homepage = http://www.hammerlab.org/docs/sosa/master/index.html;
+    homepage = "http://www.hammerlab.org/docs/sosa/master/index.html";
     description = "Sane OCaml String API";
     license = licenses.isc;
     maintainers = [ maintainers.alexfmpe ];
diff --git a/nixpkgs/pkgs/development/ocaml-modules/sqlite3EZ/default.nix b/nixpkgs/pkgs/development/ocaml-modules/sqlite3EZ/default.nix
index b6a5dc5ecaad..02a281740b9f 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/sqlite3EZ/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/sqlite3EZ/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, ocaml, findlib, ocamlbuild, twt, ocaml_sqlite3 }:
+{ lib, stdenv, fetchFromGitHub, ocaml, findlib, ocamlbuild, twt, ocaml_sqlite3 }:
 
 assert lib.versionAtLeast (lib.getVersion ocaml) "3.12";
 
@@ -6,12 +6,15 @@ if lib.versionAtLeast ocaml.version "4.06"
 then throw "sqlite3EZ is not available for OCaml ${ocaml.version}"
 else
 
-stdenv.mkDerivation {
-  name = "ocaml-sqlite3EZ-0.1.0";
+stdenv.mkDerivation rec {
+  pname = "ocaml-sqlite3EZ";
+  version = "0.1.0";
 
-  src = fetchurl {
-    url = "https://github.com/mlin/ocaml-sqlite3EZ/archive/v0.1.0.tar.gz";
-    sha256 = "8ed2c5d5914a65cbd95589ef11bfb8b38a020eb850cdd49b8adce7ee3a563748";
+  src = fetchFromGitHub {
+    owner = "mlin";
+    repo = "ocaml-sqlite3EZ";
+    rev = "v${version}";
+    sha256 = "sha256-pKysvth0efxJeyJQY2Dnqarg7OtsKyyLnFV/1ZhsfDY=";
   };
 
   buildInputs = [ ocaml findlib ocamlbuild twt ];
@@ -25,6 +28,6 @@ stdenv.mkDerivation {
     description = "A thin wrapper for sqlite3-ocaml with a simplified interface";
     license = licenses.mit;
     maintainers = [ maintainers.vbgl ];
-    platforms = ocaml.meta.platforms or [];
+    platforms = ocaml.meta.platforms or [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/ocaml-modules/tls/async.nix b/nixpkgs/pkgs/development/ocaml-modules/tls/async.nix
index 0215ac180882..ceac7a7c0749 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/tls/async.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/tls/async.nix
@@ -1,4 +1,4 @@
-{ lib, buildDunePackage, tls, async, cstruct-async, core, cstruct, mirage-crypto-rng-async, async_find }:
+{ lib, buildDunePackage, tls, async, cstruct-async, core, cstruct, mirage-crypto-rng-async }:
 
 buildDunePackage rec {
   pname = "tls-async";
@@ -12,7 +12,6 @@ buildDunePackage rec {
 
   propagatedBuildInputs = [
     async
-    async_find
     core
     cstruct
     cstruct-async
diff --git a/nixpkgs/pkgs/development/ocaml-modules/tls/default.nix b/nixpkgs/pkgs/development/ocaml-modules/tls/default.nix
index e5c9b7b54b1c..81f0a176bfc9 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/tls/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/tls/default.nix
@@ -1,15 +1,16 @@
 { lib, fetchurl, buildDunePackage
-, cstruct, cstruct-sexp, domain-name, fmt, ppx_cstruct, ppx_sexp_conv, logs, hkdf, mirage-crypto, mirage-crypto-ec, mirage-crypto-pk, mirage-crypto-rng, ocaml_lwt, ptime, rresult, sexplib, x509
+, cstruct, cstruct-sexp, domain-name, fmt, ppx_cstruct, ppx_sexp_conv, logs, hkdf, mirage-crypto, mirage-crypto-ec, mirage-crypto-pk, mirage-crypto-rng, ocaml_lwt, ptime, sexplib, x509
+, ipaddr, ipaddr-sexp
 , alcotest, cstruct-unix, ounit2, randomconv
 }:
 
 buildDunePackage rec {
   pname = "tls";
-  version = "0.14.1";
+  version = "0.15.2";
 
   src = fetchurl {
     url = "https://github.com/mirleft/ocaml-tls/releases/download/v${version}/tls-v${version}.tbz";
-    sha256 = "58cf2d517d6eac5b1ccc5eeb656da690aef2125a19c1eca3fbececd858046216";
+    sha256 = "b76371757249bbeabb12c333de4ea2a09c095767bdbbc83322538c0da1fc1e36";
   };
 
   minimumOCamlVersion = "4.08";
@@ -30,9 +31,10 @@ buildDunePackage rec {
     mirage-crypto-rng
     ocaml_lwt
     ptime
-    rresult
     sexplib
     x509
+    ipaddr
+    ipaddr-sexp
   ];
 
   doCheck = true;
diff --git a/nixpkgs/pkgs/development/ocaml-modules/twt/default.nix b/nixpkgs/pkgs/development/ocaml-modules/twt/default.nix
index f9af4ab8ca05..407601c7a46c 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/twt/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/twt/default.nix
@@ -1,11 +1,14 @@
-{ lib, stdenv, fetchzip, ocaml, findlib }:
+{ lib, stdenv, fetchFromGitHub, ocaml, findlib }:
 
-stdenv.mkDerivation {
-  name = "ocaml${ocaml.version}-twt-0.94.0";
+stdenv.mkDerivation rec {
+  pname = "ocaml${ocaml.version}-twt";
+  version = "0.94.0";
 
-  src = fetchzip {
-    url = "https://github.com/mlin/twt/archive/v0.94.0.tar.gz";
-    sha256 = "0298gdgzl4cifxnc1d8sbrvz1lkiq5r5ifkq1fparm6gvqywpf65";
+  src = fetchFromGitHub {
+    owner = "mlin";
+    repo = "twt";
+    rev = "v${version}";
+    sha256 = "sha256-xbjLPd7P1KyuC3i6WHLBcdLwd14atcBsd5ER+l97KAk=";
   };
 
   buildInputs = [ ocaml findlib ];
@@ -26,6 +29,6 @@ stdenv.mkDerivation {
     description = "“The Whitespace Thing” for OCaml";
     license = licenses.mit;
     maintainers = [ maintainers.vbgl ];
-    platforms = ocaml.meta.platforms or [];
+    platforms = ocaml.meta.platforms or [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/ocaml-modules/type_conv/108.08.00.nix b/nixpkgs/pkgs/development/ocaml-modules/type_conv/108.08.00.nix
index 72e4fcbb35f1..337874e11a94 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/type_conv/108.08.00.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/type_conv/108.08.00.nix
@@ -1,18 +1,19 @@
-{lib, stdenv, fetchurl, ocaml, findlib, camlp4}:
+{ lib, stdenv, fetchurl, ocaml, findlib, camlp4 }:
 
 if !lib.versionAtLeast ocaml.version "3.12"
-|| lib.versionAtLeast ocaml.version "4.03"
+  || lib.versionAtLeast ocaml.version "4.03"
 then throw "type_conv-108.08.00 is not available for OCaml ${ocaml.version}" else
 
-stdenv.mkDerivation {
-  name = "ocaml-type_conv-108.08.00";
+stdenv.mkDerivation rec {
+  pname = "ocaml-type_conv";
+  version = "108.08.00";
 
   src = fetchurl {
-    url = "https://ocaml.janestreet.com/ocaml-core/108.08.00/individual/type_conv-108.08.00.tar.gz";
+    url = "https://ocaml.janestreet.com/ocaml-core/${version}/individual/type_conv-${version}.tar.gz";
     sha256 = "08ysikwwp69zvc147lzzg79nwlrzrk738rj0ggcfadi8h5il42sl";
   };
 
-  buildInputs = [ocaml findlib camlp4];
+  buildInputs = [ ocaml findlib camlp4 ];
 
   createFindlibDestdir = true;
 
@@ -21,7 +22,7 @@ stdenv.mkDerivation {
     description = "Support library for OCaml preprocessor type conversions";
     license = licenses.asl20;
     branch = "108";
-    platforms = ocaml.meta.platforms or [];
+    platforms = ocaml.meta.platforms or [ ];
     maintainers = with maintainers; [ maggesi ];
   };
 }
diff --git a/nixpkgs/pkgs/development/ocaml-modules/type_conv/109.60.01.nix b/nixpkgs/pkgs/development/ocaml-modules/type_conv/109.60.01.nix
index e41e9b188fc8..cc77a731f020 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/type_conv/109.60.01.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/type_conv/109.60.01.nix
@@ -1,18 +1,19 @@
-{stdenv, lib, fetchurl, ocaml, findlib, camlp4}:
+{ stdenv, lib, fetchurl, ocaml, findlib, camlp4 }:
 
 if !lib.versionAtLeast ocaml.version "4.00"
-|| lib.versionAtLeast ocaml.version "4.03"
+  || lib.versionAtLeast ocaml.version "4.03"
 then throw "type_conv-109.60.01 is not available for OCaml ${ocaml.version}" else
 
-stdenv.mkDerivation {
-  name = "ocaml-type_conv-109.60.01";
+stdenv.mkDerivation rec {
+  pname = "ocaml-type_conv";
+  version = "109.60.01";
 
   src = fetchurl {
-    url = "https://github.com/janestreet/type_conv/archive/109.60.01.tar.gz";
+    url = "https://github.com/janestreet/type_conv/archive/${version}.tar.gz";
     sha256 = "0lpxri68glgq1z2pp02rp45cb909xywbff8d4idljrf6fzzil2zx";
   };
 
-  buildInputs = [ocaml findlib camlp4];
+  buildInputs = [ ocaml findlib camlp4 ];
 
   createFindlibDestdir = true;
 
@@ -20,7 +21,7 @@ stdenv.mkDerivation {
     homepage = "http://forge.ocamlcore.org/projects/type-conv/";
     description = "Support library for OCaml preprocessor type conversions";
     license = lib.licenses.lgpl21;
-    platforms = ocaml.meta.platforms or [];
+    platforms = ocaml.meta.platforms or [ ];
     maintainers = with lib.maintainers; [ maggesi ];
   };
 }
diff --git a/nixpkgs/pkgs/development/ocaml-modules/type_conv/112.01.01.nix b/nixpkgs/pkgs/development/ocaml-modules/type_conv/112.01.01.nix
index 3fa9042b0351..c71bfa00e7ef 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/type_conv/112.01.01.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/type_conv/112.01.01.nix
@@ -3,7 +3,7 @@
 buildOcaml rec {
   minimumSupportedOcamlVersion = "4.02";
 
-  name = "type_conv";
+  pname = "type_conv";
   version = "113.00.02";
 
   src = fetchurl {
diff --git a/nixpkgs/pkgs/development/ocaml-modules/typerep/default.nix b/nixpkgs/pkgs/development/ocaml-modules/typerep/default.nix
deleted file mode 100644
index c851f22aa5b8..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/typerep/default.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{lib, buildOcaml, fetchurl, type_conv}:
-
-buildOcaml rec {
-  name = "typerep";
-  version = "112.24.00";
-
-  minimumSupportedOcamlVersion = "4.00";
-
-  src = fetchurl {
-    url = "https://github.com/janestreet/typerep/archive/${version}.tar.gz";
-    sha256 = "4f1ab611a00aaf774e9774b26b687233e0c70d91f684415a876f094a9969eada";
-  };
-
-  propagatedBuildInputs = [ type_conv ];
-
-  meta = with lib; {
-    homepage = "https://github.com/janestreet/typerep";
-    description = "Runtime types for OCaml (beta version)";
-    license = licenses.asl20;
-    maintainers = [ maintainers.ericbmerritt ];
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/uchar/default.nix b/nixpkgs/pkgs/development/ocaml-modules/uchar/default.nix
index 7eec01547150..7d7d87af8532 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/uchar/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/uchar/default.nix
@@ -1,10 +1,11 @@
 { stdenv, fetchurl, ocaml, findlib, ocamlbuild, opaline, withShared ? true, lib }:
 
-stdenv.mkDerivation {
-  name = "ocaml${ocaml.version}-uchar-0.0.2";
+stdenv.mkDerivation rec {
+  pname = "ocaml${ocaml.version}-uchar";
+  version = "0.0.2";
 
   src = fetchurl {
-    url = "https://github.com/ocaml/uchar/releases/download/v0.0.2/uchar-0.0.2.tbz";
+    url = "https://github.com/ocaml/uchar/releases/download/v${version}/uchar-${version}.tbz";
     sha256 = "1w2saw7zanf9m9ffvz2lvcxvlm118pws2x1wym526xmydhqpyfa7";
   };
 
@@ -12,7 +13,7 @@ stdenv.mkDerivation {
   buildInputs = [ findlib ocaml ocamlbuild ];
   buildPhase = "ocaml pkg/build.ml native=true native-dynlink=${lib.boolToString withShared}";
   installPhase = "${opaline}/bin/opaline -libdir $OCAMLFIND_DESTDIR";
-  configurePlatforms = [];
+  configurePlatforms = [ ];
 
   meta = {
     description = "Compatibility library for OCaml’s Uchar module";
diff --git a/nixpkgs/pkgs/development/ocaml-modules/uecc/default.nix b/nixpkgs/pkgs/development/ocaml-modules/uecc/default.nix
index a9ba880531c4..f67980db2ff4 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/uecc/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/uecc/default.nix
@@ -27,7 +27,7 @@ buildDunePackage rec {
 
   meta = {
     description = "Bindings for ECDH and ECDSA for 8-bit, 32-bit, and 64-bit processors";
-    homepage = https://gitlab.com/nomadic-labs/ocaml-uecc;
+    homepage = "https://gitlab.com/nomadic-labs/ocaml-uecc";
     license = lib.licenses.isc;
     maintainers = [ lib.maintainers.ulrikstrid ];
   };
diff --git a/nixpkgs/pkgs/development/ocaml-modules/unstrctrd/default.nix b/nixpkgs/pkgs/development/ocaml-modules/unstrctrd/default.nix
new file mode 100644
index 000000000000..104cabfd0fae
--- /dev/null
+++ b/nixpkgs/pkgs/development/ocaml-modules/unstrctrd/default.nix
@@ -0,0 +1,48 @@
+{ alcotest
+, angstrom
+, bigstringaf
+, buildDunePackage
+, crowbar
+, fetchzip
+, fmt
+, hxd
+, ke
+, lib
+, rresult
+, uutf
+}:
+
+buildDunePackage rec {
+  pname = "unstrctrd";
+  version = "0.3";
+
+  src = fetchzip {
+    url = "https://github.com/dinosaure/unstrctrd/releases/download/v${version}/unstrctrd-v${version}.tbz";
+    sha256 = "0mjm4v7kk75iwwsfnpmxc3bsl8aisz53y7z21sykdp60f4rxnah7";
+  };
+
+  useDune2 = true;
+
+  propagatedBuildInputs = [
+    angstrom
+    uutf
+  ];
+
+  checkInputs = [
+    alcotest
+    bigstringaf
+    crowbar
+    fmt
+    hxd
+    ke
+    rresult
+  ];
+  doCheck = true;
+
+  meta = {
+    description = "A library for parsing email headers";
+    homepage = "https://github.com/dinosaure/unstrctrd";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/uuuu/default.nix b/nixpkgs/pkgs/development/ocaml-modules/uuuu/default.nix
new file mode 100644
index 000000000000..7d2eaac181df
--- /dev/null
+++ b/nixpkgs/pkgs/development/ocaml-modules/uuuu/default.nix
@@ -0,0 +1,40 @@
+{ angstrom
+, buildDunePackage
+, fetchzip
+, findlib
+, lib
+, menhir
+, ocaml
+, re
+}:
+
+buildDunePackage rec {
+  pname = "uuuu";
+  version = "0.2.0";
+
+  src = fetchzip {
+    url = "https://github.com/mirage/uuuu/releases/download/v${version}/uuuu-v${version}.tbz";
+    sha256 = "0457qcxvakbbc56frsh8a5v4y4l0raj9p4zz7jx3brn9255j1mw3";
+  };
+
+  postPatch = ''
+    substituteInPlace src/dune --replace 'ocaml} ' \
+      'ocaml} -I ${findlib}/lib/ocaml/${ocaml.version}/site-lib '
+  '';
+
+  useDune2 = true;
+
+  nativeBuildInputs = [ menhir ];
+
+  buildInputs = [ angstrom ];
+
+  checkInputs = [ re ];
+  doCheck = true;
+
+  meta = {
+    description = "A library to normalize an ISO-8859 input to Unicode code-point";
+    license = lib.licenses.mit;
+    homepage = "https://github.com/mirage/uuuu";
+    maintainers = with lib.maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/variantslib/default.nix b/nixpkgs/pkgs/development/ocaml-modules/variantslib/default.nix
deleted file mode 100644
index f39336a84231..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/variantslib/default.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{ lib, buildOcaml, ocaml, fetchurl, type_conv }:
-
-if lib.versionAtLeast ocaml.version "4.06"
-then throw "variantslib-109.15.03 is not available for OCaml ${ocaml.version}"
-else
-
-buildOcaml rec {
-  name = "variantslib";
-  version = "109.15.03";
-
-  minimumSupportedOcamlVersion = "4.00";
-
-  src = fetchurl {
-    url = "https://github.com/janestreet/variantslib/archive/${version}.tar.gz";
-    sha256 = "a948dcdd4ca54786fe0646386b6e37a9db03bf276c6557ea374d82740bf18055";
-  };
-
-  propagatedBuildInputs = [ type_conv ];
-
-  meta = with lib; {
-    homepage = "https://github.com/janestreet/variantslib";
-    description = "OCaml variants as first class values";
-    license = licenses.asl20;
-    maintainers = [ maintainers.ericbmerritt ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/wayland/default.nix b/nixpkgs/pkgs/development/ocaml-modules/wayland/default.nix
index 82764af64f53..7dfb46ce63cf 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/wayland/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/wayland/default.nix
@@ -12,15 +12,15 @@
 
 buildDunePackage rec {
   pname = "wayland";
-  version = "0.2";
+  version = "1.0";
 
   minimumOCamlVersion = "4.08";
 
   useDune2 = true;
 
   src = fetchurl {
-    url = "https://github.com/talex5/ocaml-wayland/releases/download/v${version}/wayland-v${version}.tbz";
-    sha256 = "4eb323e42a8c64e9e49b15a588342bfcc1e99640305cb261d128c75612d9458c";
+    url = "https://github.com/talex5/ocaml-wayland/releases/download/v${version}/wayland-${version}.tbz";
+    sha256 = "bf8fd0057242d11f1c265c11cfa5de3c517ec0ad5994eae45e1efe3aac034510";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/ocaml-modules/x509/default.nix b/nixpkgs/pkgs/development/ocaml-modules/x509/default.nix
index 8330eb279651..116772e78193 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/x509/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/x509/default.nix
@@ -1,6 +1,6 @@
 { lib, fetchurl, buildDunePackage
 , alcotest, cstruct-unix
-, asn1-combinators, domain-name, fmt, gmap, pbkdf, rresult, mirage-crypto, mirage-crypto-ec, mirage-crypto-pk
+, asn1-combinators, domain-name, fmt, gmap, pbkdf, mirage-crypto, mirage-crypto-ec, mirage-crypto-pk, ipaddr
 , logs, base64
 }:
 
@@ -8,17 +8,17 @@ buildDunePackage rec {
   minimumOCamlVersion = "4.07";
 
   pname = "x509";
-  version = "0.14.1";
+  version = "0.15.2";
 
   src = fetchurl {
     url = "https://github.com/mirleft/ocaml-x509/releases/download/v${version}/x509-v${version}.tbz";
-    sha256 = "d91eb4f2790f9d098713c71cc4b5d12706aedb1795666b5e6d667fe5c262f9c3";
+    sha256 = "4034afdd83a0cb8291b1f809403015da9139bd772813d59d6093e42ec31ba643";
   };
 
   useDune2 = true;
 
   buildInputs = [ alcotest cstruct-unix ];
-  propagatedBuildInputs = [ asn1-combinators domain-name fmt gmap mirage-crypto mirage-crypto-pk mirage-crypto-ec pbkdf rresult logs base64 ];
+  propagatedBuildInputs = [ asn1-combinators domain-name fmt gmap mirage-crypto mirage-crypto-pk mirage-crypto-ec pbkdf logs base64 ipaddr ];
 
   doCheck = true;
 
diff --git a/nixpkgs/pkgs/development/ocaml-modules/xml-light/default.nix b/nixpkgs/pkgs/development/ocaml-modules/xml-light/default.nix
index a6db0dc78705..248b3f124074 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/xml-light/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/xml-light/default.nix
@@ -1,4 +1,4 @@
-{stdenv, lib, fetchurl, ocaml, findlib}:
+{ stdenv, lib, fetchFromGitHub, ocaml, findlib }:
 let
   pname = "xml-light";
   version = "2.4";
@@ -6,9 +6,11 @@ in
 stdenv.mkDerivation {
   name = "ocaml-${pname}-${version}";
 
-  src = fetchurl {
-    url = "https://github.com/ncannasse/${pname}/archive/${version}.tar.gz";
-    sha256 = "10b55qf6mvdp11ny3h0jv6k6wrs78jr9lhsiswl0xya7z8r8j0a2";
+  src = fetchFromGitHub {
+    owner = "ncannasse";
+    repo = "xml-light";
+    rev = version;
+    sha256 = "sha256-2txmkl/ZN5RGaLQJmr+orqwB4CbFk2RpLJd4gr7kPiE=";
   };
 
   buildInputs = [ ocaml findlib ];
@@ -38,6 +40,6 @@ stdenv.mkDerivation {
     homepage = "http://tech.motion-twin.com/xmllight.html";
     license = lib.licenses.lgpl21;
     maintainers = [ lib.maintainers.romildo ];
-    platforms = ocaml.meta.platforms or [];
+    platforms = ocaml.meta.platforms or [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/ocaml-modules/xtmpl/default.nix b/nixpkgs/pkgs/development/ocaml-modules/xtmpl/default.nix
index f1c1f15dc72d..7c2f0a01e53c 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/xtmpl/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/xtmpl/default.nix
@@ -1,39 +1,23 @@
-{ lib, stdenv, fetchFromGitLab, ocaml, findlib, iri, ppx_tools, js_of_ocaml
-, js_of_ocaml-ppx, re }:
+{ lib, buildDunePackage, fetchFromGitLab, iri, re, sedlex_2, uutf }:
 
-if lib.versionOlder ocaml.version "4.03"
-|| lib.versionAtLeast ocaml.version "4.11"
-then throw "xtmpl not supported for ocaml ${ocaml.version}"
-else
-stdenv.mkDerivation rec {
-  name = "ocaml${ocaml.version}-xtmpl-${version}";
-  version = "0.17.0";
+buildDunePackage rec {
+  pname = "xtmpl";
+  version = "0.19.0";
+  useDune2 = true;
   src = fetchFromGitLab {
     domain = "framagit.org";
     owner = "zoggy";
     repo = "xtmpl";
     rev = version;
-    sha256 = "1hq6y4rhz958q40145k4av8hx8jyvspg78xf741samd7vc3jd221";
+    sha256 = "sha256:0vwj0aayg60wm98d91fg3hmj90730liljy4cn8771dpxvz8m07bw";
   };
 
-  patches = [ ./jsoo.patch ];
-
-  postPatch = ''
-    substituteInPlace Makefile --replace js_of_ocaml.ppx js_of_ocaml-ppx
-  '';
-
-  buildInputs = [ ocaml findlib ppx_tools js_of_ocaml js_of_ocaml-ppx ];
-  propagatedBuildInputs = [ iri re ];
-
-  createFindlibDestdir = true;
-
-  dontStrip = true;
+  propagatedBuildInputs = [ iri re sedlex_2 uutf ];
 
   meta = with lib; {
     description = "XML templating library for OCaml";
     homepage = "https://www.good-eris.net/xtmpl/";
     license = licenses.lgpl3;
-    platforms = ocaml.meta.platforms or [];
     maintainers = with maintainers; [ regnat ];
   };
 }
diff --git a/nixpkgs/pkgs/development/ocaml-modules/xtmpl/jsoo.patch b/nixpkgs/pkgs/development/ocaml-modules/xtmpl/jsoo.patch
deleted file mode 100644
index 7546dbca924a..000000000000
--- a/nixpkgs/pkgs/development/ocaml-modules/xtmpl/jsoo.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-diff --git a/xtmpl_js.ml b/xtmpl_js.ml
-index e0d3894..991d1b3 100644
---- a/xtmpl_js.ml
-+++ b/xtmpl_js.ml
-@@ -25,6 +25,8 @@
- 
- (** *)
- 
-+open Js_of_ocaml
-+
- let log s = Firebug.console##log (Js.string s);;
- 
- module X = Xtmpl_rewrite
-diff --git a/xtmpl_js.mli b/xtmpl_js.mli
-index d709896..5ed471c 100644
---- a/xtmpl_js.mli
-+++ b/xtmpl_js.mli
-@@ -25,6 +25,8 @@
- 
- (** Convenient functions to use in JS code *)
- 
-+open Js_of_ocaml
-+
- (** Create a new tree of DOM nodes from a given XML tree.
-   Errors are logged to the firebug console.
-   @param doc Default is [Dom_html.document].
diff --git a/nixpkgs/pkgs/development/ocaml-modules/xtmpl/ppx.nix b/nixpkgs/pkgs/development/ocaml-modules/xtmpl/ppx.nix
new file mode 100644
index 000000000000..b6f5bd65000f
--- /dev/null
+++ b/nixpkgs/pkgs/development/ocaml-modules/xtmpl/ppx.nix
@@ -0,0 +1,14 @@
+{ buildDunePackage, xtmpl, ppxlib }:
+
+buildDunePackage {
+  pname = "xtmpl_ppx";
+  minimalOCamlVersion = "4.11";
+
+  inherit (xtmpl) src version useDune2;
+
+  buildInputs = [ ppxlib xtmpl ];
+
+  meta = xtmpl.meta // {
+    description = "Xml templating library, ppx extension";
+  };
+}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/yaml/default.nix b/nixpkgs/pkgs/development/ocaml-modules/yaml/default.nix
index 2b8714ed1034..43481e4c7f38 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/yaml/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/yaml/default.nix
@@ -1,4 +1,4 @@
-{ lib, fetchurl, buildDunePackage
+{ lib, fetchurl, buildDunePackage, ocaml
 , dune-configurator
 , bos, ctypes, fmt, logs, rresult
 , mdx, alcotest, crowbar, junit_alcotest, ezjsonm
@@ -17,7 +17,9 @@ buildDunePackage rec {
 
   buildInputs = [ dune-configurator ];
   propagatedBuildInputs = [ bos ctypes rresult ];
-  checkInputs = [ fmt logs mdx alcotest crowbar junit_alcotest ezjsonm ];
+  # crowbar is not available for OCaml < 4.08
+  doCheck = lib.versionAtLeast ocaml.version "4.08";
+  checkInputs = [ fmt logs mdx.bin alcotest crowbar junit_alcotest ezjsonm ];
 
   meta = {
     description = "Parse and generate YAML 1.1 files";
diff --git a/nixpkgs/pkgs/development/ocaml-modules/yuscii/default.nix b/nixpkgs/pkgs/development/ocaml-modules/yuscii/default.nix
new file mode 100644
index 000000000000..9d7b5d3c4d6b
--- /dev/null
+++ b/nixpkgs/pkgs/development/ocaml-modules/yuscii/default.nix
@@ -0,0 +1,35 @@
+{ alcotest
+, buildDunePackage
+, fetchzip
+, gcc
+, fmt
+, lib
+, uutf
+}:
+
+buildDunePackage rec {
+  pname = "yuscii";
+  version = "0.3.0";
+
+  src = fetchzip {
+    url = "https://github.com/mirage/yuscii/releases/download/v${version}/yuscii-v${version}.tbz";
+    sha256 = "0idywlkw0fbakrxv65swnr5bj7f2vns9kpay7q03gzlv82p670hy";
+  };
+
+  useDune2 = true;
+
+  checkInputs = [
+    gcc
+    alcotest
+    fmt
+    uutf
+  ];
+  doCheck = true;
+
+  meta = {
+    description = "A simple mapper between UTF-7 to Unicode according RFC2152";
+    license = lib.licenses.mit;
+    homepage = "https://github.com/mirage/yuscii";
+    maintainers = with lib.maintainers; [ ];
+  };
+}