about summary refs log tree commit diff
path: root/pkgs/development/ocaml-modules/ppxlib/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/ocaml-modules/ppxlib/default.nix')
-rw-r--r--pkgs/development/ocaml-modules/ppxlib/default.nix29
1 files changed, 18 insertions, 11 deletions
diff --git a/pkgs/development/ocaml-modules/ppxlib/default.nix b/pkgs/development/ocaml-modules/ppxlib/default.nix
index bbaf9e27cf4de..8821e56212958 100644
--- a/pkgs/development/ocaml-modules/ppxlib/default.nix
+++ b/pkgs/development/ocaml-modules/ppxlib/default.nix
@@ -1,23 +1,30 @@
-{ stdenv, fetchFromGitHub, buildDunePackage
-, version ? "0.8.1"
+{ lib, fetchFromGitHub, buildDunePackage, ocaml
+, legacy ? false
 , ocaml-compiler-libs, ocaml-migrate-parsetree, ppx_derivers, stdio
 }:
 
-let sha256 =
-  { "0.8.1" = "0vm0jajmg8135scbg0x60ivyy5gzv4abwnl7zls2mrw23ac6kml6";
-    "0.12.0" = "1cg0is23c05k1rc94zcdz452p9zn11dpqxm1pnifwx5iygz3w0a1";
-  }."${version}"
-; in
+let param =
+  if legacy then {
+    version = "0.8.1";
+    sha256 = "0vm0jajmg8135scbg0x60ivyy5gzv4abwnl7zls2mrw23ac6kml6";
+  } else {
+    version = "0.12.0";
+    sha256 = "1cg0is23c05k1rc94zcdz452p9zn11dpqxm1pnifwx5iygz3w0a1";
+  }; in
+
+if lib.versionAtLeast ocaml.version "4.10" && legacy
+then throw "ppxlib-${param.version} is not available for OCaml ${ocaml.version}"
+else
 
 buildDunePackage rec {
   pname = "ppxlib";
-  inherit version;
+  inherit (param) version;
 
   src = fetchFromGitHub {
     owner = "ocaml-ppx";
     repo = pname;
     rev = version;
-    inherit sha256;
+    inherit (param) sha256;
   };
 
   propagatedBuildInputs = [
@@ -26,8 +33,8 @@ buildDunePackage rec {
 
   meta = {
     description = "Comprehensive ppx tool set";
-    license = stdenv.lib.licenses.mit;
-    maintainers = [ stdenv.lib.maintainers.vbgl ];
+    license = lib.licenses.mit;
+    maintainers = [ lib.maintainers.vbgl ];
     inherit (src.meta) homepage;
   };
 }