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