open Mirage let pgx_setup = runtime_arg ~pos:__POS__ "Unikernel.pgx_setup" let packages = [ package ~min:"0.0.9" "mimic-happy-eyeballs"; package ~min:"0.13.0" "h2"; package "logs"; package "mirage-logs"; ] @ (* TODO pin caqti *) [ package "caqti"; package "caqti-tls"; package "caqti-driver-pgx"; package "caqti-mirage"; package "caqti-lwt"; package "dns-client-mirage"; ] let mte = main "Unikernel.Make" ~local_libs:[ "mte" ] ~packages ~runtime_args:[ pgx_setup ] (kv_ro @-> kv_ro @-> kv_ro @-> tcpv4v6 @-> http_server @-> stackv4v6 @-> dns_client @-> job) let stackv4v6 = generic_stackv4v6 default_network let tcpv4v6 = tcpv4v6_of_stackv4v6 stackv4v6 let happy_eyeballs = generic_happy_eyeballs stackv4v6 let dns = generic_dns_client stackv4v6 happy_eyeballs let certificates = crunch "../data/tls/certificates" let keys = crunch "../data/tls/keys" let assets = crunch "../data/assets" let port = Runtime_arg.create ~pos:__POS__ "Unikernel.port" let http_server = paf_server ~port tcpv4v6 let () = register "mte" [ mte $ assets $ certificates $ keys $ tcpv4v6 $ http_server $ stackv4v6 $ dns; ]