jenkins: 2.479.3 -> 2.492.1
[NixPkgs.git] / pkgs / development / ocaml-modules / janestreet / 0.17.nix
blob8e43fde337bf6afb265c9a74410a036e60a15629
2   self,
3   bash,
4   fetchpatch,
5   fzf,
6   lib,
7   openssl,
8   zstd,
9 }:
11 with self;
15   abstract_algebra = janePackage {
16     pname = "abstract_algebra";
17     hash = "sha256-W2rSSbppNkulCgGeTiovzP5zInPWIVfflDxWkGpEOFA=";
18     meta.description = "A small library describing abstract algebra concepts";
19     propagatedBuildInputs = [
20       base
21       ppx_jane
22     ];
23   };
25   accessor = janePackage {
26     pname = "accessor";
27     hash = "sha256-1inoFwDDhnfhW+W3aAkcFNUkf5Umy8BDGDEbMty+Fts=";
28     meta.description = "A library that makes it nicer to work with nested functional data structures";
29     propagatedBuildInputs = [ higher_kinded ];
30   };
32   accessor_async = janePackage {
33     pname = "accessor_async";
34     hash = "sha256-EYyxZur+yshYaX1EJbWc/bCaAa9PDKiuK87fIeqhspo=";
35     meta.description = "Accessors for Async types, for use with the Accessor library";
36     propagatedBuildInputs = [
37       accessor_core
38       async_kernel
39     ];
40   };
42   accessor_base = janePackage {
43     pname = "accessor_base";
44     hash = "sha256-6LJ8dKPAuaxWinArkPl4OE0eYPqvM7+Ao6jff8jhjXc=";
45     meta.description = "Accessors for Base types, for use with the Accessor library";
46     propagatedBuildInputs = [ ppx_accessor ];
47   };
49   accessor_core = janePackage {
50     pname = "accessor_core";
51     hash = "sha256-ku83ZfLtVI8FvQhrKcnJmhmoNlYcVMKx1tor5N8Nq7M=";
52     meta.description = "Accessors for Core types, for use with the Accessor library";
53     propagatedBuildInputs = [
54       accessor_base
55       core_kernel
56     ];
57   };
59   async = janePackage {
60     pname = "async";
61     hash = "sha256-CwRPH5tFZHJqptdmNwdZvKvSJ1Qr21gV1jaxsa/vFBU=";
62     meta.description = "Monadic concurrency library";
63     propagatedBuildInputs = [
64       async_rpc_kernel
65       async_log
66       async_unix
67       textutils
68     ];
69     doCheck = false; # we don't have netkit_sockets
70   };
72   async_durable = janePackage {
73     pname = "async_durable";
74     hash = "sha256-CAU54j3K47p4hQqAtHJYuAQ0IvZPMQZKFp5J7G+xtjM=";
75     meta.description = "Durable connections for use with async";
76     propagatedBuildInputs = [
77       async_kernel
78       async_rpc_kernel
79       core
80       core_kernel
81       ppx_jane
82     ];
83   };
85   async_extra = janePackage {
86     pname = "async_extra";
87     hash = "sha256-rZUROyYrvtgnI+leTMXuGcw71MfVhqdkfp9EIhAFUnM=";
88     meta.description = "Monadic concurrency library";
89     propagatedBuildInputs = [ async_kernel ];
90   };
92   async_find = janePackage {
93     pname = "async_find";
94     hash = "sha256-byvLJvhq7606gKP1kjLRYe3eonkAG3Vz6wQcsjJOiOE=";
95     meta.description = "Directory traversal with Async";
96     propagatedBuildInputs = [ async ];
97   };
99   async_inotify = janePackage {
100     pname = "async_inotify";
101     hash = "sha256-608G8OKQxqrQdYc1Cfrd8g8WLX6QwSeMUz8ORuSbmA8=";
102     meta.description = "Async wrapper for inotify";
103     propagatedBuildInputs = [
104       async_find
105       inotify
106     ];
107   };
109   async_interactive = janePackage {
110     pname = "async_interactive";
111     hash = "sha256-hC7mLDLtvIEMKLMeDOC5ADiAGJlJqYF35RDI+porsKA=";
112     meta.description = "Utilities for building simple command-line based user interfaces";
113     propagatedBuildInputs = [ async ];
114   };
116   async_js = janePackage {
117     pname = "async_js";
118     hash = "sha256-4t7dJ04lTQ0b6clf8AvtyC8ip43vIcEBXgHJLiRbuGM=";
119     meta.description = "A small library that provide Async support for JavaScript platforms";
120     buildInputs = [ js_of_ocaml-ppx ];
121     propagatedBuildInputs = [
122       async_rpc_kernel
123       js_of_ocaml
124       uri-sexp
125     ];
126   };
128   async_kernel = janePackage {
129     pname = "async_kernel";
130     hash = "sha256-fEbo7EeOJHnBqTYvC/o2a2x69XPnANbe15v/yv29l/4=";
131     meta.description = "Monadic concurrency library";
132     propagatedBuildInputs = [ core_kernel ];
133   };
135   async_log = janePackage {
136     pname = "async_log";
137     hash = "sha256-XeWC3oC0n4or3EDLrNLWXMWhyhH6kcah0Mdb56rZ5lA=";
138     meta.description = "Logging library built on top of Async_unix";
139     propagatedBuildInputs = [
140       async_kernel
141       async_unix
142       core
143       core_kernel
144       ppx_jane
145       timezone
146     ];
147   };
149   async_rpc_kernel = janePackage {
150     pname = "async_rpc_kernel";
151     hash = "sha256-zSqmRgybvWhS9XiNIqgxUjQU8xc9aXM69ZaBq4+r+HA=";
152     meta.description = "Platform-independent core of Async RPC library";
153     propagatedBuildInputs = [
154       async_kernel
155       protocol_version_header
156     ];
157   };
159   async_rpc_websocket = janePackage {
160     pname = "async_rpc_websocket";
161     hash = "sha256-pbgG872Av6rX/CH2sOKgTVR42XpP0xhzdR/Bqoq7bSU=";
162     meta.description = "Library to serve and dispatch Async RPCs over websockets";
163     propagatedBuildInputs = [
164       async_rpc_kernel
165       async_websocket
166       cohttp_async_websocket
167     ];
168   };
170   async_sendfile = janePackage {
171     pname = "async_sendfile";
172     hash = "sha256-x2chts7U9hoGW6uvyfpHMkSwCx1JXhHX601Xg92Wk3U=";
173     meta.description = "Thin wrapper around [Linux_ext.sendfile] to send full files";
174     propagatedBuildInputs = [ async_unix ];
175   };
177   async_shell = janePackage {
178     pname = "async_shell";
179     hash = "sha256-/wqfuKiQQufs/KhNtBn8C9AzX7GbP8s8cyWGynJ0m1M=";
180     meta.description = "Shell helpers for Async";
181     propagatedBuildInputs = [
182       async
183       shell
184     ];
185   };
187   async_smtp = janePackage {
188     pname = "async_smtp";
189     hash = "sha256-RWtbg6Vpp71ock8Duya5j9Y89OUY4wRXh0pDOxM1NT4=";
190     meta.description = "SMTP client and server";
191     propagatedBuildInputs = [
192       async_extra
193       async_inotify
194       async_sendfile
195       async_shell
196       async_ssl
197       email_message
198       resource_cache
199       re2_stable
200       sexp_macro
201     ];
202   };
204   async_ssl = janePackage {
205     pname = "async_ssl";
206     hash = "sha256-7obEoeckwydi2wHBkBmX0LynY1QVCb3sQ/U945eteJo=";
207     meta.description = "Async wrappers for SSL";
208     buildInputs = [ dune-configurator ];
209     propagatedBuildInputs = [
210       async
211       ctypes
212       ctypes-foreign
213       openssl
214     ];
215     patches = fetchpatch {
216       url = "https://raw.githubusercontent.com/ocaml/opam-source-archives/main/patches/async_ssl/no-incompatible-pointer-types-017.patch";
217       hash = "sha256-bpfIi97/b1hIwsFzsmhFAZV1w8CdaMxXoi72ScSYMjY=";
218     };
219   };
221   async_unix = janePackage {
222     pname = "async_unix";
223     hash = "sha256-fA1e5AnNe/tMTMZ60jtGUofRi4rh+MmVx81kfhfaBaQ=";
224     meta.description = "Monadic concurrency library";
225     propagatedBuildInputs = [
226       async_kernel
227       core_unix
228       cstruct
229     ];
230   };
232   async_websocket = janePackage {
233     pname = "async_websocket";
234     hash = "sha256-22N+QO9hpkKHv3n9WkvtmJouxb/nuauv1UXdVV0zOGA=";
235     meta.description = "A library that implements the websocket protocol on top of Async";
236     propagatedBuildInputs = [
237       async
238       cryptokit
239     ];
240   };
242   babel = janePackage {
243     pname = "babel";
244     hash = "sha256-mRSlLXtaGj8DcdDZGUZbi16qQxtfb+fXkwxz6AXxN3o=";
245     meta.description = "A library for defining Rpcs that can evolve over time without breaking backward compatibility";
246     propagatedBuildInputs = [
247       async_rpc_kernel
248       core
249       ppx_jane
250       streamable
251       tilde_f
252     ];
253   };
255   base = janePackage {
256     pname = "base";
257     version = "0.17.1";
258     hash = "sha256-5wqBpOHhiIy9JUuxb3OnpZHrHSM7VODuLSihaIyeFn0=";
259     meta.description = "Full standard library replacement for OCaml";
260     buildInputs = [ dune-configurator ];
261     propagatedBuildInputs = [
262       sexplib0
263       ocaml_intrinsics_kernel
264     ];
265     checkInputs = [ alcotest ];
266   };
268   base_bigstring = janePackage {
269     pname = "base_bigstring";
270     hash = "sha256-tGDtkVOU10GzNsJ4wZtbqyIMjY5lHM4+rA3+w34TYOE=";
271     meta.description = "String type based on [Bigarray], for use in I/O and C-bindings";
272     propagatedBuildInputs = [
273       int_repr
274       ppx_jane
275     ];
276   };
278   base_trie = janePackage {
279     pname = "base_trie";
280     hash = "sha256-KuVDLJiEIjbvLCNI51iFLlsMli+hspWMyhrMk5pSL58=";
281     meta.description = "Trie data structure library";
282     propagatedBuildInputs = [
283       base
284       core
285       expect_test_helpers_core
286       ppx_jane
287     ];
288   };
290   base_quickcheck = janePackage {
291     pname = "base_quickcheck";
292     hash = "sha256-jDxO+/9Qnntt6ZNX1xvaWvoJ0JpnPqeq8X8nsYpeqsY=";
293     meta.description = "Randomized testing framework, designed for compatibility with Base";
294     propagatedBuildInputs = [
295       ppx_base
296       ppx_fields_conv
297       ppx_let
298       ppx_sexp_value
299       splittable_random
300     ];
301   };
303   bidirectional_map = janePackage {
304     pname = "bidirectional_map";
305     hash = "sha256-LnslyNdgQpa9DOAkwb0qq9/NdRvKNocUTIP+Dni6oYc=";
306     meta.description = "A library for bidirectional maps and multimaps";
307   };
309   bignum = janePackage {
310     pname = "bignum";
311     hash = "sha256-QhVEZ97n/YUBBXYCshDa5UnZpv0BKK6xRN1kXabY3Es=";
312     propagatedBuildInputs = [
313       core_kernel
314       zarith
315       zarith_stubs_js
316     ];
317     meta.description = "Core-flavoured wrapper around zarith's arbitrary-precision rationals";
318   };
320   bin_prot = janePackage {
321     pname = "bin_prot";
322     hash = "sha256-5QeK8Cdu+YjNE/MLiQps6SSf5bRJ/eYZYsJH7oYSarg=";
323     meta.description = "A binary protocol generator";
324     propagatedBuildInputs = [
325       ppx_compare
326       ppx_custom_printf
327       ppx_fields_conv
328       ppx_optcomp
329       ppx_stable_witness
330       ppx_variants_conv
331     ];
332     postPatch = ''
333       patchShebangs xen/cflags.sh
334     '';
335   };
337   bonsai = janePackage {
338     pname = "bonsai";
339     hash = "sha256-rr87o/w/a6NtCrDIIYmk2a5IZ1WJM/qJUeDqTLN1Gr4=";
340     meta.description = "A library for building dynamic webapps, using Js_of_ocaml";
341     buildInputs = [ ppx_pattern_bind ];
342     nativeBuildInputs = [
343       ppx_css
344       js_of_ocaml-compiler
345       ocaml-embed-file
346     ];
347     propagatedBuildInputs = [
348       async
349       async_durable
350       async_extra
351       async_rpc_websocket
352       babel
353       cohttp-async
354       core_bench
355       fuzzy_match
356       incr_dom
357       indentation_buffer
358       js_of_ocaml-ppx
359       ordinal_abbreviation
360       patdiff
361       polling_state_rpc
362       ppx_css
363       ppx_quick_test
364       ppx_typed_fields
365       profunctor
366       sexp_grammar
367       textutils
368       versioned_polling_state_rpc
369     ];
370   };
372   capitalization = janePackage {
373     pname = "capitalization";
374     hash = "sha256-wq8SO+SXF+UQhSu+ElVYv9erZ8S54G3SzJd0HX/Vwyk=";
375     meta.description = "Naming conventions for multiple-word identifiers";
376     propagatedBuildInputs = [
377       base
378       ppx_base
379     ];
380   };
382   cinaps = janePackage {
383     pname = "cinaps";
384     version = "0.15.1";
385     hash = "sha256-LycruanldSP251uYJjQqIfI76W0UQ6o5i5u8XjszBT0=";
386     meta.description = "Trivial metaprogramming tool";
387     minimalOCamlVersion = "4.04";
388     propagatedBuildInputs = [ re ];
389     # doCheck fails because ppx_base doesn't include ppx_js_style, and this is
390     # needed for the ppx executable to parse `-allow-toplevel-expression` flag.
391     doCheck = false;
392   };
394   codicons = janePackage {
395     pname = "codicons";
396     hash = "sha256-S4VrMObA5+SNeL/XsWU6SoSD/0TVvuqHjthUaQCDoRU=";
397     meta.description = "Icons from VS code";
398     propagatedBuildInputs = [
399       core
400       ppx_jane
401       virtual_dom
402     ];
403   };
405   cohttp_async_websocket = janePackage {
406     pname = "cohttp_async_websocket";
407     hash = "sha256-0InGCF34LWQes9S4OgbR6w+6cylThYuj1Dj0aQyTnuY=";
408     meta.description = "Websocket library for use with cohttp and async";
409     propagatedBuildInputs = [
410       async_ssl
411       async_websocket
412       cohttp-async
413       ppx_jane
414       uri-sexp
415     ];
416   };
418   cohttp_static_handler = janePackage {
419     pname = "cohttp_static_handler";
420     hash = "sha256-RB/sUq1tL8A3m9YhHHx2LFqoExTX187VeZI9MRb1NeA=";
421     meta.description = "A library for easily creating a cohttp handler for static files";
422     propagatedBuildInputs = [ cohttp-async ];
423   };
425   content_security_policy = janePackage {
426     pname = "content_security_policy";
427     hash = "sha256-AQN2JJA+5B0PERNNOA9FXX6rIeej40bwJtQmHP6GKw4=";
428     meta.description = "A library for building content-security policies";
429     propagatedBuildInputs = [
430       base64
431       cryptokit
432       core
433       ppx_jane
434     ];
435   };
437   core = janePackage {
438     pname = "core";
439     version = "0.17.1";
440     hash = "sha256-XkABcvglVJLVnWJmvfr5eVywyclPSDqanVOLQNqdNtQ=";
441     meta.description = "Industrial strength alternative to OCaml's standard library";
442     buildInputs = [ jst-config ];
443     propagatedBuildInputs = [
444       base
445       base_bigstring
446       base_quickcheck
447       ppx_diff
448       ppx_jane
449       time_now
450     ];
451   };
453   core_bench = janePackage {
454     pname = "core_bench";
455     hash = "sha256-oXE3FuCCIbX2M0r4Ds2BMUU6g1bqe9E87lDo2CcMtMU=";
456     meta.description = "Benchmarking library";
457     propagatedBuildInputs = [
458       core_extended
459       delimited_parsing
460       textutils
461     ];
462   };
464   core_extended = janePackage {
465     pname = "core_extended";
466     hash = "sha256-Xl6czD1gdnvHkXDz+qa7TWZq6dm8wlDqywxEIi2R6bI=";
467     meta.description = "Extra components that are not as closely vetted or as stable as Core";
468     propagatedBuildInputs = [
469       core_unix
470       record_builder
471     ];
472   };
474   core_kernel = janePackage {
475     pname = "core_kernel";
476     hash = "sha256-l7U0edUCNHTroYMBHiEMDx5sl7opEmmmeo2Z06tCMts=";
477     meta.description = "System-independent part of Core";
478     buildInputs = [ jst-config ];
479     propagatedBuildInputs = [
480       base_bigstring
481       core
482       int_repr
483       sexplib
484       uopt
485     ];
486     doCheck = false; # we don't have quickcheck_deprecated
487   };
489   core_unix = janePackage {
490     pname = "core_unix";
491     hash = "sha256-eqBMiEJ5xUrgFJTMZoEDxqkhedQxxbbf0DedZKHprww=";
492     meta.description = "Unix-specific portions of Core";
493     buildInputs = [ jst-config ];
494     propagatedBuildInputs = [
495       core_kernel
496       expect_test_helpers_core
497       ocaml_intrinsics
498       ppx_jane
499       timezone
500       spawn
501     ];
502     postPatch = ''
503       patchShebangs unix_pseudo_terminal/src/discover.sh
504     '';
505     doCheck = false; # command_validate_parsing.exe is not specified in test build deps
507     # Compatibility with OCaml 5.3
508     patches = lib.optional (lib.versionAtLeast ocaml.version "5.3") (fetchpatch {
509       url = "https://github.com/janestreet/core_unix/commit/ebce389ac68e098f542e34400e114ac992f415af.patch";
510       includes = [ "bigstring_unix/src/bigstring_unix_stubs.c" ];
511       hash = "sha256-FGg2zlyp3aZFu1VeFdm7pgSPiW0HAkLYgMGTj+tqju8=";
512     });
513   };
515   csvfields = janePackage {
516     pname = "csvfields";
517     hash = "sha256-hCH2NGQIRTU5U3TUOYHao6Kz5PhnLbySmzic4ytppEc=";
518     propagatedBuildInputs = [
519       core
520       num
521     ];
522     meta.description = "Runtime support for ppx_xml_conv and ppx_csv_conv";
523   };
525   dedent = janePackage {
526     pname = "dedent";
527     hash = "sha256-Scir/gaIhmNowXZ0tv57M/Iv1GXQIkyDks1sU1DAoIQ=";
528     propagatedBuildInputs = [
529       base
530       ppx_jane
531       stdio
532     ];
533     meta.description = "A library for improving redability of multi-line string constants in code";
534   };
536   delimited_parsing = janePackage {
537     pname = "delimited_parsing";
538     hash = "sha256-bgt99kQvaU7FPK1+K1UOAUbSaaaCB1DV23Cuo3A68M0=";
539     propagatedBuildInputs = [
540       async
541       core_extended
542     ];
543     meta.description = "Parsing of character (e.g., comma) separated and fixed-width values";
544   };
546   legacy_diffable = janePackage {
547     pname = "legacy_diffable";
548     hash = "sha256-wUSG04bHCnwqXpWKgkceAORs1inxexiPKZIR9fEVmCo=";
549     propagatedBuildInputs = [
550       core
551       ppx_jane
552       stored_reversed
553       streamable
554     ];
555     meta.description = "An interface for diffs";
556   };
558   ecaml = janePackage {
559     pname = "ecaml";
560     hash = "sha256-CEroXMEIAfvXD603bnIVwzcrE3KbVaOOhGZastkQcdU=";
561     meta.description = "Library for writing Emacs plugin in OCaml";
562     propagatedBuildInputs = [
563       async
564       expect_test_helpers_core
565     ];
566   };
568   email_message = janePackage {
569     pname = "email_message";
570     hash = "sha256-1OJ6bQb/rdyfAgMyuKT/ylpa8qBldZV5kEm0B45Ej1w=";
571     meta.description = "E-mail message parser";
572     propagatedBuildInputs = [
573       angstrom
574       async
575       base64
576       cryptokit
577       magic-mime
578       re2
579     ];
580   };
582   env_config = janePackage {
583     pname = "env_config";
584     hash = "sha256-vG309p7xqanTnrnHBwvuCO3YD4tVbTNa7F1F9sZDZE0=";
585     meta.description = "Helper library for retrieving configuration from an environment variable";
586     propagatedBuildInputs = [
587       async
588       core
589       core_unix
590       ppx_jane
591     ];
592   };
594   expect_test_helpers_async = janePackage {
595     pname = "expect_test_helpers_async";
596     hash = "sha256-oInNgNISqOrmQUXVxzjDy+mS06yPEeFPGIvaKnCETjk=";
597     meta.description = "Async helpers for writing expectation tests";
598     propagatedBuildInputs = [
599       async
600       expect_test_helpers_core
601     ];
602   };
604   expect_test_helpers_core = janePackage {
605     pname = "expect_test_helpers_core";
606     hash = "sha256-vnlDZ8k3JFCdN6WGiaG9OEEdQJnw0/eMogFCfTXIu2Y=";
607     meta.description = "Helpers for writing expectation tests";
608     propagatedBuildInputs = [
609       core_kernel
610       sexp_pretty
611     ];
612   };
614   fieldslib = janePackage {
615     pname = "fieldslib";
616     hash = "sha256-Zfnc32SghjZYTlnSdo6JPm4WCb7BPVjrWNDfeMZHaiU=";
617     meta.description = "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";
618     propagatedBuildInputs = [ base ];
619   };
621   file_path = janePackage {
622     pname = "file_path";
623     hash = "sha256-XSLfYasn6qMZmDzAUGssOM9EX09n2W9/imTgNoSBEyk=";
624     meta.description = "A library for typed manipulation of UNIX-style file paths";
625     propagatedBuildInputs = [
626       async
627       core
628       core_kernel
629       core_unix
630       expect_test_helpers_async
631       expect_test_helpers_core
632       ppx_jane
633     ];
634   };
636   fuzzy_match = janePackage {
637     pname = "fuzzy_match";
638     hash = "sha256-XB1U4mY0LcdsKYRnmV0SR4ODTIZynZetBk5X5SdHs44=";
639     meta.description = "A library for fuzzy string matching";
640     propagatedBuildInputs = [
641       core
642       ppx_jane
643     ];
644   };
646   fzf = janePackage {
647     pname = "fzf";
648     hash = "sha256-yHdvC3cB5sVXsZQbtNzUZkaaqOe/7y8pDHgLwugAlQg=";
649     meta.description = "A library for running the fzf command line tool";
650     propagatedBuildInputs = [
651       async
652       core_kernel
653       ppx_jane
654     ];
655     postPatch = ''
656       substituteInPlace src/fzf.ml --replace /usr/bin/fzf ${fzf}/bin/fzf
657     '';
658   };
660   gel = janePackage {
661     pname = "gel";
662     hash = "sha256-zGDlxbJINXD1qG7EifZGDfKbQpehdHyR/WLRJRYlwUg=";
663     meta.description = "A library to mark non-record fields global";
664     propagatedBuildInputs = [
665       base
666       ppx_jane
667     ];
668   };
670   hex_encode = janePackage {
671     pname = "hex_encode";
672     hash = "sha256-5DqaCJllphdEreOpzAjT61qb3M6aN9b2xhiUjHVLrvE=";
673     meta.description = "Hexadecimal encoding library";
674     propagatedBuildInputs = [
675       core
676       ppx_jane
677       ounit
678     ];
679   };
681   higher_kinded = janePackage {
682     pname = "higher_kinded";
683     hash = "sha256-6aZxgGzltRs2aS4MYJh23Gpoqcko6xJxU11T6KixXno=";
684     meta.description = "A library with an encoding of higher kinded types in OCaml";
685     propagatedBuildInputs = [
686       base
687       ppx_jane
688     ];
689   };
691   incr_dom = janePackage {
692     pname = "incr_dom";
693     hash = "sha256-dkF7+aq5Idw1ltDgGEjGYspdmOXjXqv8AA27b4M7U8A=";
694     meta.description = "A library for building dynamic webapps, using Js_of_ocaml";
695     buildInputs = [ js_of_ocaml-ppx ];
696     propagatedBuildInputs = [
697       async_js
698       incr_map
699       incr_select
700       virtual_dom
701     ];
702   };
704   incr_map = janePackage {
705     pname = "incr_map";
706     hash = "sha256-qNahlxe3Pe1EEcFz1bAKUw3vBaNjgDlahQeuj/+VqbI=";
707     meta.description = "Helpers for incremental operations on map like data structures";
708     buildInputs = [ ppx_pattern_bind ];
709     propagatedBuildInputs = [
710       abstract_algebra
711       bignum
712       legacy_diffable
713       incremental
714       streamable
715     ];
716   };
718   incr_select = janePackage {
719     pname = "incr_select";
720     hash = "sha256-/VCNiE8Y7LBL0OHd5V+tB/b3HGKhfSvreU6LZgurYAg=";
721     meta.description = "Handling of large set of incremental outputs from a single input";
722     propagatedBuildInputs = [ incremental ];
723   };
725   incremental = janePackage {
726     pname = "incremental";
727     hash = "sha256-siBN36Vv0Bktyxh+8tL6XkUGLqSYMxqvd0UWuTRgAnI=";
728     meta.description = "Library for incremental computations";
729     propagatedBuildInputs = [
730       core_kernel
731       lru_cache
732     ];
733   };
735   indentation_buffer = janePackage {
736     pname = "indentation_buffer";
737     hash = "sha256-/IUZyRkcxUsddzGGIoaLpXbpCxJ1satK79GkzPxSPSc=";
738     meta.description = "A library for building strings with indentation";
739     propagatedBuildInputs = [
740       core
741       ppx_jane
742     ];
743   };
745   int_repr = janePackage {
746     pname = "int_repr";
747     hash = "sha256-yeaAzw95zB1wow9Alg18CU+eemZVxjdLiO/wVRitDwE=";
748     meta.description = "Integers of various widths";
749     propagatedBuildInputs = [
750       base
751       ppx_jane
752     ];
753   };
755   janestreet_cpuid = janePackage {
756     pname = "janestreet_cpuid";
757     hash = "sha256-3ZwEZQSkJJyFW5/+C9x8nW6+GrfVwccNFPlcs7qNcjQ=";
758     meta.description = "A library for parsing CPU capabilities out of the `cpuid` instruction";
759     propagatedBuildInputs = [
760       core
761       core_kernel
762       ppx_jane
763     ];
764   };
766   janestreet_csv = janePackage {
767     pname = "janestreet_csv";
768     hash = "sha256-at7ywGDaYIDsqhxxLYJhB8a697ccfPtKKI8LvCmRgG8=";
769     propagatedBuildInputs = [
770       async
771       bignum
772       core_kernel
773       core_unix
774       csvfields
775       delimited_parsing
776       fieldslib
777       numeric_string
778       ppx_jane
779       re2
780       textutils
781       tyxml
782       ocaml_pcre
783     ];
784     meta.description = "Tools for working with CSVs on the command line";
785   };
787   jane_rope = janePackage {
788     pname = "jane_rope";
789     hash = "sha256-Lo4+ZUX9R2EGrz4BN+LqdJgVXB3hQqNifgwsjFC1Hfs=";
790     meta.description = "String representation with cheap concatenation";
791     propagatedBuildInputs = [
792       base
793       ppx_jane
794     ];
795   };
797   jane-street-headers = janePackage {
798     pname = "jane-street-headers";
799     hash = "sha256-nEa40utpXA3KiFhp9inWurKyDF4Jw1Jlln6fiW5MAkM=";
800     meta.description = "Jane Street C header files";
801   };
803   js_of_ocaml_patches = janePackage {
804     pname = "js_of_ocaml_patches";
805     hash = "sha256-N61IEZLGfCU3ZX+sw35DAUqUh3u8RaCFcNlXxU1dvL8=";
806     meta.description = "Additions to js_of_ocaml's standard library that are required by Jane Street libraries";
807     propagatedBuildInputs = [
808       js_of_ocaml
809       js_of_ocaml-ppx
810     ];
811     patches = [ ./js_of_ocaml_patches.patch ];
812   };
814   jsonaf = janePackage {
815     pname = "jsonaf";
816     hash = "sha256-MMIDHc40cmPpO0n8yREIGMyFndw3NfvGUhy6vHnn40w=";
817     meta.description = "A library for parsing, manipulating, and serializing data structured as JSON";
818     propagatedBuildInputs = [
819       base
820       ppx_jane
821       angstrom
822       faraday
823     ];
824   };
826   jst-config = janePackage {
827     pname = "jst-config";
828     hash = "sha256-xwQ+q2Hsduu2vWMWFcjoj3H8Es00N7Mv9LwIZG4hw7c=";
829     meta.description = "Compile-time configuration for Jane Street libraries";
830     buildInputs = [
831       dune-configurator
832       ppx_assert
833       stdio
834     ];
835   };
837   lru_cache = janePackage {
838     pname = "janestreet_lru_cache";
839     hash = "sha256-/UMSccN9yGAXF7/g6ueSnsfPSnF1fm0zJIRFsThZvH8=";
840     meta.description = "An LRU Cache implementation";
841     propagatedBuildInputs = [
842       core_kernel
843       ppx_jane
844     ];
845   };
847   man_in_the_middle_debugger = janePackage {
848     pname = "man_in_the_middle_debugger";
849     hash = "sha256-ImEzn/EssgW63vdGhLMp4NB/FW0SsCMQ32ZNAs7bDg4=";
850     meta.description = "Man-in-the-middle debugging library";
851     propagatedBuildInputs = [
852       async
853       core
854       ppx_jane
855       angstrom
856       angstrom-async
857     ];
858   };
860   n_ary = janePackage {
861     pname = "n_ary";
862     hash = "sha256-xg4xK3m7SoO1P+rBHvPqFMLx9JXnADEeyU58UmAqW6s=";
863     meta.description = "A library for N-ary datatypes and operations";
864     propagatedBuildInputs = [
865       base
866       expect_test_helpers_core
867       ppx_compare
868       ppx_enumerate
869       ppx_hash
870       ppx_jane
871       ppx_sexp_conv
872       ppx_sexp_message
873     ];
874   };
876   numeric_string = janePackage {
877     pname = "numeric_string";
878     hash = "sha256-cU5ETGfavkkiqZOjehCYg06YdDk8W+ZDqz17FGWHey8=";
879     meta.description = "A comparison function for strings that sorts numeric fragments of strings according to their numeric value";
880     propagatedBuildInputs = [
881       base
882       ppx_jane
883     ];
884   };
886   ocaml-compiler-libs = janePackage (
887     {
888       pname = "ocaml-compiler-libs";
889       minimalOCamlVersion = "4.04.1";
890       meta.description = "OCaml compiler libraries repackaged";
891     }
892     // (
893       if lib.versionAtLeast ocaml.version "5.2" then
894         {
895           version = "0.17.0";
896           hash = "sha256-QaC6BWrpFblra6X1+TrlK+J3vZxLvLJZ2b0427DiQzM=";
897         }
898       else
899         {
900           version = "0.12.4";
901           hash = "sha256-W+KUguz55yYAriHRMcQy8gRPzh2TZSJnexG1JI8TLgI=";
902         }
903     )
904   );
906   ocaml-embed-file = janePackage {
907     pname = "ocaml-embed-file";
908     hash = "sha256-7fyZ5DNcRHud0rd4dLUv9Vyf3lMwMVxgkl9jVUn1/lw=";
909     propagatedBuildInputs = [
910       async
911       ppx_jane
912     ];
913     meta.description = "Files contents as module constants";
914   };
916   ocaml_intrinsics_kernel = janePackage {
917     pname = "ocaml_intrinsics_kernel";
918     hash = "sha256-utD9HE0P3vPgSXDW8Bz0FxgEy+lNkIAlN/+JkfDqb9A=";
919     meta.description = "A kernel library of intrinsics for OCaml";
920     buildInputs = [ dune-configurator ];
921   };
923   ocaml_intrinsics = janePackage {
924     pname = "ocaml_intrinsics";
925     hash = "sha256-Ndt6ZPJamBYzr1YA941BLwvRgkkbD8AEQR/JjjR38xI=";
926     meta.description = "A library of intrinsics for OCaml";
927     buildInputs = [
928       dune-configurator
929       ocaml_intrinsics_kernel
930     ];
931   };
933   ocaml_openapi_generator = janePackage {
934     pname = "ocaml_openapi_generator";
935     hash = "sha256-HCq9fylcVjBMs8L6E860nw+EonWEQadlyEKpQI6mynU=";
936     meta.description = " An OpenAPI 3 to OCaml client generator";
937     buildInputs = [
938       async
939       core
940       core_kernel
941       core_unix
942       jsonaf
943       ppx_jane
944       ppx_jsonaf_conv
945       httpaf
946       jingoo
947       uri
948     ];
949     nativeBuildInputs = [ ocaml-embed-file ];
950   };
952   of_json = janePackage {
953     pname = "of_json";
954     hash = "sha256-pZCiwXRwZK6ohsGz/WLacgo48ekdT35uD4VESvGxH8A=";
955     meta.description = "A friendly applicative interface for Jsonaf";
956     buildInputs = [
957       core
958       core_extended
959       jsonaf
960       ppx_jane
961     ];
962   };
964   ordinal_abbreviation = janePackage {
965     pname = "ordinal_abbreviation";
966     hash = "sha256-kmTGnGbhdiUoXXw2DEAeZJL2sudEf8BRRt2RHCdL7HU=";
967     meta.description = "A minimal library for generating ordinal names of integers";
968     buildInputs = [
969       base
970       ppx_jane
971     ];
972   };
974   parsexp = janePackage {
975     pname = "parsexp";
976     hash = "sha256-iKrZ6XDLM6eRl7obaniDKK6X8R7Kxry6HD7OQBwh3NU=";
977     meta.description = "S-expression parsing library";
978     propagatedBuildInputs = [
979       base
980       sexplib0
981     ];
982   };
984   patdiff = janePackage {
985     pname = "patdiff";
986     hash = "sha256-iphpQ0b8i+ItY57zM4xL9cID9GYuTCMZN7SYa7TDprI=";
988     # Used by patdiff-git-wrapper.  Providing it here also causes the shebang
989     # line to be automatically patched.
990     buildInputs = [ bash ];
991     propagatedBuildInputs = [
992       core_unix
993       patience_diff
994       ocaml_pcre
995     ];
996     meta = {
997       description = "File Diff using the Patience Diff algorithm";
998     };
999     postPatch = ''
1000       patchShebangs test/bin/setup.sh
1001     '';
1002     doCheck = false; # test rules broken
1003   };
1005   patience_diff = janePackage {
1006     pname = "patience_diff";
1007     hash = "sha256-sn/8SvMt7kzzuYUwhB/uH/3mO1aIKHw/oRYRzA7goFU=";
1008     meta.description = "Diff library using Bram Cohen's patience diff algorithm";
1009     propagatedBuildInputs = [ core_kernel ];
1010   };
1012   polling_state_rpc = janePackage {
1013     pname = "polling_state_rpc";
1014     hash = "sha256-fZKGva11ztuM+q0Lc6rr9NEH/Qo+wFmE6Rr1/TJm7rA=";
1015     meta.description = "An RPC which tracks state on the client and server so it only needs to send diffs across the wire";
1016     propagatedBuildInputs = [
1017       async_kernel
1018       async_rpc_kernel
1019       babel
1020       core
1021       core_kernel
1022       legacy_diffable
1023       ppx_jane
1024     ];
1025   };
1027   posixat = janePackage {
1028     pname = "posixat";
1029     hash = "sha256-G+5q8x1jfG3wEwNzX2tkcC2Pm4E5/ZYxQyBwCUNXIrw=";
1030     propagatedBuildInputs = [
1031       ppx_optcomp
1032       ppx_sexp_conv
1033     ];
1034     meta.description = "Binding to the posix *at functions";
1035   };
1037   ppx_accessor = janePackage {
1038     pname = "ppx_accessor";
1039     hash = "sha256-vK6lA0J98bDGtVthIdU76ckzH+rpNUD1cQ3vMzHy0Iw=";
1040     meta.description = "[@@deriving] plugin to generate accessors for use with the Accessor libraries";
1041     propagatedBuildInputs = [ accessor ];
1042   };
1044   ppx_assert = janePackage {
1045     pname = "ppx_assert";
1046     hash = "sha256-o9ywdFH6+qoJ3eWb29/gGlkWkHDMuBx626mNxrT1D8A=";
1047     meta.description = "Assert-like extension nodes that raise useful errors on failure";
1048     propagatedBuildInputs = [
1049       ppx_cold
1050       ppx_compare
1051       ppx_here
1052       ppx_sexp_conv
1053     ];
1054   };
1056   ppx_base = janePackage {
1057     pname = "ppx_base";
1058     hash = "sha256-/s7c8vfLIO1pPajNldMgurBKXsSzQ8yxqFI6QZCHm5I=";
1059     meta.description = "Base set of ppx rewriters";
1060     propagatedBuildInputs = [
1061       ppx_cold
1062       ppx_enumerate
1063       ppx_globalize
1064       ppx_hash
1065     ];
1066   };
1068   ppx_bench = janePackage {
1069     pname = "ppx_bench";
1070     hash = "sha256-y4nL/wwjJUL2Fa7Ne0f7SR5flCjT1ra9M1uBHOUZWCg=";
1071     meta.description = "Syntax extension for writing in-line benchmarks in ocaml code";
1072     propagatedBuildInputs = [ ppx_inline_test ];
1073   };
1075   ppx_bin_prot = janePackage {
1076     pname = "ppx_bin_prot";
1077     hash = "sha256-nQps/+Csx3+6H6KBzIm/dLCGWJ9fcRD7JxB4P2lky0o=";
1078     meta.description = "Generation of bin_prot readers and writers from types";
1079     propagatedBuildInputs = [
1080       bin_prot
1081       ppx_here
1082     ];
1083     doCheck = false; # circular dependency with ppx_jane
1084   };
1086   ppx_cold = janePackage {
1087     pname = "ppx_cold";
1088     hash = "sha256-fFZqlcbUS7D+GjnxSjGYckkQtx6ZcPNtOIsr6Rt6D9A=";
1089     meta.description = "Expands [@cold] into [@inline never][@specialise never][@local never]";
1090     propagatedBuildInputs = [ ppxlib ];
1091   };
1093   ppx_compare = janePackage {
1094     pname = "ppx_compare";
1095     hash = "sha256-uAXB9cba0IBl+cA2CAuGVVxuos4HXH5jlB6Qjxx44Y0=";
1096     meta.description = "Generation of comparison functions from types";
1097     propagatedBuildInputs = [
1098       ppxlib
1099       ppxlib_jane
1100       base
1101     ];
1102   };
1104   ppx_conv_func = janePackage {
1105     pname = "ppx_conv_func";
1106     hash = "sha256-PJ8T0u8VkxefaxojwrmbMXDjqyfAIxKe92B8QqRY2JU=";
1107     meta.description = "Part of the Jane Street's PPX rewriters collection";
1108     propagatedBuildInputs = [
1109       ppxlib
1110       base
1111     ];
1112   };
1114   ppx_custom_printf = janePackage {
1115     pname = "ppx_custom_printf";
1116     hash = "sha256-DFgDb9MIFCqglYoMgPUN0zEaxkr7VJAXgLxq1yp8ap4=";
1117     meta.description = "Printf-style format-strings for user-defined string conversion";
1118     propagatedBuildInputs = [ ppx_sexp_conv ];
1119   };
1121   ppx_css = janePackage {
1122     pname = "ppx_css";
1123     hash = "sha256-mzLMVtNTy9NrVaNgsRa+oQynxXnh2qlHJCfr3FLFJ2I=";
1124     meta.description = "A ppx that takes in css strings and produces a module for accessing the unique names defined within";
1125     propagatedBuildInputs = [
1126       async
1127       async_unix
1128       core_kernel
1129       core_unix
1130       ppxlib
1131       js_of_ocaml
1132       js_of_ocaml-ppx
1133       sedlex
1134       virtual_dom
1135     ];
1136   };
1138   ppx_csv_conv = janePackage {
1139     pname = "ppx_csv_conv";
1140     hash = "sha256-NtqfagLIYiuyBjEAxilAhATx8acJwD7LykHBzfr+yAc=";
1141     meta.description = "Generate functions to read/write records in csv format";
1142     propagatedBuildInputs = [
1143       csvfields
1144       ppx_conv_func
1145     ];
1146   };
1148   ppx_demo = janePackage {
1149     pname = "ppx_demo";
1150     hash = "sha256-blD96GhicOj3b6jYNniSpq6fBR+ul9Y2kn0ZmfbeVMo=";
1151     meta.description = "PPX that exposes the source code string of an expression/module structure";
1152     propagatedBuildInputs = [
1153       core
1154       dedent
1155       ppx_jane
1156       ppxlib
1157     ];
1158   };
1160   ppx_derive_at_runtime = janePackage {
1161     pname = "ppx_derive_at_runtime";
1162     hash = "sha256-Y/z4BKFRt3z1lUGdc7SznIv/ys//dZHoPSnsouj1GtI=";
1163     meta.description = "Define a new ppx deriver by naming a runtime module";
1164     propagatedBuildInputs = [
1165       base
1166       expect_test_helpers_core
1167       ppx_jane
1168       ppxlib
1169     ];
1170   };
1172   ppx_diff = janePackage {
1173     pname = "ppx_diff";
1174     hash = "sha256-MAn+vcU6vLR8g16Wq1sORyLcLgWxLsazMQY1syY6HsA=";
1175     meta.description = "Generation of diffs and update functions for ocaml types";
1176     propagatedBuildInputs = [
1177       base
1178       gel
1179       ppx_compare
1180       ppx_enumerate
1181       ppx_jane
1182     ];
1183   };
1185   ppx_disable_unused_warnings = janePackage {
1186     pname = "ppx_disable_unused_warnings";
1187     hash = "sha256-KHWIufXU+k6xCLf8l50Pp/1JZ2wFrKnKT/aQYpadlmU=";
1188     meta.description = ''Expands [@disable_unused_warnings] into [@warning "-20-26-32-33-34-35-36-37-38-39-60-66-67"]'';
1189     propagatedBuildInputs = [ ppxlib ];
1190   };
1192   ppx_embed_file = janePackage {
1193     pname = "ppx_embed_file";
1194     hash = "sha256-Ew6/X7oAq81ldERU37QWXQdgReEtPD/lxbku8WZNJ6A=";
1195     meta.description = "A PPX that allows embedding files directly into executables/libraries as strings or bytes";
1196     propagatedBuildInputs = [
1197       core
1198       ppx_jane
1199       shell
1200       ppxlib
1201     ];
1202   };
1204   ppx_enumerate = janePackage {
1205     pname = "ppx_enumerate";
1206     hash = "sha256-YqBrxp2fe91k8L3aQVW6egoDPj8onGSRueQkE2Icdu4=";
1207     meta.description = "Generate a list containing all values of a finite type";
1208     propagatedBuildInputs = [
1209       ppxlib
1210       ppxlib_jane
1211     ];
1212   };
1214   ppx_expect = janePackage {
1215     pname = "ppx_expect";
1216     hash = "sha256-m4Nr48ZET632I6vw5RjpNA0elW3lpN3aPmfA3RzsEn8=";
1217     meta.description = "Cram like framework for OCaml";
1218     propagatedBuildInputs = [
1219       ppx_here
1220       ppx_inline_test
1221       re
1222     ];
1223     doCheck = false; # test build rules broken
1224   };
1226   ppx_fields_conv = janePackage {
1227     pname = "ppx_fields_conv";
1228     hash = "sha256-FA7hDgqJMJ2obsVwzwaGnNLPvjP0SkTec8Nh3znuNDQ=";
1229     meta.description = "Generation of accessor and iteration functions for ocaml records";
1230     propagatedBuildInputs = [
1231       fieldslib
1232       ppxlib
1233     ];
1234   };
1236   ppx_fixed_literal = janePackage {
1237     pname = "ppx_fixed_literal";
1238     hash = "sha256-Xq+btvZQ/+6bcHoH9DcrrhD5CkwpFeedn7YEFHeLzsU=";
1239     meta.description = "Simpler notation for fixed point literals";
1240     propagatedBuildInputs = [ ppxlib ];
1241   };
1243   ppx_globalize = janePackage {
1244     pname = "ppx_globalize";
1245     hash = "sha256-LKV5zfaf6AXn3NzOhN2ka8NtjItPTIsfmoJVBw5bYi8=";
1246     meta.description = "A ppx rewriter that generates functions to copy local values to the global heap";
1247     propagatedBuildInputs = [
1248       base
1249       ppxlib
1250       ppxlib_jane
1251     ];
1252   };
1254   ppx_hash = janePackage {
1255     pname = "ppx_hash";
1256     hash = "sha256-GADCLoF2GjZkvAiezn0xyReCs1avrUgjJGSS/pMNq38=";
1257     meta.description = "A ppx rewriter that generates hash functions from type expressions and definitions";
1258     propagatedBuildInputs = [
1259       ppx_compare
1260       ppx_sexp_conv
1261     ];
1262   };
1264   ppx_here = janePackage {
1265     pname = "ppx_here";
1266     hash = "sha256-ybwOcv82uDRPTlfaQgaBJHVq6xBxIRUj07CXP131JsM=";
1267     meta.description = "Expands [%here] into its location";
1268     propagatedBuildInputs = [ ppxlib ];
1269     doCheck = false; # test build rules broken
1270   };
1272   ppx_ignore_instrumentation = janePackage {
1273     pname = "ppx_ignore_instrumentation";
1274     hash = "sha256-73dp8XKfsLO0Z6A1p5/K7FjxgeUPMBkScx0IjfbOV+w=";
1275     meta.description = "Ignore Jane Street specific instrumentation extensions";
1276     propagatedBuildInputs = [ ppxlib ];
1277   };
1279   ppx_inline_test = janePackage {
1280     pname = "ppx_inline_test";
1281     hash = "sha256-pNdrmAlT3MUbuPUcMmCRcUIXv4fZ/o/IofJmnUKf8Cs=";
1282     meta.description = "Syntax extension for writing in-line tests in ocaml code";
1283     propagatedBuildInputs = [
1284       ppxlib
1285       time_now
1286     ];
1287     doCheck = false; # test build rules broken
1288   };
1290   ppx_jane = janePackage {
1291     pname = "ppx_jane";
1292     hash = "sha256-HgIob7iJkV0HcGi6IjjSUWdKOAu2TsC3GMyzpjYS1cs=";
1293     meta.description = "Standard Jane Street ppx rewriters";
1294     propagatedBuildInputs = [
1295       base_quickcheck
1296       ppx_bin_prot
1297       ppx_disable_unused_warnings
1298       ppx_expect
1299       ppx_fixed_literal
1300       ppx_ignore_instrumentation
1301       ppx_log
1302       ppx_module_timer
1303       ppx_optcomp
1304       ppx_optional
1305       ppx_pipebang
1306       ppx_stable
1307       ppx_string
1308       ppx_string_conv
1309       ppx_tydi
1310       ppx_typerep_conv
1311       ppx_variants_conv
1312     ];
1313   };
1315   ppx_jsonaf_conv = janePackage {
1316     pname = "ppx_jsonaf_conv";
1317     hash = "sha256-v7CYOJ1g4LkqIv5De5tQjjkBWXqKHbvqfSr0X5jBUuM=";
1318     meta.description = "[@@deriving] plugin to generate Jsonaf conversion functions";
1319     propagatedBuildInputs = [
1320       base
1321       jsonaf
1322       ppx_jane
1323       ppxlib
1324     ];
1325   };
1327   ppx_js_style = janePackage {
1328     pname = "ppx_js_style";
1329     hash = "sha256-7jRzxe4bLyZ2vnHeqWiLlCUvOlNUAk0dwCfBFhrykUU=";
1330     meta.description = "Code style checker for Jane Street Packages";
1331     propagatedBuildInputs = [
1332       octavius
1333       ppxlib
1334     ];
1335   };
1337   ppx_let = janePackage {
1338     pname = "ppx_let";
1339     hash = "sha256-JkNQgbPHVDH659m4Xy9ipcZ/iqGtj5q1qQn1P+O7TUY=";
1340     meta.description = "Monadic let-bindings";
1341     propagatedBuildInputs = [
1342       ppxlib
1343       ppx_here
1344     ];
1345   };
1347   ppx_log = janePackage {
1348     pname = "ppx_log";
1349     hash = "sha256-llnjWeJH4eg5WtegILRxdwO3RWGWTFeCIKr6EbrUDI4=";
1350     meta.description = "Ppx_sexp_message-like extension nodes for lazily rendering log messages";
1351     propagatedBuildInputs = [
1352       base
1353       ppx_compare
1354       ppx_enumerate
1355       ppx_expect
1356       ppx_fields_conv
1357       ppx_here
1358       ppx_let
1359       ppx_sexp_conv
1360       ppx_sexp_message
1361       ppx_sexp_value
1362       ppx_string
1363       ppx_variants_conv
1364       sexplib
1365     ];
1366     doCheck = false; # test build rules broken
1367   };
1369   ppx_module_timer = janePackage {
1370     pname = "ppx_module_timer";
1371     hash = "sha256-OWo1Ij9JAxsk9HlTlaz9Qw2+4YCvXDmIvytAOgFCLPI=";
1372     meta.description = "Ppx rewriter that records top-level module startup times";
1373     propagatedBuildInputs = [ time_now ];
1374   };
1376   ppx_optcomp = janePackage {
1377     pname = "ppx_optcomp";
1378     hash = "sha256-H9oTzhJx9IGRkcwY2YEvcvNgeJ8ETNO95qKcjTXJBwk=";
1379     meta.description = "Optional compilation for OCaml";
1380     propagatedBuildInputs = [ ppxlib ];
1381   };
1383   ppx_optional = janePackage {
1384     pname = "ppx_optional";
1385     hash = "sha256-SHw2zh6lG1N9zWF2b3VWeYzRHUx4jUxyOYgHd2/N9wE=";
1386     meta.description = "Pattern matching on flat options";
1387     propagatedBuildInputs = [
1388       ppxlib
1389       ppxlib_jane
1390     ];
1391   };
1393   ppx_pattern_bind = janePackage {
1394     pname = "ppx_pattern_bind";
1395     hash = "sha256-IVDvFU9ERB2YFJOgP/glYcO4KhEH5VdQ7wCCfreboqA=";
1396     meta.description = "A ppx for writing fast incremental bind nodes in a pattern match";
1397     propagatedBuildInputs = [ ppx_let ];
1398   };
1400   ppx_pipebang = janePackage {
1401     pname = "ppx_pipebang";
1402     hash = "sha256-GBa1zzNChZOQfVSHyUeDEMFxuNUT3lj/pIQi/l1J35M=";
1403     meta.description = "A ppx rewriter that inlines reverse application operators `|>` and `|!`";
1404     propagatedBuildInputs = [ ppxlib ];
1405   };
1407   ppx_python = janePackage {
1408     pname = "ppx_python";
1409     hash = "sha256-WqTYH5Zz/vRak/CL1ha8oUbQ8+XRuUu9610uj8II74o=";
1410     meta.description = "A [@@deriving] plugin to generate Python conversion functions ";
1411     propagatedBuildInputs = [
1412       ppx_base
1413       ppxlib
1414       pyml
1415     ];
1416     doCheck = false; # test rules broken
1417   };
1419   ppx_quick_test = janePackage {
1420     pname = "ppx_quick_test";
1421     hash = "sha256-Kxb0IJcosC4eYlUjEfZE9FhY8o1/gDHHLWD5Cby5hXY=";
1422     meta.description = "Spiritual equivalent of let%expect_test, but for property based tests";
1423     propagatedBuildInputs = [
1424       async
1425       async_kernel
1426       base
1427       base_quickcheck
1428       core
1429       core_kernel
1430       expect_test_helpers_core
1431       ppx_expect
1432       ppx_here
1433       ppx_jane
1434       ppx_sexp_conv
1435       ppx_sexp_message
1436     ];
1437   };
1439   ppx_sexp_conv = janePackage {
1440     pname = "ppx_sexp_conv";
1441     hash = "sha256-hUi0I50SODK1MpL86xy8eM8yn8f4q1Hv4LP9zFnnr70=";
1442     meta.description = "[@@deriving] plugin to generate S-expression conversion functions";
1443     propagatedBuildInputs = [
1444       ppxlib
1445       ppxlib_jane
1446       sexplib0
1447       base
1448     ];
1449   };
1451   ppx_sexp_message = janePackage {
1452     pname = "ppx_sexp_message";
1453     hash = "sha256-SNgTvsTUgFzjqHpyIYk4YuA4c5MbA9e77YUEsDaKTeA=";
1454     meta.description = "A ppx rewriter for easy construction of s-expressions";
1455     propagatedBuildInputs = [
1456       ppx_here
1457       ppx_sexp_conv
1458     ];
1459   };
1461   ppx_sexp_value = janePackage {
1462     pname = "ppx_sexp_value";
1463     hash = "sha256-f96DLNFI+s3TKsOj01i6xUoM9L+qRgAXbbepNis397I=";
1464     meta.description = "A ppx rewriter that simplifies building s-expressions from ocaml values";
1465     propagatedBuildInputs = [
1466       ppx_here
1467       ppx_sexp_conv
1468     ];
1469   };
1471   ppx_stable = janePackage {
1472     pname = "ppx_stable";
1473     hash = "sha256-N5oPjjQcLgiO9liX8Z0vg0IbQXaGZ4BqOgwvuIKSKaA=";
1474     meta.description = "Stable types conversions generator";
1475     propagatedBuildInputs = [ ppxlib ];
1476   };
1478   ppx_stable_witness = janePackage {
1479     pname = "ppx_stable_witness";
1480     hash = "sha256-k45uR/OMPRsi5450CuUo592EVc82DPhO8TvBPjgJTh0=";
1481     meta.description = "Ppx extension for deriving a witness that a type is intended to be stable";
1482     propagatedBuildInputs = [
1483       base
1484       ppxlib
1485     ];
1486   };
1488   ppx_string = janePackage {
1489     pname = "ppx_string";
1490     hash = "sha256-taAvJas9DvR5CIiFf38IMdNqLJ0QJmnIdcNJAaVILgA=";
1491     meta.description = "Ppx extension for string interpolation";
1492     propagatedBuildInputs = [
1493       ppx_base
1494       ppxlib
1495       stdio
1496     ];
1497   };
1499   ppx_string_conv = janePackage {
1500     pname = "ppx_string_conv";
1501     hash = "sha256-r+XubSXjxVyCsra99D6keJ/lmXeK5SZbI6h/IFghvPQ=";
1502     meta.description = "Ppx to help derive of_string and to_string, primarily for variant types";
1503     propagatedBuildInputs = [
1504       capitalization
1505       ppx_let
1506       ppx_string
1507     ];
1508   };
1510   ppx_tydi = janePackage {
1511     pname = "ppx_tydi";
1512     hash = "sha256-PM89fP6Rb6M99HgEzQ7LfpW1W5adw6J/E1LFQJtdd0U=";
1513     meta.description = "Let expressions, inferring pattern type from expression";
1514     propagatedBuildInputs = [
1515       base
1516       ppxlib
1517     ];
1518   };
1520   ppx_typed_fields = janePackage {
1521     pname = "ppx_typed_fields";
1522     hash = "sha256-aTPEBBc1zniZkEmzubGkU064bwGnefBOjVDqTdPm2w8=";
1523     meta.description = "GADT-based field accessors and utilities";
1524     propagatedBuildInputs = [
1525       core
1526       ppx_jane
1527       ppxlib
1528     ];
1529   };
1531   ppx_typerep_conv = janePackage {
1532     pname = "ppx_typerep_conv";
1533     hash = "sha256-V9yOSy3cj5/bz9PvpO3J+aeFu1G+qGQ8AR3gSczUZbY=";
1534     meta.description = "Generation of runtime types from type declarations";
1535     propagatedBuildInputs = [
1536       ppxlib
1537       typerep
1538     ];
1539   };
1541   ppx_variants_conv = janePackage {
1542     pname = "ppx_variants_conv";
1543     hash = "sha256-Av2F699LzVCpwcdji6qG0jt5DVxCnIY4eBLaPK1JC10=";
1544     meta.description = "Generation of accessor and iteration functions for ocaml variant types";
1545     propagatedBuildInputs = [
1546       variantslib
1547       ppxlib
1548     ];
1549   };
1551   ppxlib_jane = janePackage (
1552     {
1553       pname = "ppxlib_jane";
1554       meta.description = "A library for use in ppxes for constructing and matching on ASTs corresponding to the augmented parsetree";
1555       propagatedBuildInputs = [ ppxlib ];
1556     }
1557     // (
1558       if lib.versionAtLeast ocaml.version "5.3" then
1559         {
1560           version = "0.17.2";
1561           hash = "sha256-AQJSdKtF6p/aG5Lx8VHVEOsisH8ep+iiml6DtW+Hdik=";
1562         }
1563       else
1564         {
1565           version = "0.17.0";
1566           hash = "sha256-8NC8CHh3pSdFuRDQCuuhc2xxU+84UAsGFJbbJoKwd0U=";
1567         }
1568     )
1569   );
1571   profunctor = janePackage {
1572     pname = "profunctor";
1573     hash = "sha256-WYPJLt3kYvIzh88XcPpw2xvSNjNX63/LvWwIDK+Xr0Q=";
1574     meta.description = "A library providing a signature for simple profunctors and traversal of a record";
1575     propagatedBuildInputs = [
1576       base
1577       ppx_jane
1578       record_builder
1579     ];
1580   };
1582   protocol_version_header = janePackage {
1583     pname = "protocol_version_header";
1584     hash = "sha256-WKy4vahmmj6o82/FbzvFYfJFglgNMrka0XhtCMUyct4=";
1585     meta.description = "Protocol versioning";
1586     propagatedBuildInputs = [ core_kernel ];
1587   };
1589   re2 = janePackage {
1590     pname = "re2";
1591     hash = "sha256-0VCSOzrVouMRVZJumcqv0F+HQFXlFfVEFIhYq7Tfhrg=";
1592     meta.description = "OCaml bindings for RE2, Google's regular expression library";
1593     propagatedBuildInputs = [
1594       core_kernel
1595       jane_rope
1596       regex_parser_intf
1597     ];
1598     prePatch = ''
1599       substituteInPlace src/re2_c/dune --replace 'CXX=g++' 'CXX=c++'
1600       substituteInPlace src/dune --replace '(cxx_flags (:standard \ -pedantic) (-I re2_c/libre2))' '(cxx_flags (:standard \ -pedantic) (-I re2_c/libre2) (-x c++))'
1601     '';
1602   };
1604   re2_stable = janePackage {
1605     pname = "re2_stable";
1606     version = "0.14.0";
1607     hash = "sha256-gyet2Pzn7ZIqQ+UP2J51pRmwaESY2LSGTqCMZZwDTE4=";
1608     meta.description = "Re2_stable adds an incomplete but stable serialization of Re2";
1609     propagatedBuildInputs = [
1610       core
1611       re2
1612     ];
1613   };
1615   record_builder = janePackage {
1616     pname = "record_builder";
1617     hash = "sha256-NQ0Wizxi/wD8BCwt8hxZWnEpLBTn3XkaG+96ooOKIFE=";
1618     meta.description = "A library which provides traversal of records with an applicative";
1619     propagatedBuildInputs = [
1620       base
1621       ppx_jane
1622     ];
1623   };
1625   redis-async = janePackage {
1626     pname = "redis-async";
1627     hash = "sha256-bwKPEnK2uJq5H65BDAL1Vk3qSr5kUwaCEiFsgaCdHw8=";
1628     meta.description = "Redis client for Async applications";
1629     propagatedBuildInputs = [
1630       async
1631       bignum
1632       core
1633       core_kernel
1634       ppx_jane
1635     ];
1636   };
1638   regex_parser_intf = janePackage {
1639     pname = "regex_parser_intf";
1640     hash = "sha256-j6zWJf5c5qWphMqb9JpEAMGDDsrzV+NU2zrGmZHSAgk=";
1641     meta.description = "Interface shared by Re_parser and Re2.Parser";
1642     propagatedBuildInputs = [ base ];
1643   };
1645   resource_cache = janePackage {
1646     pname = "resource_cache";
1647     hash = "sha256-1WEjvdnl47rjCCMvGxqDKAb2ny6pJDlvDfZhKp+40Jg=";
1648     meta.description = "General resource cache";
1649     propagatedBuildInputs = [ async_rpc_kernel ];
1650   };
1652   semantic_version = janePackage {
1653     pname = "semantic_version";
1654     hash = "sha256-2Z2C+1bfI6W7Pw7SRYw8EkaVVwQkkm+knCrJIfsJhPE=";
1655     meta.description = "Semantic versioning";
1656     propagatedBuildInputs = [
1657       core
1658       ppx_jane
1659       re
1660     ];
1661   };
1663   sexp = janePackage {
1664     pname = "sexp";
1665     hash = "sha256-89SNb0MeJbetRRbA5qbBQPXIcLQ0QCeSf8p9v5yUTP0=";
1666     propagatedBuildInputs = [
1667       async
1668       core
1669       csvfields
1670       jsonaf
1671       re2
1672       sexp_diff
1673       sexp_macro
1674       sexp_pretty
1675       sexp_select
1676       shell
1677     ];
1678     meta.description = "S-expression swiss knife";
1679   };
1681   sexp_grammar = janePackage {
1682     pname = "sexp_grammar";
1683     hash = "sha256-yagp8bEZvc4joV81w56hAb17mUbnekuzECVcwLIvYoE=";
1684     propagatedBuildInputs = [
1685       core
1686       ppx_bin_prot
1687       ppx_compare
1688       ppx_hash
1689       ppx_let
1690       ppx_sexp_conv
1691       ppx_sexp_message
1692       zarith
1693     ];
1694     meta.description = "Helpers for manipulating [Sexplib.Sexp_grammar] values";
1695   };
1697   sexp_diff = janePackage {
1698     pname = "sexp_diff";
1699     hash = "sha256-0p1+jMa2b/GJu+JtN+XUuR04lFQchxMeu9ikfgErqMU=";
1700     propagatedBuildInputs = [ core_kernel ];
1701     meta.description = "Code for computing the diff of two sexps";
1702   };
1704   sexp_macro = janePackage {
1705     pname = "sexp_macro";
1706     hash = "sha256-KXJ+6uR38ywkr8uT8n2bWk10W7vW2ntMgxgF4ZvzzWU=";
1707     propagatedBuildInputs = [
1708       async
1709       sexplib
1710     ];
1711     meta.description = "Sexp macros";
1712   };
1714   sexp_pretty = janePackage {
1715     pname = "sexp_pretty";
1716     hash = "sha256-DcgLlwp3AMC1QzFYPzi7aHA+VhnhbG6p/fLDTMx8ATc=";
1717     meta.description = "S-expression pretty-printer";
1718     propagatedBuildInputs = [
1719       ppx_base
1720       re
1721       sexplib
1722     ];
1723   };
1725   sexp_select = janePackage {
1726     pname = "sexp_select";
1727     hash = "sha256-3AUFRtNe32TEB7lItcu7XlEv+3k+4QTitcTnT0kg28Y=";
1728     propagatedBuildInputs = [
1729       base
1730       core_kernel
1731       ppx_jane
1732     ];
1733     meta.description = "A library to use CSS-style selectors to traverse sexp trees";
1734   };
1736   sexplib0 = janePackage {
1737     pname = "sexplib0";
1738     hash = "sha256-Q53wEhRet/Ou9Kr0TZNTyXT5ASQpsVLPz5n/I+Fhy+g=";
1739     minimalOCamlVersion = "4.14.0";
1740     meta.description = "Library containing the definition of S-expressions and some base converters";
1741   };
1743   sexplib = janePackage {
1744     pname = "sexplib";
1745     hash = "sha256-DxTMAQbskZ87pMVQnxYc3opGGCzmUKGCZfszr/Z9TGA=";
1746     meta.description = "Library for serializing OCaml values to and from S-expressions";
1747     propagatedBuildInputs = [
1748       num
1749       parsexp
1750     ];
1751   };
1753   shell = janePackage {
1754     pname = "shell";
1755     hash = "sha256-MJerTFLGrUaR3y3mnKVrH5EQHYBXZyuVL+n2wJZ9HoU=";
1756     meta.description = "Yet another implementation of fork&exec and related functionality";
1757     buildInputs = [ jst-config ];
1758     propagatedBuildInputs = [ textutils ];
1759     checkInputs = [ ounit ];
1760   };
1762   shexp = janePackage {
1763     pname = "shexp";
1764     hash = "sha256-tf9HqZ01gMWxfcpe3Pl3rdPTPgIEdb59iwzwThznqAc=";
1765     propagatedBuildInputs = [
1766       posixat
1767       spawn
1768     ];
1769     meta.description = "Process library and s-expression based shell";
1770   };
1772   spawn = janePackage {
1773     pname = "spawn";
1774     minimalOCamlVersion = "4.05";
1775     version = "0.15.1";
1776     hash = "sha256-6vAkRjTZQGiPhYBWX4MBO3GxEDmAE+18vpMWXMcvWJk=";
1777     meta.description = "Spawning sub-processes";
1778     buildInputs = [ ppx_expect ];
1779   };
1781   splay_tree = janePackage {
1782     pname = "splay_tree";
1783     hash = "sha256-gRHRqUKjFEgkL1h8zSbqJkf+gHxhh61AtAT+mkPcz+k=";
1784     meta.description = "A splay tree implementation";
1785     propagatedBuildInputs = [ core_kernel ];
1786   };
1788   splittable_random = janePackage {
1789     pname = "splittable_random";
1790     hash = "sha256-LlaCxL17GBZc33spn/JnunpaMQ47n+RXS8CShBlaRWA=";
1791     meta.description = "PRNG that can be split into independent streams";
1792     propagatedBuildInputs = [
1793       base
1794       ppx_assert
1795       ppx_bench
1796       ppx_sexp_message
1797     ];
1798   };
1800   stdio = janePackage {
1801     pname = "stdio";
1802     hash = "sha256-N4VMUq6zWdYiJarVECSadxnoXJKh6AsIIaChmHFSbdA=";
1803     meta.description = "Standard IO library for OCaml";
1804     propagatedBuildInputs = [ base ];
1805   };
1807   stored_reversed = janePackage {
1808     pname = "stored_reversed";
1809     hash = "sha256-FPyQxXaGAzFWW6GiiqKQgU+6/lAZhEQwhNnXsmqKkzg=";
1810     meta.description = "A library for representing a list temporarily stored in reverse order";
1811     propagatedBuildInputs = [
1812       core
1813       ppx_jane
1814     ];
1815   };
1817   streamable = janePackage {
1818     pname = "streamable";
1819     hash = "sha256-FtrAX4nsacCO5HTVxwLgwwT8R2sASJ05qu4gT2ZVSDg=";
1820     meta.description = "A collection of types suitable for incremental serialization";
1821     propagatedBuildInputs = [
1822       async_kernel
1823       async_rpc_kernel
1824       base
1825       core
1826       core_kernel
1827       ppx_jane
1828       ppxlib
1829     ];
1830   };
1832   textutils = janePackage {
1833     pname = "textutils";
1834     hash = "sha256-J58sqp9fkx3JyjnH6oJLCyEC0ZvnuDfqLVl+dt3tEgA=";
1835     meta.description = "Text output utilities";
1836     propagatedBuildInputs = [
1837       core_unix
1838       textutils_kernel
1839     ];
1840   };
1842   textutils_kernel = janePackage {
1843     pname = "textutils_kernel";
1844     hash = "sha256-B5ExbKMRSw4RVJ908FVGob2soHFnJ6Ajsdn0q8lDhio=";
1845     meta.description = "Text output utilities";
1846     propagatedBuildInputs = [
1847       core
1848       ppx_jane
1849       uutf
1850     ];
1851   };
1853   tilde_f = janePackage {
1854     pname = "tilde_f";
1855     hash = "sha256-tuddvOmhk0fikB4dHNdXamBx6xfo4DCvivs44QXp5RQ=";
1856     meta.description = "Provides a let-syntax for continuation-passing style";
1857     propagatedBuildInputs = [
1858       base
1859       ppx_jane
1860     ];
1861   };
1863   time_now = janePackage {
1864     pname = "time_now";
1865     hash = "sha256-bTPWE9+x+zmdLdzLc1naDlRErPZ8m4WXDJL2iLErdqk=";
1866     meta.description = "Reports the current time";
1867     buildInputs = [
1868       jst-config
1869       ppx_optcomp
1870     ];
1871     propagatedBuildInputs = [
1872       jane-street-headers
1873       base
1874       ppx_base
1875     ];
1876   };
1878   timezone = janePackage {
1879     pname = "timezone";
1880     hash = "sha256-/6OLWMrkyQSVTNJ24zRy6v4DObt9q99s75QRS/VVxXE=";
1881     meta.description = "Time-zone handling";
1882     propagatedBuildInputs = [ core_kernel ];
1883   };
1885   topological_sort = janePackage {
1886     pname = "topological_sort";
1887     hash = "sha256-jLkJnh5lasrphI6BUKv7oVPrKyGqNm6VIGYthNs04iU=";
1888     meta.description = "Topological sort algorithm";
1889     propagatedBuildInputs = [
1890       ppx_jane
1891       stdio
1892     ];
1893   };
1895   typerep = janePackage {
1896     pname = "typerep";
1897     version = "0.17.1";
1898     hash = "sha256-hw03erwLx9IAbkBibyhZxofA5jIi12rFJOHNEVYpLSk=";
1899     meta.description = "Typerep is a library for runtime types";
1900     propagatedBuildInputs = [ base ];
1901   };
1903   uopt = janePackage {
1904     pname = "uopt";
1905     hash = "sha256-t0SFJVF0ScyFFwziBZOYCOsmhRd6J5H3s0Kk9NKorcM=";
1906     meta.description = "An [option]-like type that incurs no allocation";
1907     propagatedBuildInputs = [
1908       base
1909       ppx_jane
1910     ];
1911   };
1913   username_kernel = janePackage {
1914     pname = "username_kernel";
1915     hash = "sha256-1lxWSv7CbmucurNw8ws18N9DYqo4ik2KZBc5GtNmmeU=";
1916     meta.description = "An identifier for a user";
1917     propagatedBuildInputs = [
1918       core
1919       ppx_jane
1920     ];
1921   };
1923   variantslib = janePackage {
1924     pname = "variantslib";
1925     hash = "sha256-v/p718POQlFsB7N7WmMCDnmQDB2sP1263pSQIuvlLt8=";
1926     meta.description = "Part of Jane Street's Core library";
1927     propagatedBuildInputs = [ base ];
1928   };
1930   vcaml = janePackage {
1931     pname = "vcaml";
1932     hash = "sha256-z3v0Uqb+jE19+EN/b6qQvAx+FaK5HmbdHnxEkYGSmS8=";
1933     meta.description = "OCaml bindings for the Neovim API";
1934     propagatedBuildInputs = [
1935       angstrom-async
1936       async_extra
1937       base_trie
1938       expect_test_helpers_async
1939       faraday
1940       jsonaf
1941       man_in_the_middle_debugger
1942       semantic_version
1943     ];
1944     doCheck = false; # tests depend on nvim
1945   };
1947   versioned_polling_state_rpc = janePackage {
1948     pname = "versioned_polling_state_rpc";
1949     hash = "sha256-Ba+Pevc/cvvY9FnQ2oTUxTekxypVkEy4MfrpRKmJhZ0=";
1950     meta.description = "Helper functions for creating stable/versioned `Polling_state_rpc.t`s with babel";
1951     propagatedBuildInputs = [
1952       async_rpc_kernel
1953       babel
1954       core
1955       polling_state_rpc
1956       ppx_jane
1957     ];
1958   };
1960   virtual_dom = janePackage {
1961     pname = "virtual_dom";
1962     hash = "sha256-5T+/N1fELa1cR9mhWLUgS3Fwr1OQXJ3J6T3YaHT9q7U=";
1963     meta.description = "OCaml bindings for the virtual-dom library";
1964     buildInputs = [ js_of_ocaml-ppx ];
1965     propagatedBuildInputs = [
1966       base64
1967       core_kernel
1968       gen_js_api
1969       js_of_ocaml
1970       js_of_ocaml_patches
1971       lambdasoup
1972       tyxml
1973       uri
1974     ];
1975   };
1977   virtual_dom_toplayer = janePackage {
1978     pname = "virtual_dom_toplayer";
1979     hash = "sha256-trTSWzWsXkV4RtQvVCyXqJN5/wftaFuooaehNekP9H0=";
1980     meta.description = "OCaml bindings for the floating positioning library for 'toplevel' virtual dom components";
1981     propagatedBuildInputs = [
1982       core
1983       js_of_ocaml_patches
1984       ppx_css
1985       ppx_jane
1986       virtual_dom
1987       gen_js_api
1988       js_of_ocaml
1989       js_of_ocaml-ppx
1990     ];
1991   };
1993   zarith_stubs_js = janePackage {
1994     pname = "zarith_stubs_js";
1995     hash = "sha256-QNhs9rHZetwgKAOftgQQa6aU8cOux8JOe3dBRrLJVh0=";
1996     meta.description = "Javascripts stubs for the Zarith library";
1997     propagatedBuildInputs = [ ppx_jane ];
1998     doCheck = false; # some test sources unavailable
1999   };
2001   zstandard = janePackage {
2002     pname = "zstandard";
2003     hash = "sha256-EUI7fnN8ZaM1l0RBsgSAMWO+VXA8VoCv/lO5kcj+j4E=";
2004     meta.description = "OCaml bindings to Zstandard";
2005     buildInputs = [ ppx_jane ];
2006     propagatedBuildInputs = [
2007       core_kernel
2008       ctypes
2009       zstd
2010     ];
2011   };