summary refs log tree commit diff
path: root/pkgs/development
diff options
context:
space:
mode:
authorJoachim F <joachifm@users.noreply.github.com>2016-09-23 19:57:05 +0200
committerGitHub <noreply@github.com>2016-09-23 19:57:05 +0200
commitaa9227828bd24526023303de36e4a03cb98d58a2 (patch)
treef53a70cefefefb410bf0ce9f01eebe9466bf5ed5 /pkgs/development
parentac8206e31d92f8325d4ede3d57df9cb9905a9c7a (diff)
parent65fb52f21045134690bacf5d9c21086db20ab1d1 (diff)
downloadnixlib-aa9227828bd24526023303de36e4a03cb98d58a2.tar
nixlib-aa9227828bd24526023303de36e4a03cb98d58a2.tar.gz
nixlib-aa9227828bd24526023303de36e4a03cb98d58a2.tar.bz2
nixlib-aa9227828bd24526023303de36e4a03cb98d58a2.tar.lz
nixlib-aa9227828bd24526023303de36e4a03cb98d58a2.tar.xz
nixlib-aa9227828bd24526023303de36e4a03cb98d58a2.tar.zst
nixlib-aa9227828bd24526023303de36e4a03cb98d58a2.zip
Merge pull request #18572 from maurer/janestreet
Janestreet
Diffstat (limited to 'pkgs/development')
-rw-r--r--pkgs/development/ocaml-modules/async/default.nix6
-rw-r--r--pkgs/development/ocaml-modules/async_extra/default.nix10
-rw-r--r--pkgs/development/ocaml-modules/async_find/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/async_kernel/default.nix8
-rw-r--r--pkgs/development/ocaml-modules/async_shell/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/async_ssl/default.nix8
-rw-r--r--pkgs/development/ocaml-modules/async_unix/default.nix10
-rw-r--r--pkgs/development/ocaml-modules/cohttp/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/conduit/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/core/default.nix12
-rw-r--r--pkgs/development/ocaml-modules/core_extended/default.nix8
-rw-r--r--pkgs/development/ocaml-modules/core_kernel/default.nix12
-rw-r--r--pkgs/development/ocaml-modules/cstruct/default.nix8
-rw-r--r--pkgs/development/ocaml-modules/custom_printf/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/ezjsonm/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/ipaddr/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/janestreet/async-extra.nix17
-rw-r--r--pkgs/development/ocaml-modules/janestreet/async-kernel.nix16
-rw-r--r--pkgs/development/ocaml-modules/janestreet/async-rpc-kernel.nix18
-rw-r--r--pkgs/development/ocaml-modules/janestreet/async-unix.nix17
-rw-r--r--pkgs/development/ocaml-modules/janestreet/async.nix16
-rw-r--r--pkgs/development/ocaml-modules/janestreet/bin_prot.nix17
-rw-r--r--pkgs/development/ocaml-modules/janestreet/buildOcamlJane.nix35
-rw-r--r--pkgs/development/ocaml-modules/janestreet/core-extended.nix22
-rw-r--r--pkgs/development/ocaml-modules/janestreet/core.nix20
-rw-r--r--pkgs/development/ocaml-modules/janestreet/core_kernel.nix19
-rw-r--r--pkgs/development/ocaml-modules/janestreet/fieldslib.nix19
-rw-r--r--pkgs/development/ocaml-modules/janestreet/js-build-tools-darwin.patch11
-rw-r--r--pkgs/development/ocaml-modules/janestreet/js-build-tools.nix29
-rw-r--r--pkgs/development/ocaml-modules/janestreet/ppx-assert.nix16
-rw-r--r--pkgs/development/ocaml-modules/janestreet/ppx-bench.nix18
-rw-r--r--pkgs/development/ocaml-modules/janestreet/ppx-bin-prot.nix14
-rw-r--r--pkgs/development/ocaml-modules/janestreet/ppx-compare.nix15
-rw-r--r--pkgs/development/ocaml-modules/janestreet/ppx-core.nix14
-rw-r--r--pkgs/development/ocaml-modules/janestreet/ppx-custom-printf.nix15
-rw-r--r--pkgs/development/ocaml-modules/janestreet/ppx-driver.nix15
-rw-r--r--pkgs/development/ocaml-modules/janestreet/ppx-enumerate.nix14
-rw-r--r--pkgs/development/ocaml-modules/janestreet/ppx-expect.nix19
-rw-r--r--pkgs/development/ocaml-modules/janestreet/ppx-fail.nix14
-rw-r--r--pkgs/development/ocaml-modules/janestreet/ppx-fields-conv.nix14
-rw-r--r--pkgs/development/ocaml-modules/janestreet/ppx-here.nix14
-rw-r--r--pkgs/development/ocaml-modules/janestreet/ppx-inline-test.nix14
-rw-r--r--pkgs/development/ocaml-modules/janestreet/ppx-jane.nix22
-rw-r--r--pkgs/development/ocaml-modules/janestreet/ppx-let.nix14
-rw-r--r--pkgs/development/ocaml-modules/janestreet/ppx-optcomp.nix15
-rw-r--r--pkgs/development/ocaml-modules/janestreet/ppx-pipebang.nix14
-rw-r--r--pkgs/development/ocaml-modules/janestreet/ppx-sexp-conv.nix14
-rw-r--r--pkgs/development/ocaml-modules/janestreet/ppx-sexp-message.nix14
-rw-r--r--pkgs/development/ocaml-modules/janestreet/ppx-sexp-value.nix14
-rw-r--r--pkgs/development/ocaml-modules/janestreet/ppx-type-conv.nix15
-rw-r--r--pkgs/development/ocaml-modules/janestreet/ppx-typerep-conv.nix14
-rw-r--r--pkgs/development/ocaml-modules/janestreet/ppx-variants-conv.nix14
-rw-r--r--pkgs/development/ocaml-modules/janestreet/re2.nix20
-rw-r--r--pkgs/development/ocaml-modules/janestreet/sexplib.nix18
-rw-r--r--pkgs/development/ocaml-modules/janestreet/textutils.nix18
-rw-r--r--pkgs/development/ocaml-modules/janestreet/typerep.nix20
-rw-r--r--pkgs/development/ocaml-modules/janestreet/variantslib.nix19
-rw-r--r--pkgs/development/ocaml-modules/pa_test/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/ppx_deriving/default.nix28
-rw-r--r--pkgs/development/ocaml-modules/re2/default.nix6
-rw-r--r--pkgs/development/ocaml-modules/textutils/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/uri/default.nix4
62 files changed, 789 insertions, 64 deletions
diff --git a/pkgs/development/ocaml-modules/async/default.nix b/pkgs/development/ocaml-modules/async/default.nix
index 2b84519036c7..498315f9cbfd 100644
--- a/pkgs/development/ocaml-modules/async/default.nix
+++ b/pkgs/development/ocaml-modules/async/default.nix
@@ -1,5 +1,5 @@
-{stdenv, buildOcaml, fetchurl, async_kernel,
- async_unix, async_extra, pa_ounit}:
+{stdenv, buildOcaml, fetchurl, async_kernel_p4,
+ async_unix_p4, async_extra_p4, pa_ounit}:
 
 buildOcaml rec {
   name = "async";
@@ -12,7 +12,7 @@ buildOcaml rec {
     sha256 = "ecc4ca939ab098e689332921b110dbaacd06d9f8d8bf697023dfff3ca37dc1e9";
   };
 
-  propagatedBuildInputs = [ async_kernel async_unix async_extra pa_ounit ];
+  propagatedBuildInputs = [ async_kernel_p4 async_unix_p4 async_extra_p4 pa_ounit ];
 
   meta = with stdenv.lib; {
     homepage = https://github.com/janestreet/async;
diff --git a/pkgs/development/ocaml-modules/async_extra/default.nix b/pkgs/development/ocaml-modules/async_extra/default.nix
index 2d1e1dea69cc..80addcfc3bb4 100644
--- a/pkgs/development/ocaml-modules/async_extra/default.nix
+++ b/pkgs/development/ocaml-modules/async_extra/default.nix
@@ -1,6 +1,6 @@
-{stdenv, buildOcaml, fetchurl, async_kernel, async_unix,
- bin_prot, core, custom_printf, fieldslib, herelib, pa_ounit,
- pipebang, pa_test, sexplib}:
+{stdenv, buildOcaml, fetchurl, async_kernel_p4, async_unix_p4,
+ bin_prot_p4, core_p4, custom_printf, fieldslib_p4, herelib, pa_ounit,
+ pipebang, pa_test, sexplib_p4}:
 
 buildOcaml rec {
   name = "async_extra";
@@ -14,8 +14,8 @@ buildOcaml rec {
   };
 
   buildInputs = [ pa_test pa_ounit ];
-  propagatedBuildInputs = [ async_kernel async_unix core bin_prot custom_printf
-                            fieldslib herelib pipebang sexplib ];
+  propagatedBuildInputs = [ async_kernel_p4 async_unix_p4 core_p4 bin_prot_p4 custom_printf
+                            fieldslib_p4 herelib pipebang sexplib_p4 ];
 
   meta = with stdenv.lib; {
     homepage = https://github.com/janestreet/async_extra;
diff --git a/pkgs/development/ocaml-modules/async_find/default.nix b/pkgs/development/ocaml-modules/async_find/default.nix
index ae10e931ce25..d0e89940433c 100644
--- a/pkgs/development/ocaml-modules/async_find/default.nix
+++ b/pkgs/development/ocaml-modules/async_find/default.nix
@@ -1,4 +1,4 @@
-{stdenv, buildOcaml, fetchurl, async, core, sexplib}:
+{stdenv, buildOcaml, fetchurl, async_p4, core_p4, sexplib_p4}:
 
 buildOcaml rec {
   name = "async_find";
@@ -11,7 +11,7 @@ buildOcaml rec {
     sha256 = "4e3fda72f50174f05d96a5a09323f236c041b1a685890c155822956f3deb8803";
   };
 
-  propagatedBuildInputs = [ async core sexplib ];
+  propagatedBuildInputs = [ async_p4 core_p4 sexplib_p4 ];
 
   meta = with stdenv.lib; {
     homepage = https://github.com/janestreet/async_find;
diff --git a/pkgs/development/ocaml-modules/async_kernel/default.nix b/pkgs/development/ocaml-modules/async_kernel/default.nix
index 8c0d8d7c851e..43fde1631ac7 100644
--- a/pkgs/development/ocaml-modules/async_kernel/default.nix
+++ b/pkgs/development/ocaml-modules/async_kernel/default.nix
@@ -1,6 +1,6 @@
-{stdenv, buildOcaml, fetchurl, core_kernel,
- bin_prot, fieldslib, pa_ounit, pa_test,
- sexplib, herelib}:
+{stdenv, buildOcaml, fetchurl, core_kernel_p4,
+ bin_prot_p4, fieldslib_p4, pa_ounit, pa_test,
+ sexplib_p4, herelib}:
 
 buildOcaml rec {
   name = "async_kernel";
@@ -14,7 +14,7 @@ buildOcaml rec {
   };
 
   buildInputs = [ pa_test pa_ounit ];
-  propagatedBuildInputs = [ core_kernel bin_prot fieldslib herelib sexplib ];
+  propagatedBuildInputs = [ core_kernel_p4 bin_prot_p4 fieldslib_p4 herelib sexplib_p4 ];
 
   meta = with stdenv.lib; {
     homepage = https://github.com/janestreet/async_kernel;
diff --git a/pkgs/development/ocaml-modules/async_shell/default.nix b/pkgs/development/ocaml-modules/async_shell/default.nix
index 75755833a5f5..6b1e772bc7d1 100644
--- a/pkgs/development/ocaml-modules/async_shell/default.nix
+++ b/pkgs/development/ocaml-modules/async_shell/default.nix
@@ -1,4 +1,4 @@
-{stdenv, buildOcaml, fetchurl, async, core, core_extended}:
+{stdenv, buildOcaml, fetchurl, async_p4, core_p4, core_extended_p4}:
 
 buildOcaml rec {
   name = "async_shell";
@@ -11,7 +11,7 @@ buildOcaml rec {
     sha256 = "0b4497bea9124c5a665ee58fb0a73c5cbf2f757479df902e6870627196e6c105";
   };
 
-  propagatedBuildInputs = [ async core core_extended ];
+  propagatedBuildInputs = [ async_p4 core_p4 core_extended_p4 ];
 
   meta = with stdenv.lib; {
     homepage = https://github.com/janestreet/async_shell;
diff --git a/pkgs/development/ocaml-modules/async_ssl/default.nix b/pkgs/development/ocaml-modules/async_ssl/default.nix
index 527d56ceaa01..2bace35aa8b6 100644
--- a/pkgs/development/ocaml-modules/async_ssl/default.nix
+++ b/pkgs/development/ocaml-modules/async_ssl/default.nix
@@ -1,5 +1,5 @@
-{stdenv, buildOcaml, fetchurl, async, comparelib, core, ctypes, openssl,
- fieldslib, herelib, pa_bench, pa_ounit, pipebang, pa_test, sexplib}:
+{stdenv, buildOcaml, fetchurl, async_p4, comparelib, core_p4, ctypes, openssl,
+ fieldslib_p4, herelib, pa_bench, pa_ounit, pipebang, pa_test, sexplib_p4}:
 
 buildOcaml rec {
   name = "async_ssl";
@@ -13,8 +13,8 @@ buildOcaml rec {
   };
 
   buildInputs = [ pa_bench pa_test ];
-  propagatedBuildInputs = [ ctypes async comparelib core fieldslib pa_ounit
-                            herelib pipebang sexplib openssl ];
+  propagatedBuildInputs = [ ctypes async_p4 comparelib core_p4 fieldslib_p4 pa_ounit
+                            herelib pipebang sexplib_p4 openssl ];
 
   meta = with stdenv.lib; {
     homepage = https://github.com/janestreet/async_ssl;
diff --git a/pkgs/development/ocaml-modules/async_unix/default.nix b/pkgs/development/ocaml-modules/async_unix/default.nix
index 81fbd6a99182..6119bcac876a 100644
--- a/pkgs/development/ocaml-modules/async_unix/default.nix
+++ b/pkgs/development/ocaml-modules/async_unix/default.nix
@@ -1,6 +1,6 @@
-{stdenv, buildOcaml, fetchurl, async_kernel,
- bin_prot, comparelib, core, fieldslib, herelib, pa_ounit,
- pipebang, pa_test, sexplib}:
+{stdenv, buildOcaml, fetchurl, async_kernel_p4,
+ bin_prot_p4, comparelib, core_p4, fieldslib_p4, herelib, pa_ounit,
+ pipebang, pa_test, sexplib_p4}:
 
 buildOcaml rec {
   name = "async_unix";
@@ -15,8 +15,8 @@ buildOcaml rec {
 
   hasSharedObjects = true;
   buildInputs = [ pa_ounit ];
-  propagatedBuildInputs = [ async_kernel core bin_prot comparelib
-                            fieldslib herelib pipebang pa_test sexplib ];
+  propagatedBuildInputs = [ async_kernel_p4 core_p4 bin_prot_p4 comparelib
+                            fieldslib_p4 herelib pipebang pa_test sexplib_p4 ];
 
    meta = with stdenv.lib; {
     homepage = https://github.com/janestreet/async_unix;
diff --git a/pkgs/development/ocaml-modules/cohttp/default.nix b/pkgs/development/ocaml-modules/cohttp/default.nix
index 9a30a5e4615e..dcf3c8c13d79 100644
--- a/pkgs/development/ocaml-modules/cohttp/default.nix
+++ b/pkgs/development/ocaml-modules/cohttp/default.nix
@@ -1,4 +1,4 @@
-{stdenv, buildOcaml, fetchurl, cmdliner, re, uri, fieldslib, sexplib, conduit,
+{stdenv, buildOcaml, fetchurl, cmdliner, re, uri, fieldslib_p4, sexplib_p4, conduit,
  stringext, base64, magic-mime, ounit, alcotest, lwt ? null,
  async ? null, async_ssl ? null}:
 
@@ -14,7 +14,7 @@ buildOcaml rec {
   };
 
   buildInputs = [ alcotest ];
-  propagatedBuildInputs = [ cmdliner re uri fieldslib sexplib sexplib
+  propagatedBuildInputs = [ cmdliner re uri fieldslib_p4 sexplib_p4 sexplib_p4
                             conduit stringext base64 magic-mime ounit async
                             async_ssl lwt ];
 
diff --git a/pkgs/development/ocaml-modules/conduit/default.nix b/pkgs/development/ocaml-modules/conduit/default.nix
index dbb83f4c8cf0..26accd99db67 100644
--- a/pkgs/development/ocaml-modules/conduit/default.nix
+++ b/pkgs/development/ocaml-modules/conduit/default.nix
@@ -1,4 +1,4 @@
-{stdenv, buildOcaml, fetchurl, sexplib, stringext, uri, cstruct, ipaddr,
+{stdenv, buildOcaml, fetchurl, sexplib_p4, stringext, uri, cstruct, ipaddr,
  async ? null, async_ssl ? null, lwt ? null}:
 
 buildOcaml rec {
@@ -10,7 +10,7 @@ buildOcaml rec {
     sha256 = "5cf1a46aa0254345e5143feebe6b54bdef96314e9987f44e69f24618d620faa1";
   };
 
-  propagatedBuildInputs = ([ sexplib stringext uri cstruct ipaddr ]
+  propagatedBuildInputs = ([ sexplib_p4 stringext uri cstruct ipaddr ]
                             ++ stdenv.lib.optional (lwt != null) lwt
                             ++ stdenv.lib.optional (async != null) async
                             ++ stdenv.lib.optional (async_ssl != null) async_ssl);
diff --git a/pkgs/development/ocaml-modules/core/default.nix b/pkgs/development/ocaml-modules/core/default.nix
index 96fd80087d66..4da4d16df7dd 100644
--- a/pkgs/development/ocaml-modules/core/default.nix
+++ b/pkgs/development/ocaml-modules/core/default.nix
@@ -1,7 +1,7 @@
 {stdenv, buildOcaml, fetchurl, type_conv,
- core_kernel, bin_prot, comparelib, custom_printf, enumerate,
- fieldslib, herelib, pa_bench, pa_test, pa_ounit,
- pipebang, sexplib, typerep, variantslib}:
+ core_kernel_p4, bin_prot_p4, comparelib, custom_printf, enumerate,
+ fieldslib_p4, herelib, pa_bench, pa_test, pa_ounit,
+ pipebang, sexplib_p4, typerep_p4, variantslib_p4}:
 
 buildOcaml rec {
   name = "core";
@@ -17,9 +17,9 @@ buildOcaml rec {
   hasSharedObjects = true;
 
   buildInputs = [ pa_bench pa_test pa_ounit ];
-  propagatedBuildInputs = [ type_conv core_kernel bin_prot comparelib
-                            custom_printf enumerate fieldslib herelib
-                            pipebang sexplib typerep variantslib ];
+  propagatedBuildInputs = [ type_conv core_kernel_p4 bin_prot_p4 comparelib
+                            custom_printf enumerate fieldslib_p4 herelib
+                            pipebang sexplib_p4 typerep_p4 variantslib_p4 ];
 
   meta = with stdenv.lib; {
     homepage = https://github.com/janestreet/core;
diff --git a/pkgs/development/ocaml-modules/core_extended/default.nix b/pkgs/development/ocaml-modules/core_extended/default.nix
index f311aae3d304..fef4fd81158f 100644
--- a/pkgs/development/ocaml-modules/core_extended/default.nix
+++ b/pkgs/development/ocaml-modules/core_extended/default.nix
@@ -1,5 +1,5 @@
-{stdenv, buildOcaml, fetchurl, bin_prot, comparelib, core, custom_printf,
- fieldslib, pa_bench, pa_ounit, pipebang, pa_test, textutils, re2, sexplib}:
+{stdenv, buildOcaml, fetchurl, bin_prot_p4, comparelib, core_p4, custom_printf,
+ fieldslib_p4, pa_bench, pa_ounit, pipebang, pa_test, textutils_p4, re2_p4, sexplib_p4}:
 
 buildOcaml rec {
   name = "core_extended";
@@ -14,8 +14,8 @@ buildOcaml rec {
 
   hasSharedObjects = true;
   buildInputs = [ pa_bench pa_test pa_ounit ];
-  propagatedBuildInputs = [bin_prot comparelib core custom_printf fieldslib
-                           pipebang textutils re2 sexplib ];
+  propagatedBuildInputs = [bin_prot_p4 comparelib core_p4 custom_printf fieldslib_p4
+                           pipebang textutils_p4 re2_p4 sexplib_p4 ];
 
   meta = with stdenv.lib; {
     homepage = https://github.com/janestreet/core_extended;
diff --git a/pkgs/development/ocaml-modules/core_kernel/default.nix b/pkgs/development/ocaml-modules/core_kernel/default.nix
index 0fed12b195d6..75b248a6a5e6 100644
--- a/pkgs/development/ocaml-modules/core_kernel/default.nix
+++ b/pkgs/development/ocaml-modules/core_kernel/default.nix
@@ -1,7 +1,7 @@
 {stdenv, buildOcaml, fetchurl, type_conv,
- bin_prot, comparelib, custom_printf, enumerate,
- fieldslib, herelib, pa_bench, pa_test, pa_ounit,
- pipebang, sexplib, typerep, variantslib}:
+ bin_prot_p4, comparelib, custom_printf, enumerate,
+ fieldslib_p4, herelib, pa_bench, pa_test, pa_ounit,
+ pipebang, sexplib_p4, typerep_p4, variantslib_p4}:
 
 buildOcaml rec {
   name = "core_kernel";
@@ -17,9 +17,9 @@ buildOcaml rec {
   hasSharedObjects = true;
 
   buildInputs = [ pa_test pa_ounit ];
-  propagatedBuildInputs = [ type_conv pa_bench bin_prot comparelib custom_printf
-                            enumerate fieldslib herelib pipebang sexplib
-                            typerep variantslib ];
+  propagatedBuildInputs = [ type_conv pa_bench bin_prot_p4 comparelib custom_printf
+                            enumerate fieldslib_p4 herelib pipebang sexplib_p4
+                            typerep_p4 variantslib_p4 ];
 
   meta = with stdenv.lib; {
     homepage = https://github.com/janestreet/core_kernel;
diff --git a/pkgs/development/ocaml-modules/cstruct/default.nix b/pkgs/development/ocaml-modules/cstruct/default.nix
index 57a057e0eaa9..c9f04918d172 100644
--- a/pkgs/development/ocaml-modules/cstruct/default.nix
+++ b/pkgs/development/ocaml-modules/cstruct/default.nix
@@ -1,5 +1,5 @@
-{stdenv, writeText, fetchurl, ocaml, ocplib-endian, sexplib, findlib,
- async ? null, lwt ? null, camlp4}:
+{stdenv, writeText, fetchurl, ocaml, ocplib-endian, sexplib_p4, findlib,
+ async_p4 ? null, lwt ? null, camlp4}:
 
 assert stdenv.lib.versionAtLeast (stdenv.lib.getVersion ocaml) "4.01";
 
@@ -12,9 +12,9 @@ stdenv.mkDerivation {
   };
 
   configureFlags = stdenv.lib.strings.concatStringsSep " " ((if lwt != null then ["--enable-lwt"] else []) ++
-                                          (if async != null then ["--enable-async"] else []));
+                                          (if async_p4 != null then ["--enable-async"] else []));
   buildInputs = [ocaml findlib camlp4];
-  propagatedBuildInputs = [ocplib-endian sexplib lwt async];
+  propagatedBuildInputs = [ocplib-endian sexplib_p4 lwt async_p4];
 
   createFindlibDestdir = true;
   dontStrip = true;
diff --git a/pkgs/development/ocaml-modules/custom_printf/default.nix b/pkgs/development/ocaml-modules/custom_printf/default.nix
index 05a8ecfe616b..16c31fc3861a 100644
--- a/pkgs/development/ocaml-modules/custom_printf/default.nix
+++ b/pkgs/development/ocaml-modules/custom_printf/default.nix
@@ -1,4 +1,4 @@
-{stdenv, buildOcaml, fetchurl, type_conv, sexplib, pa_ounit}:
+{stdenv, buildOcaml, fetchurl, type_conv, sexplib_p4, pa_ounit}:
 
 buildOcaml rec {
   name = "custom_printf";
@@ -12,7 +12,7 @@ buildOcaml rec {
   };
 
   buildInputs = [ pa_ounit ];
-  propagatedBuildInputs = [ type_conv sexplib ];
+  propagatedBuildInputs = [ type_conv sexplib_p4 ];
 
   meta = with stdenv.lib; {
     homepage = https://github.com/janestreet/custom_printf;
diff --git a/pkgs/development/ocaml-modules/ezjsonm/default.nix b/pkgs/development/ocaml-modules/ezjsonm/default.nix
index fd8ce1c33898..4d63b0c3f95f 100644
--- a/pkgs/development/ocaml-modules/ezjsonm/default.nix
+++ b/pkgs/development/ocaml-modules/ezjsonm/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchzip, ocaml, findlib, jsonm, hex, sexplib, lwt }:
+{ stdenv, fetchzip, ocaml, findlib, jsonm, hex, sexplib_p4, lwt }:
 
 let version = "0.4.1"; in
 
@@ -11,7 +11,7 @@ stdenv.mkDerivation {
   };
 
   buildInputs = [ ocaml findlib ];
-  propagatedBuildInputs = [ jsonm hex sexplib lwt ];
+  propagatedBuildInputs = [ jsonm hex sexplib_p4 lwt ];
   createFindlibDestdir = true;
 
   configureFlags = "--enable-lwt";
diff --git a/pkgs/development/ocaml-modules/ipaddr/default.nix b/pkgs/development/ocaml-modules/ipaddr/default.nix
index 749b6a1d94e3..cdc273d6ecfd 100644
--- a/pkgs/development/ocaml-modules/ipaddr/default.nix
+++ b/pkgs/development/ocaml-modules/ipaddr/default.nix
@@ -1,4 +1,4 @@
-{stdenv, buildOcaml, fetchurl, sexplib}:
+{stdenv, buildOcaml, fetchurl, sexplib_p4}:
 
 buildOcaml rec {
   name = "ipaddr";
@@ -9,7 +9,7 @@ buildOcaml rec {
     sha256 = "7051013d8f58abff433187d70cd7ddd7a6b49a6fbe6cad1893f571f65b8ed3d0";
   };
 
-  propagatedBuildInputs = [ sexplib ];
+  propagatedBuildInputs = [ sexplib_p4 ];
 
   configurePhase = ''
    ocaml setup.ml -configure --prefix $out
diff --git a/pkgs/development/ocaml-modules/janestreet/async-extra.nix b/pkgs/development/ocaml-modules/janestreet/async-extra.nix
new file mode 100644
index 000000000000..4a283cc9910b
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/async-extra.nix
@@ -0,0 +1,17 @@
+{stdenv, buildOcamlJane, fetchurl, async_kernel, async_unix,
+ bin_prot, core, ppx_custom_printf, fieldslib, herelib,
+ pipebang, sexplib, async_rpc_kernel}:
+
+buildOcamlJane rec {
+  name = "async_extra";
+  hash = "1xdwab19fycr4cdm3dh9vmx42f8lvf9s4f9pjgdydxfrm7yzyrfh";
+  propagatedBuildInputs = [ async_kernel async_unix core bin_prot ppx_custom_printf
+                            fieldslib herelib pipebang sexplib async_rpc_kernel ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/janestreet/async_extra;
+    description = "Jane Street Capital's asynchronous execution library (extra)";
+    license = licenses.asl20;
+    maintainers = [ maintainers.maurer maintainers.ericbmerritt ];
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/async-kernel.nix b/pkgs/development/ocaml-modules/janestreet/async-kernel.nix
new file mode 100644
index 000000000000..4d7213a8603e
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/async-kernel.nix
@@ -0,0 +1,16 @@
+{stdenv, buildOcamlJane, fetchurl, core_kernel,
+ bin_prot, fieldslib,
+ sexplib, herelib, opam, js_build_tools, ocaml_oasis}:
+
+buildOcamlJane rec {
+  name = "async_kernel";
+  hash = "1n6ifbrq6q6hq8bxh6b9vhg11mv9r6jgp1b7vfw7mh5s2nrd4b60";
+  propagatedBuildInputs = [ core_kernel bin_prot fieldslib herelib sexplib ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/janestreet/async_kernel;
+    description = "Jane Street Capital's asynchronous execution library (core) ";
+    license = licenses.asl20;
+    maintainers = [ maintainers.maurer maintainers.ericbmerritt ];
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/async-rpc-kernel.nix b/pkgs/development/ocaml-modules/janestreet/async-rpc-kernel.nix
new file mode 100644
index 000000000000..1f5ff6b9646f
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/async-rpc-kernel.nix
@@ -0,0 +1,18 @@
+{stdenv, 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 rec {
+  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 stdenv.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/pkgs/development/ocaml-modules/janestreet/async-unix.nix b/pkgs/development/ocaml-modules/janestreet/async-unix.nix
new file mode 100644
index 000000000000..5621d2ec704b
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/async-unix.nix
@@ -0,0 +1,17 @@
+{stdenv, buildOcamlJane, fetchurl, async_kernel,
+ bin_prot, comparelib, core, fieldslib, herelib,
+ pipebang, sexplib}:
+
+buildOcamlJane rec {
+  name = "async_unix";
+  hash = "03ng7f0s22wwzspakiqj442vs1a7yf834109jcj9r3g1awwfhcy7";
+  propagatedBuildInputs = [ async_kernel core bin_prot comparelib
+                            fieldslib herelib pipebang sexplib ];
+
+  meta = with stdenv.lib; {
+   homepage = https://github.com/janestreet/async_unix;
+   description = "Jane Street Capital's asynchronous execution library (unix)";
+   license = licenses.asl20;
+   maintainers = [ maintainers.maurer maintainers.ericbmerritt ];
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/async.nix b/pkgs/development/ocaml-modules/janestreet/async.nix
new file mode 100644
index 000000000000..2e776e273be1
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/async.nix
@@ -0,0 +1,16 @@
+{stdenv, buildOcamlJane, fetchurl, async_kernel,
+ async_unix, async_extra}:
+
+buildOcamlJane rec {
+  name = "async";
+  version = "113.33.03";
+  hash = "0wyspkp8k833fh03r3h016nbfn6kjfhvb2bg42cly6agcak59fmr";
+  propagatedBuildInputs = [ async_kernel async_unix async_extra ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/janestreet/async;
+    description = "Jane Street Capital's asynchronous execution library";
+    license = licenses.asl20;
+    maintainers = [ maintainers.maurer maintainers.ericbmerritt ];
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/bin_prot.nix b/pkgs/development/ocaml-modules/janestreet/bin_prot.nix
new file mode 100644
index 000000000000..11e6189e6c1e
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/bin_prot.nix
@@ -0,0 +1,17 @@
+{stdenv, buildOcamlJane, type_conv}:
+
+buildOcamlJane rec {
+  name = "bin_prot";
+  version = "113.33.03";
+  minimumSupportedOcamlVersion = "4.02";
+  hash = "0jlarpfby755j0kikz6vnl1l6q0ga09b9zrlw6i84r22zchnqdsh";
+
+  propagatedBuildInputs = [ type_conv ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/janestreet/bin_prot;
+    description = "Binary protocol generator ";
+    license = licenses.asl20;
+    maintainers = [ maintainers.maurer maintainers.ericbmerritt ];
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/buildOcamlJane.nix b/pkgs/development/ocaml-modules/janestreet/buildOcamlJane.nix
new file mode 100644
index 000000000000..61b2038bfd29
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/buildOcamlJane.nix
@@ -0,0 +1,35 @@
+{ buildOcaml, opam, 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 opam ] ++ buildInputs;
+
+  dontAddPrefix = true;
+
+  configurePhase = "./configure --prefix $out";
+
+  buildPhase = "OCAML_TOPLEVEL_PATH=`ocamlfind query findlib`/.. make";
+
+  installPhase = ''
+    opam-installer -i --prefix $prefix --libdir `ocamlfind printconf destdir` --stubsdir `ocamlfind printconf destdir`/${name} ${name}.install
+    if [ -d $out/lib/${name} ]
+      then if [ "$(ls -A $out/lib/${name})" ]
+        then mv $out/lib/${name}/* `ocamlfind printconf destdir`/${name}
+      fi
+      rmdir $out/lib/${name}
+    fi
+  '';
+
+})
diff --git a/pkgs/development/ocaml-modules/janestreet/core-extended.nix b/pkgs/development/ocaml-modules/janestreet/core-extended.nix
new file mode 100644
index 000000000000..df7f6903cd24
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/core-extended.nix
@@ -0,0 +1,22 @@
+{stdenv, buildOcamlJane, fetchurl,
+ core,
+ bin_prot, fieldslib, sexplib, typerep, variantslib,
+ ppx_assert, ppx_bench, ppx_driver, ppx_expect, ppx_inline_test, ppx_jane,
+ re2, textutils,
+ ocaml_oasis, opam, js_build_tools}:
+
+buildOcamlJane rec {
+  name = "core_extended";
+  hash = "1j4ipcn741j8w3h4gpv5sygjzg6b5g6gc2jcrr4n0jyn5dq8b0p5";
+  propagatedBuildInputs =
+    [ core bin_prot fieldslib sexplib typerep variantslib
+      ppx_assert ppx_bench ppx_driver ppx_expect ppx_inline_test ppx_jane
+      re2 textutils ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/janestreet/core_extended;
+    description = "Jane Street Capital's standard library overlay";
+    license = licenses.asl20;
+    maintainers = [ maintainers.maurer maintainers.ericbmerritt ];
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/core.nix b/pkgs/development/ocaml-modules/janestreet/core.nix
new file mode 100644
index 000000000000..05ea4d5d566b
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/core.nix
@@ -0,0 +1,20 @@
+{stdenv, buildOcamlJane, fetchurl,
+ core_kernel,
+ bin_prot, fieldslib, sexplib, typerep, variantslib,
+ ppx_assert, ppx_bench, ppx_driver, ppx_expect, ppx_inline_test, ppx_jane,
+ ocaml_oasis, opam, js_build_tools}:
+
+buildOcamlJane rec {
+  name = "core";
+  hash = "0nz6d5glgymbpchvcpw77yis9jgi2bll32knzy9vx99wn83zdrmd";
+  propagatedBuildInputs =
+    [ core_kernel bin_prot fieldslib sexplib typerep variantslib
+      ppx_assert ppx_bench ppx_driver ppx_expect ppx_inline_test ppx_jane ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/janestreet/core;
+    description = "Jane Street Capital's standard library overlay";
+    license = licenses.asl20;
+    maintainers = [ maintainers.maurer maintainers.ericbmerritt ];
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/core_kernel.nix b/pkgs/development/ocaml-modules/janestreet/core_kernel.nix
new file mode 100644
index 000000000000..93fcdde5bb38
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/core_kernel.nix
@@ -0,0 +1,19 @@
+{stdenv, buildOcamlJane, fetchurl,
+ bin_prot, fieldslib, sexplib, typerep, variantslib,
+ ppx_assert, ppx_bench, ppx_driver, ppx_expect, ppx_inline_test, ppx_jane,
+ ocaml_oasis, opam, js_build_tools}:
+
+buildOcamlJane rec {
+  name = "core_kernel";
+  hash = "13gamj056nlib04l7yh80lqpdx0pnswzlb52fkqa01awwp5nf3z6";
+  propagatedBuildInputs =
+    [ bin_prot fieldslib sexplib typerep variantslib
+      ppx_assert ppx_bench ppx_driver ppx_expect ppx_inline_test ppx_jane ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/janestreet/core_kernel;
+    description = "Jane Street Capital's standard library overlay (kernel)";
+    license = licenses.asl20;
+    maintainers = [ maintainers.maurer maintainers.ericbmerritt ];
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/fieldslib.nix b/pkgs/development/ocaml-modules/janestreet/fieldslib.nix
new file mode 100644
index 000000000000..8823a0c8054d
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/fieldslib.nix
@@ -0,0 +1,19 @@
+{ stdenv, type_conv, buildOcamlJane }:
+
+buildOcamlJane rec {
+  name = "fieldslib";
+  version = "113.33.03";
+
+  minimumSupportedOcamlVersion = "4.02";
+
+  hash = "0mkbix32f8sq32q81hb10z2q31bw5f431jxv0jafbdrif0vr6xqd";
+
+  propagatedBuildInputs = [ type_conv ];
+
+  meta = with stdenv.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/pkgs/development/ocaml-modules/janestreet/js-build-tools-darwin.patch b/pkgs/development/ocaml-modules/janestreet/js-build-tools-darwin.patch
new file mode 100644
index 000000000000..8878b4be68b8
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/js-build-tools-darwin.patch
@@ -0,0 +1,11 @@
+--- 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/pkgs/development/ocaml-modules/janestreet/js-build-tools.nix b/pkgs/development/ocaml-modules/janestreet/js-build-tools.nix
new file mode 100644
index 000000000000..bf697eda8007
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/js-build-tools.nix
@@ -0,0 +1,29 @@
+{stdenv, buildOcaml, fetchurl, ocaml_oasis, opam}:
+
+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 opam ];
+
+  dontAddPrefix = true;
+  configurePhase = "./configure --prefix $prefix";
+  installPhase = "opam-installer -i --prefix $prefix --libdir `ocamlfind printconf destdir` ${name}.install";
+
+  patches = [ ./js-build-tools-darwin.patch ];
+
+  meta = with stdenv.lib; {
+    description = "Jane Street Build Tools";
+    maintainers = [ maintainers.maurer ];
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/ppx-assert.nix b/pkgs/development/ocaml-modules/janestreet/ppx-assert.nix
new file mode 100644
index 000000000000..b61874d3a7ea
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/ppx-assert.nix
@@ -0,0 +1,16 @@
+{stdenv, buildOcamlJane,
+ ppx_compare, ppx_core, ppx_driver, ppx_here, ppx_sexp_conv, ppx_tools, ppx_type_conv, sexplib}:
+
+buildOcamlJane rec {
+  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 stdenv.lib; {
+    description = "Assert-like extension nodes that raise useful errors on failure";
+    maintainers = [ maintainers.maurer ];
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/ppx-bench.nix b/pkgs/development/ocaml-modules/janestreet/ppx-bench.nix
new file mode 100644
index 000000000000..56a124c5b691
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/ppx-bench.nix
@@ -0,0 +1,18 @@
+{stdenv, buildOcamlJane,
+ ppx_core, ppx_driver, ppx_inline_test, ppx_tools}:
+
+buildOcamlJane rec {
+  name = "ppx_bench";
+  minimumSupportedOcamlVersion = "4.02";
+  hash = "1l5jlwy1d1fqz70wa2fkf7izngp6nx3g4s9bmnd6ca4dx1x5bksk";
+
+  hasSharedObjects = true;
+
+  propagatedBuildInputs = [ ppx_core ppx_driver ppx_inline_test ppx_tools ];
+
+  meta = with stdenv.lib; {
+    description = "Syntax extension for writing in-line benchmarks in ocaml code";
+    maintainers = [ maintainers.maurer ];
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/ppx-bin-prot.nix b/pkgs/development/ocaml-modules/janestreet/ppx-bin-prot.nix
new file mode 100644
index 000000000000..9dffbed69600
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/ppx-bin-prot.nix
@@ -0,0 +1,14 @@
+{stdenv, buildOcamlJane,
+ ppx_core, ppx_tools, ppx_type_conv, bin_prot}:
+
+buildOcamlJane rec {
+  name = "ppx_bin_prot";
+  hash = "0kwmrrrybdkmphqczsr3lg3imsxcjb8iy41syvn44s3kcjfyyzbz";
+  propagatedBuildInputs = [ ppx_core ppx_tools ppx_type_conv bin_prot ];
+
+  meta = with stdenv.lib; {
+    description = "Generation of bin_prot readers and writers from types";
+    maintainers = [ maintainers.maurer ];
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/ppx-compare.nix b/pkgs/development/ocaml-modules/janestreet/ppx-compare.nix
new file mode 100644
index 000000000000..d70fe6ddd550
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/ppx-compare.nix
@@ -0,0 +1,15 @@
+{stdenv, buildOcamlJane,
+ ppx_core, ppx_driver, ppx_tools, ppx_type_conv}:
+
+buildOcamlJane rec {
+  name = "ppx_compare";
+  hash = "05cnwxfxm8201lpfmcqkcqfy6plh5c2151jbj4qsnxhlvvjli459";
+  propagatedBuildInputs =
+    [ppx_core ppx_driver ppx_tools ppx_type_conv ];
+
+  meta = with stdenv.lib; {
+    description = "Generation of fast comparison functions from type expressions and definitions";
+    maintainers = [ maintainers.maurer ];
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/ppx-core.nix b/pkgs/development/ocaml-modules/janestreet/ppx-core.nix
new file mode 100644
index 000000000000..4f5bb87b7675
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/ppx-core.nix
@@ -0,0 +1,14 @@
+{stdenv, buildOcamlJane, ppx_tools}:
+
+buildOcamlJane rec {
+  name = "ppx_core";
+  hash = "0df7vyai488lfkyh8szw2hvn22jsyrkfvq1b91j1s0g0y27nnfax";
+  propagatedBuildInputs =
+    [ ppx_tools ];
+
+  meta = with stdenv.lib; {
+    description = "PPX standard library";
+    maintainers = [ maintainers.maurer ];
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/ppx-custom-printf.nix b/pkgs/development/ocaml-modules/janestreet/ppx-custom-printf.nix
new file mode 100644
index 000000000000..3fe78e3e7e2e
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/ppx-custom-printf.nix
@@ -0,0 +1,15 @@
+{stdenv, buildOcamlJane,
+ ppx_core, ppx_driver, ppx_sexp_conv, ppx_tools}:
+
+buildOcamlJane rec {
+  name = "ppx_custom_printf";
+  hash = "06y85m6ky376byja4w7gdwd339di5ag0xrf0czkylzjsnylhdr85";
+
+  propagatedBuildInputs = [ ppx_core ppx_driver ppx_sexp_conv ppx_tools ];
+
+  meta = with stdenv.lib; {
+    description = "Extensions to printf-style format-strings for user-defined string conversion";
+    maintainers = [ maintainers.maurer ];
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/ppx-driver.nix b/pkgs/development/ocaml-modules/janestreet/ppx-driver.nix
new file mode 100644
index 000000000000..7844756c7bfb
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/ppx-driver.nix
@@ -0,0 +1,15 @@
+{stdenv, buildOcamlJane,
+ ppx_core, ppx_optcomp}:
+
+buildOcamlJane rec {
+  name = "ppx_driver";
+  hash = "19cpfdn1n36vl5l9d6h7c61ffn0wmiipprn5by0354i5aywj8gpn";
+  propagatedBuildInputs =
+    [ ppx_core ppx_optcomp ];
+
+  meta = with stdenv.lib; {
+    description = "A driver is an executable created from a set of OCaml AST transformers linked together with a command line frontend";
+    maintainers = [ maintainers.maurer ];
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/ppx-enumerate.nix b/pkgs/development/ocaml-modules/janestreet/ppx-enumerate.nix
new file mode 100644
index 000000000000..8dbf34ed2329
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/ppx-enumerate.nix
@@ -0,0 +1,14 @@
+{stdenv, buildOcamlJane,
+ ppx_core, ppx_tools, ppx_type_conv}:
+
+buildOcamlJane rec {
+  name = "ppx_enumerate";
+  hash = "0m11921q2pjzkwckf21fynd2qfy83n9jjsgks23yagdai8a7ym16";
+  propagatedBuildInputs = [ ppx_core ppx_tools ppx_type_conv ];
+
+  meta = with stdenv.lib; {
+    description = "Generate a list containing all values of a finite type";
+    maintainers = [ maintainers.maurer ];
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/ppx-expect.nix b/pkgs/development/ocaml-modules/janestreet/ppx-expect.nix
new file mode 100644
index 000000000000..7e688a1dc1c8
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/ppx-expect.nix
@@ -0,0 +1,19 @@
+{stdenv, 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 rec {
+  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 stdenv.lib; {
+    description = "Cram-like framework for OCaml";
+    maintainers = [ maintainers.maurer ];
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/ppx-fail.nix b/pkgs/development/ocaml-modules/janestreet/ppx-fail.nix
new file mode 100644
index 000000000000..187d5db19995
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/ppx-fail.nix
@@ -0,0 +1,14 @@
+{stdenv, buildOcamlJane,
+ ppx_core, ppx_driver, ppx_here, ppx_tools}:
+
+buildOcamlJane rec {
+  name = "ppx_fail";
+  hash = "1ms5axpc0zg469zj4799nz3wwxi6rmmyvqj52dy03crmpj71s18l";
+  propagatedBuildInputs = [ ppx_core ppx_driver ppx_here ppx_tools ];
+
+  meta = with stdenv.lib; {
+    description = "Syntax extension that makes failwith include a position";
+    maintainers = [ maintainers.maurer ];
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/ppx-fields-conv.nix b/pkgs/development/ocaml-modules/janestreet/ppx-fields-conv.nix
new file mode 100644
index 000000000000..a05cf149b268
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/ppx-fields-conv.nix
@@ -0,0 +1,14 @@
+{stdenv, buildOcamlJane,
+ ppx_core, ppx_tools, ppx_type_conv}:
+
+buildOcamlJane rec {
+  name = "ppx_fields_conv";
+  hash = "11w9wfjgkv7yxv3rwlwi6m193zan6rhmi45q7n3ddi2s8ls3gra7";
+  propagatedBuildInputs = [ ppx_core ppx_tools ppx_type_conv ];
+
+  meta = with stdenv.lib; {
+    description = "Generation of accessor and iteration functions for ocaml records";
+    maintainers = [ maintainers.maurer ];
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/ppx-here.nix b/pkgs/development/ocaml-modules/janestreet/ppx-here.nix
new file mode 100644
index 000000000000..3aa157a68c5b
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/ppx-here.nix
@@ -0,0 +1,14 @@
+{stdenv, buildOcamlJane,
+ ppx_core, ppx_driver}:
+
+buildOcamlJane rec {
+  name = "ppx_here";
+  hash = "1mzdgn8k171zkwmbizf1a48l525ny0w3363c7gknpnifcinxniiw";
+  propagatedBuildInputs = [ ppx_core ppx_driver ];
+
+  meta = with stdenv.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/pkgs/development/ocaml-modules/janestreet/ppx-inline-test.nix b/pkgs/development/ocaml-modules/janestreet/ppx-inline-test.nix
new file mode 100644
index 000000000000..cd16d7c32864
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/ppx-inline-test.nix
@@ -0,0 +1,14 @@
+{stdenv, buildOcamlJane,
+ ppx_core, ppx_driver, ppx_tools}:
+
+buildOcamlJane rec {
+  name = "ppx_inline_test";
+  hash = "0ygapa54i0wwcj3jcqwiimrc6z0b7aafgjhbk37h6vvclnm5n7f6";
+  propagatedBuildInputs = [ ppx_core ppx_driver ppx_tools ];
+
+  meta = with stdenv.lib; {
+    description = "Syntax extension for writing in-line tests in ocaml code";
+    maintainers = [ maintainers.maurer ];
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/ppx-jane.nix b/pkgs/development/ocaml-modules/janestreet/ppx-jane.nix
new file mode 100644
index 000000000000..86394f228e9d
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/ppx-jane.nix
@@ -0,0 +1,22 @@
+{stdenv, 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 rec {
+  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 stdenv.lib; {
+    description = "A ppx_driver including all standard ppx rewriters";
+    maintainers = [ maintainers.maurer ];
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/ppx-let.nix b/pkgs/development/ocaml-modules/janestreet/ppx-let.nix
new file mode 100644
index 000000000000..3498affeb090
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/ppx-let.nix
@@ -0,0 +1,14 @@
+{stdenv, buildOcamlJane,
+ ppx_core, ppx_driver}:
+
+buildOcamlJane rec {
+  name = "ppx_let";
+  hash = "0whnfq4rgkq4apfqnvc100wlk25pmqdyvy6s21dsn3fcm9hff467";
+  propagatedBuildInputs = [ ppx_core ppx_driver ];
+
+  meta = with stdenv.lib; {
+    description = "A ppx rewriter for monadic and applicative let bindings and match statements";
+    maintainers = [ maintainers.maurer ];
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/ppx-optcomp.nix b/pkgs/development/ocaml-modules/janestreet/ppx-optcomp.nix
new file mode 100644
index 000000000000..5dcfc97bfa37
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/ppx-optcomp.nix
@@ -0,0 +1,15 @@
+{stdenv, buildOcamlJane,
+ ppx_core, ppx_tools}:
+
+buildOcamlJane rec {
+  name = "ppx_optcomp";
+  hash = "09m2x2a5ics4bz1j29n5slhh1rlyhcwdfmf44v1jfxcby3f0riwd";
+  propagatedBuildInputs =
+    [ ppx_core ppx_tools ];
+
+  meta = with stdenv.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/pkgs/development/ocaml-modules/janestreet/ppx-pipebang.nix b/pkgs/development/ocaml-modules/janestreet/ppx-pipebang.nix
new file mode 100644
index 000000000000..f3f4bcdead59
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/ppx-pipebang.nix
@@ -0,0 +1,14 @@
+{stdenv, buildOcamlJane,
+ ppx_core, ppx_driver, ppx_tools}:
+
+buildOcamlJane rec {
+  name = "ppx_pipebang";
+  hash = "0k25bhj9ziiw89xvs4svz7cgazbbmprba9wbic2llffg55fp7acc";
+  propagatedBuildInputs = [ ppx_core ppx_driver ppx_tools ];
+
+  meta = with stdenv.lib; {
+    description = "A ppx rewriter that inlines reverse application operators |> and |!";
+    maintainers = [ maintainers.maurer ];
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/ppx-sexp-conv.nix b/pkgs/development/ocaml-modules/janestreet/ppx-sexp-conv.nix
new file mode 100644
index 000000000000..bf4a7b214dec
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/ppx-sexp-conv.nix
@@ -0,0 +1,14 @@
+{stdenv, buildOcamlJane,
+ ppx_core, ppx_tools, ppx_type_conv, sexplib}:
+
+buildOcamlJane rec {
+  name = "ppx_sexp_conv";
+  hash = "1kgbmlc11w5jhbhmy5n0f734l44zwyry48342dm5qydi9sfzcgq2";
+  propagatedBuildInputs = [ ppx_core ppx_tools ppx_type_conv sexplib];
+
+  meta = with stdenv.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/pkgs/development/ocaml-modules/janestreet/ppx-sexp-message.nix b/pkgs/development/ocaml-modules/janestreet/ppx-sexp-message.nix
new file mode 100644
index 000000000000..e83aaa2c2723
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/ppx-sexp-message.nix
@@ -0,0 +1,14 @@
+{stdenv, buildOcamlJane,
+ ppx_core, ppx_driver, ppx_here, ppx_sexp_conv, ppx_tools}:
+
+buildOcamlJane rec {
+  name = "ppx_sexp_message";
+  hash = "0inbff25qii868p141jb1y8n3vjfyz66jpnsl9nma6nkkyjkp05j";
+  propagatedBuildInputs = [ ppx_core ppx_driver ppx_here ppx_sexp_conv ppx_tools ];
+
+  meta = with stdenv.lib; {
+    description = "Easy construction of S-Expressions";
+    maintainers = [ maintainers.maurer ];
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/ppx-sexp-value.nix b/pkgs/development/ocaml-modules/janestreet/ppx-sexp-value.nix
new file mode 100644
index 000000000000..a1a1080d73d7
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/ppx-sexp-value.nix
@@ -0,0 +1,14 @@
+{stdenv, buildOcamlJane,
+ ppx_core, ppx_driver, ppx_here, ppx_sexp_conv, ppx_tools}:
+
+buildOcamlJane rec {
+  name = "ppx_sexp_value";
+  hash = "04602ppqfwx33ghjywam00hlqqzsz4d99r60k9q0v1mynk9pjhj0";
+  propagatedBuildInputs = [ ppx_core ppx_driver ppx_here ppx_sexp_conv ppx_tools ];
+
+  meta = with stdenv.lib; {
+    description = "A ppx rewriter that simplifies building S-Expression from OCaml Values";
+    maintainers = [ maintainers.maurer ];
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/ppx-type-conv.nix b/pkgs/development/ocaml-modules/janestreet/ppx-type-conv.nix
new file mode 100644
index 000000000000..fc6d9ca03459
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/ppx-type-conv.nix
@@ -0,0 +1,15 @@
+{stdenv, buildOcamlJane,
+ ppx_core, ppx_deriving, ppx_driver, ppx_tools}:
+
+buildOcamlJane rec {
+  name = "ppx_type_conv";
+  hash = "0gv0mqwn97dwrfm6rj442565y8dz7kiq8s8vadnhywrl7j4znqyq";
+  propagatedBuildInputs =
+    [ ppx_core ppx_deriving ppx_driver ppx_tools ];
+
+  meta = with stdenv.lib; {
+    description = "The type_conv library factors out functionality needed by different preprocessors that generate code from type specifications";
+    maintainers = [ maintainers.maurer ];
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/ppx-typerep-conv.nix b/pkgs/development/ocaml-modules/janestreet/ppx-typerep-conv.nix
new file mode 100644
index 000000000000..e6d23e0dbdd0
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/ppx-typerep-conv.nix
@@ -0,0 +1,14 @@
+{stdenv, buildOcamlJane,
+ ppx_core, ppx_tools, ppx_type_conv, typerep}:
+
+buildOcamlJane rec {
+  name = "ppx_typerep_conv";
+  hash = "0dldlx73r07j6w0i7h4hxly0v678naa79na5rafsk2974gs5ih9g";
+  propagatedBuildInputs = [ ppx_core ppx_tools ppx_type_conv typerep ];
+
+  meta = with stdenv.lib; {
+    description = "Automatic generation of runtime types from type definitions";
+    maintainers = [ maintainers.maurer ];
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/ppx-variants-conv.nix b/pkgs/development/ocaml-modules/janestreet/ppx-variants-conv.nix
new file mode 100644
index 000000000000..e5efb786a943
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/ppx-variants-conv.nix
@@ -0,0 +1,14 @@
+{stdenv, buildOcamlJane,
+ ppx_core, ppx_tools, ppx_type_conv, sexplib}:
+
+buildOcamlJane rec {
+  name = "ppx_variants_conv";
+  hash = "0kgal8b9yh7wrd75hllb9fyl6zbksfnr9k7pykpzdm3js98dirhn";
+  propagatedBuildInputs = [ ppx_core ppx_tools ppx_type_conv sexplib];
+
+  meta = with stdenv.lib; {
+    description = "Generation of accessor and iteration functions for ocaml variant types";
+    maintainers = [ maintainers.maurer ];
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/re2.nix b/pkgs/development/ocaml-modules/janestreet/re2.nix
new file mode 100644
index 000000000000..6604a8d012c6
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/re2.nix
@@ -0,0 +1,20 @@
+{stdenv, buildOcamlJane,
+ bin_prot, core_kernel, fieldslib, sexplib, typerep, variantslib,
+ ppx_assert, ppx_bench, ppx_driver, ppx_expect, ppx_inline_test, ppx_jane,
+ rsync}:
+
+buildOcamlJane rec {
+  name = "re2";
+  hash = "0fw5jscb1i17aw8v4l965zw20kyimhfnmf4w83wqaaxkqy3l6fqw";
+  buildInputs = [ rsync ];
+  propagatedBuildInputs =
+    [ bin_prot core_kernel fieldslib sexplib typerep variantslib
+      ppx_assert ppx_bench ppx_driver ppx_expect ppx_inline_test ppx_jane ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/janestreet/re2;
+    description = "OCaml bindings for RE2";
+    maintainers = [ maintainers.maurer ];
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/sexplib.nix b/pkgs/development/ocaml-modules/janestreet/sexplib.nix
new file mode 100644
index 000000000000..4a785d199c8c
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/sexplib.nix
@@ -0,0 +1,18 @@
+{stdenv, buildOcamlJane, type_conv}:
+
+buildOcamlJane rec {
+  minimumSupportedOcamlVersion = "4.02";
+  name = "sexplib";
+  version = "113.33.03";
+
+  hash = "1klar4qw4s7bj47ig7kxz2m4j1q3c60pfppis4vxrxv15r0kfh22";
+
+  propagatedBuildInputs = [ type_conv ];
+
+  meta = with stdenv.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/pkgs/development/ocaml-modules/janestreet/textutils.nix b/pkgs/development/ocaml-modules/janestreet/textutils.nix
new file mode 100644
index 000000000000..459743f055ab
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/textutils.nix
@@ -0,0 +1,18 @@
+{stdenv, buildOcamlJane,
+ bin_prot, core, fieldslib, sexplib, typerep, variantslib,
+ ppx_assert, ppx_bench, ppx_driver, ppx_expect, ppx_inline_test, ppx_jane}:
+
+buildOcamlJane rec {
+  name = "textutils";
+  hash = "0mkjm9b3k7db7zzrq4403v8qbkgqgkjlz120vcbqh6z7d7ql65vb";
+  propagatedBuildInputs =
+    [ bin_prot core fieldslib sexplib typerep variantslib
+      ppx_assert ppx_bench ppx_driver ppx_expect ppx_inline_test ppx_jane ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/janestreet/textutils;
+    description = "Text output utilities";
+    maintainers = [ maintainers.maurer ];
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/development/ocaml-modules/janestreet/typerep.nix b/pkgs/development/ocaml-modules/janestreet/typerep.nix
new file mode 100644
index 000000000000..81e6c4be9cbc
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/typerep.nix
@@ -0,0 +1,20 @@
+{stdenv, buildOcamlJane, type_conv}:
+
+buildOcamlJane rec {
+  name = "typerep";
+  version = "113.33.03";
+
+  minimumSupportedOcamlVersion = "4.00";
+
+  hash = "1ss34nq20vfgx8hwi5sswpmn3my9lvrpdy5dkng746xchwi33ar7";
+
+  propagatedBuildInputs = [ type_conv ];
+
+  meta = with stdenv.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/pkgs/development/ocaml-modules/janestreet/variantslib.nix b/pkgs/development/ocaml-modules/janestreet/variantslib.nix
new file mode 100644
index 000000000000..d9acadbb6158
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/variantslib.nix
@@ -0,0 +1,19 @@
+{stdenv, buildOcamlJane, type_conv}:
+
+buildOcamlJane rec {
+  name = "variantslib";
+  version = "113.33.03";
+
+  minimumSupportedOcamlVersion = "4.00";
+
+  hash = "1hv0f75msrryxsl6wfnbmhc0n8kf7qxs5f82ry3b8ldb44s3wigp";
+
+  propagatedBuildInputs = [ type_conv ];
+
+  meta = with stdenv.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/pkgs/development/ocaml-modules/pa_test/default.nix b/pkgs/development/ocaml-modules/pa_test/default.nix
index faf17e20dc1e..5acf931b2eac 100644
--- a/pkgs/development/ocaml-modules/pa_test/default.nix
+++ b/pkgs/development/ocaml-modules/pa_test/default.nix
@@ -1,4 +1,4 @@
-{stdenv, buildOcaml, fetchurl, type_conv, pa_ounit, sexplib, herelib}:
+{stdenv, buildOcaml, fetchurl, type_conv, pa_ounit, sexplib_p4, herelib}:
 
 buildOcaml rec {
   name = "pa_test";
@@ -12,7 +12,7 @@ buildOcaml rec {
   };
 
   buildInputs = [ pa_ounit ];
-  propagatedBuildInputs = [ type_conv sexplib herelib ];
+  propagatedBuildInputs = [ type_conv sexplib_p4 herelib ];
 
   meta = with stdenv.lib; {
     homepage = https://github.com/janestreet/pa_test;
diff --git a/pkgs/development/ocaml-modules/ppx_deriving/default.nix b/pkgs/development/ocaml-modules/ppx_deriving/default.nix
new file mode 100644
index 000000000000..4b4056a69d72
--- /dev/null
+++ b/pkgs/development/ocaml-modules/ppx_deriving/default.nix
@@ -0,0 +1,28 @@
+{stdenv, buildOcaml, fetchurl,
+ cppo, ppx_tools, result, ounit}:
+
+buildOcaml rec {
+  name = "ppx_deriving";
+  version = "v3.3";
+
+  minimumSupportedOcamlVersion = "4.02";
+
+  src = fetchurl {
+    url = "https://github.com/whitequark/${name}/archive/${version}.tar.gz";
+    sha256 = "1j20c6r2v7h05a4v9m8z5m1yqgwif41yrp63mik14pf3dkrj8x3f";
+  };
+
+  hasSharedObjects = true;
+
+  buildInputs = [ cppo ounit ];
+  propagatedBuildInputs =
+    [ ppx_tools result ];
+
+  installPhase = "OCAMLPATH=$OCAMLPATH:`ocamlfind printconf destdir` make install";
+
+  meta = with stdenv.lib; {
+    description = "deriving is a library simplifying type-driven code generation on OCaml >=4.02.";
+    maintainers = [ maintainers.maurer ];
+    license = licenses.mit;
+  };
+}
diff --git a/pkgs/development/ocaml-modules/re2/default.nix b/pkgs/development/ocaml-modules/re2/default.nix
index e89e28fe1e55..9b26c4040959 100644
--- a/pkgs/development/ocaml-modules/re2/default.nix
+++ b/pkgs/development/ocaml-modules/re2/default.nix
@@ -1,5 +1,5 @@
-{stdenv, buildOcaml, fetchurl, ocaml, core, pa_ounit, pa_test,
- bin_prot, comparelib, sexplib, rsync}:
+{stdenv, buildOcaml, fetchurl, ocaml, core_p4, pa_ounit, pa_test,
+ bin_prot_p4, comparelib, sexplib_p4, rsync}:
 
 buildOcaml rec {
   name = "re2";
@@ -16,7 +16,7 @@ buildOcaml rec {
             else null;
 
   buildInputs = [ pa_ounit pa_test rsync ];
-  propagatedBuildInputs = [ core bin_prot comparelib sexplib ];
+  propagatedBuildInputs = [ core_p4 bin_prot_p4 comparelib sexplib_p4 ];
 
   hasSharedObjects = true;
 
diff --git a/pkgs/development/ocaml-modules/textutils/default.nix b/pkgs/development/ocaml-modules/textutils/default.nix
index 377b94eff8b8..6f35b9702280 100644
--- a/pkgs/development/ocaml-modules/textutils/default.nix
+++ b/pkgs/development/ocaml-modules/textutils/default.nix
@@ -1,4 +1,4 @@
-{stdenv, buildOcaml, fetchurl, core, pa_ounit, pa_test, sexplib}:
+{stdenv, buildOcaml, fetchurl, core_p4, pa_ounit, pa_test, sexplib_p4}:
 
 buildOcaml rec {
   name = "textutils";
@@ -12,7 +12,7 @@ buildOcaml rec {
   };
 
   buildInputs = [ pa_test ];
-  propagatedBuildInputs = [ core pa_ounit sexplib ];
+  propagatedBuildInputs = [ core_p4 pa_ounit sexplib_p4 ];
 
   meta = with stdenv.lib; {
     homepage = https://github.com/janestreet/textutils;
diff --git a/pkgs/development/ocaml-modules/uri/default.nix b/pkgs/development/ocaml-modules/uri/default.nix
index dca989c88efd..a6335274f737 100644
--- a/pkgs/development/ocaml-modules/uri/default.nix
+++ b/pkgs/development/ocaml-modules/uri/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchzip, ocaml, findlib, re, sexplib, stringext, ounit }:
+{ stdenv, fetchzip, ocaml, findlib, re, sexplib_p4, stringext, ounit }:
 
 assert stdenv.lib.versionAtLeast (stdenv.lib.getVersion ocaml) "4";
 
@@ -13,7 +13,7 @@ stdenv.mkDerivation {
   };
 
   buildInputs = [ ocaml findlib ounit ];
-  propagatedBuildInputs = [ re sexplib stringext ];
+  propagatedBuildInputs = [ re sexplib_p4 stringext ];
 
   configurePhase = "ocaml setup.ml -configure --prefix $out --enable-tests";
   buildPhase = ''