nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 stdenv,
4 fetchurl,
5 ocaml,
6 version ? if lib.versionAtLeast ocaml.version "4.14" then "0.10.0" else "0.8.0",
7 topkg,
8 buildTopkgPackage,
9 cmdlinerSupport ? true,
10 cmdliner,
11 fmtSupport ? lib.versionAtLeast ocaml.version "4.08",
12 fmt,
13 jsooSupport ? true,
14 js_of_ocaml-compiler,
15 lwtSupport ? true,
16 lwt,
17}:
18let
19 param =
20 {
21 "0.8.0" = {
22 minimalOCamlVersion = "4.03";
23 hash = "sha256-mmFRQJX6QvMBIzJiO2yNYF1Ce+qQS2oNF3+OwziCNtg=";
24 };
25 "0.10.0" = {
26 minimalOCamlVersion = "4.14";
27 hash = "sha256-dg7CkcEo11t0gmCRM3dk+SW1ykFLAuLTNqCze/MN9Oo=";
28 };
29 }
30 .${version};
31
32 pname = "logs";
33 webpage = "https://erratique.ch/software/${pname}";
34
35 optional_deps = [
36 {
37 pkg = js_of_ocaml-compiler;
38 enable_flag = "--with-js_of_ocaml-compiler";
39 enabled = jsooSupport;
40 }
41 {
42 pkg = fmt;
43 enable_flag = "--with-fmt";
44 enabled = fmtSupport;
45 }
46 {
47 pkg = lwt;
48 enable_flag = "--with-lwt";
49 enabled = lwtSupport;
50 }
51 {
52 pkg = cmdliner;
53 enable_flag = "--with-cmdliner";
54 enabled = cmdlinerSupport;
55 }
56 ];
57 enable_flags = lib.concatMap (d: [
58 d.enable_flag
59 (lib.boolToString d.enabled)
60 ]) optional_deps;
61 optional_buildInputs = map (d: d.pkg) (lib.filter (d: d.enabled) optional_deps);
62in
63buildTopkgPackage {
64 inherit pname version;
65 inherit (param) minimalOCamlVersion;
66
67 src = fetchurl {
68 url = "${webpage}/releases/${pname}-${version}.tbz";
69 inherit (param) hash;
70 };
71
72 buildInputs = optional_buildInputs;
73
74 buildPhase = "${topkg.run} build ${lib.escapeShellArgs enable_flags}";
75
76 meta = {
77 description = "Logging infrastructure for OCaml";
78 homepage = webpage;
79 inherit (ocaml.meta) platforms;
80 maintainers = with lib.maintainers; [ sternenseemann ];
81 license = lib.licenses.isc;
82 };
83}