Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{ lib, buildDunePackage, fetchurl
2, ppx_cstruct, pkg-config
3, cstruct, cstruct-lwt, mirage-net, mirage-clock
4, mirage-random, mirage-time
5, ipaddr, macaddr, macaddr-cstruct, mirage-profile, fmt
6, lwt, lwt-dllist, logs, duration, randomconv, ethernet
7, alcotest, mirage-flow, mirage-vnetif, pcap-format
8, mirage-clock-unix, arp, ipaddr-cstruct, mirage-random-test
9, lru, metrics
10, withFreestanding ? false
11, ocaml-freestanding
12}:
13
14buildDunePackage rec {
15 pname = "tcpip";
16 version = "7.1.2";
17
18 duneVersion = "3";
19
20 src = fetchurl {
21 url = "https://github.com/mirage/mirage-${pname}/releases/download/v${version}/${pname}-${version}.tbz";
22 hash = "sha256-lraur6NfFD9yddG+y21jlHKt82gLgYBBbedltlgcRm0=";
23 };
24
25 nativeBuildInputs = [
26 pkg-config
27 ];
28
29 propagatedBuildInputs = [
30 ppx_cstruct
31 cstruct
32 cstruct-lwt
33 mirage-net
34 mirage-clock
35 mirage-random
36 mirage-time
37 ipaddr
38 macaddr
39 macaddr-cstruct
40 mirage-profile
41 fmt
42 lwt
43 lwt-dllist
44 logs
45 duration
46 randomconv
47 ethernet
48 lru
49 metrics
50 arp
51 mirage-flow
52 ] ++ lib.optionals withFreestanding [
53 ocaml-freestanding
54 ];
55
56 doCheck = true;
57 checkInputs = [
58 alcotest
59 mirage-random-test
60 mirage-flow
61 mirage-vnetif
62 pcap-format
63 mirage-clock-unix
64 ipaddr-cstruct
65 ];
66 __darwinAllowLocalNetworking = true;
67
68 meta = with lib; {
69 description = "OCaml TCP/IP networking stack, used in MirageOS";
70 homepage = "https://github.com/mirage/mirage-tcpip";
71 maintainers = [ maintainers.sternenseemann ];
72 license = licenses.isc;
73 };
74}