summary refs log tree commit diff
path: root/pkgs/development/ocaml-modules/tcpip/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/ocaml-modules/tcpip/default.nix')
-rw-r--r--pkgs/development/ocaml-modules/tcpip/default.nix76
1 files changed, 76 insertions, 0 deletions
diff --git a/pkgs/development/ocaml-modules/tcpip/default.nix b/pkgs/development/ocaml-modules/tcpip/default.nix
new file mode 100644
index 00000000000..ad12cb42d5e
--- /dev/null
+++ b/pkgs/development/ocaml-modules/tcpip/default.nix
@@ -0,0 +1,76 @@
+{ lib, buildDunePackage, fetchurl
+, bisect_ppx, ppx_cstruct, pkg-config
+, rresult, cstruct, cstruct-lwt, mirage-net, mirage-clock
+, mirage-random, mirage-stack, mirage-protocols, mirage-time
+, ipaddr, macaddr, macaddr-cstruct, mirage-profile, fmt
+, lwt, lwt-dllist, logs, duration, randomconv, ethernet
+, alcotest, mirage-flow, mirage-vnetif, pcap-format
+, mirage-clock-unix, arp, ipaddr-cstruct, mirage-random-test
+, lru, metrics
+, withFreestanding ? false
+, ocaml-freestanding
+}:
+
+buildDunePackage rec {
+  pname = "tcpip";
+  version = "7.0.1";
+
+  useDune2 = true;
+
+  src = fetchurl {
+    url = "https://github.com/mirage/mirage-${pname}/releases/download/v${version}/${pname}-${version}.tbz";
+    sha256 = "0gqj2s9sk3a7f4yavx423a569fvxsrgm0wg58biiv16v37xjaymp";
+  };
+
+  nativeBuildInputs = [
+    bisect_ppx
+    ppx_cstruct
+    pkg-config
+  ];
+
+  propagatedBuildInputs = [
+    rresult
+    cstruct
+    cstruct-lwt
+    mirage-net
+    mirage-clock
+    mirage-random
+    mirage-random-test
+    mirage-stack
+    mirage-protocols
+    mirage-time
+    ipaddr
+    macaddr
+    macaddr-cstruct
+    mirage-profile
+    fmt
+    lwt
+    lwt-dllist
+    logs
+    duration
+    randomconv
+    ethernet
+    lru
+    metrics
+    arp
+  ] ++ lib.optionals withFreestanding [
+    ocaml-freestanding
+  ];
+
+  doCheck = false;
+  checkInputs = [
+    alcotest
+    mirage-flow
+    mirage-vnetif
+    pcap-format
+    mirage-clock-unix
+    ipaddr-cstruct
+  ];
+
+  meta = with lib; {
+    description = "OCaml TCP/IP networking stack, used in MirageOS";
+    homepage = "https://github.com/mirage/mirage-tcpip";
+    maintainers = [ maintainers.sternenseemann ];
+    license = licenses.isc;
+  };
+}