Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at litex 77 lines 2.0 kB view raw
1{ lib, stdenv, fetchFromGitHub, buildDunePackage, ocaml, findlib, cppo }: 2 3let param = 4 let v6_6 = { 5 version = "6.6"; 6 sha256 = "sha256-QhuaQ9346a3neoRM4GrOVzjR8fg9ysMZR1VzNgyIQtc="; 7 nativeBuildInputs = [cppo]; 8 buildInputs = [cppo]; 9 }; in 10{ 11 "4.02" = { 12 version = "5.0+4.02.0"; 13 sha256 = "16drjk0qafjls8blng69qiv35a84wlafpk16grrg2i3x19p8dlj8"; }; 14 "4.03" = { 15 version = "5.0+4.03.0"; 16 sha256 = "061v1fl5z7z3ywi4ppryrlcywnvnqbsw83ppq72qmkc7ma4603jg"; }; 17 "4.04" = { 18 version = "unstable-20161114"; 19 rev = "49c08e2e4ea8fef88692cd1dcc1b38a9133f17ac"; 20 sha256 = "0ywzfkf5brj33nwh49k9if8x8v433ral25f3nbklfc9vqr06zrfl"; }; 21 "4.05" = { 22 version = "5.0+4.05.0"; 23 sha256 = "1jvvhk6wnkvm7b9zph309ihsc0hyxfpahmxxrq19vx8c674jsdm4"; }; 24 "4.06" = { 25 version = "5.1+4.06.0"; 26 sha256 = "1ww4cspdpgjjsgiv71s0im5yjkr3544x96wsq1vpdacq7dr7zwiw"; }; 27 "4.07" = { 28 version = "5.1+4.06.0"; 29 sha256 = "1ww4cspdpgjjsgiv71s0im5yjkr3544x96wsq1vpdacq7dr7zwiw"; }; 30 "4.08" = v6_6; 31 "4.09" = v6_6; 32 "4.10" = v6_6; 33 "4.11" = v6_6; 34 "4.12" = v6_6; 35 "4.13" = v6_6; 36 "4.14" = v6_6; 37 "5.0" = v6_6; 38}.${ocaml.meta.branch}; 39in 40 41let src = fetchFromGitHub { 42 owner = "alainfrisch"; 43 repo = pname; 44 rev = param.rev or param.version; 45 inherit (param) sha256; 46 }; 47 pname = "ppx_tools"; 48 meta = with lib; { 49 description = "Tools for authors of ppx rewriters"; 50 homepage = "https://www.lexifi.com/ppx_tools"; 51 license = licenses.mit; 52 maintainers = with maintainers; [ vbgl ]; 53 }; 54in 55if lib.versionAtLeast param.version "6.0" 56then 57 buildDunePackage { 58 inherit pname src meta; 59 inherit (param) version buildInputs nativeBuildInputs; 60 duneVersion = "3"; 61 } 62else 63 stdenv.mkDerivation { 64 name = "ocaml${ocaml.version}-${pname}-${param.version}"; 65 66 inherit src; 67 68 nativeBuildInputs = [ ocaml findlib ]; 69 70 strictDeps = true; 71 72 createFindlibDestdir = true; 73 74 dontStrip = true; 75 76 meta = meta // { inherit (ocaml.meta) platforms; }; 77 }