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