{ lib, stdenv, fetchurl, fetchpatch, makeWrapper, eprover, ocaml, camlp4, perl, zlib }: stdenv.mkDerivation rec { pname = "leo2"; version = "1.7.0"; src = fetchurl { url = "https://page.mi.fu-berlin.de/cbenzmueller/leo/leo2_v${version}.tgz"; sha256 = "sha256:1b2q7vsz6s9ighypsigqjm1mzjiq3xgnz5id5ssb4rh9zm190r82"; }; strictDeps = true; nativeBuildInputs = [ makeWrapper eprover ocaml camlp4 perl ]; buildInputs = [ zlib ]; patches = [ (fetchpatch { url = "https://github.com/niklasso/minisat/commit/7eb6015313561a2586032574788fcb133eeaa19f.patch"; stripLen = 1; extraPrefix = "lib/"; sha256 = "sha256:01ln7hi6nvvkqkhn9hciqizizz5qspvqffgksvgmzn9x7kdd9pnh"; }) ]; preConfigure = '' cd src patchShebangs configure substituteInPlace Makefile.pre \ --replace '+camlp4' "${camlp4}/lib/ocaml/${ocaml.version}/site-lib/camlp4" ''; buildFlags = [ "opt" ]; env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang "-Wno-reserved-user-defined-literal"; preInstall = "mkdir -p $out/bin"; postInstall = '' mkdir -p "$out/etc" echo -e "e = ${eprover}/bin/eprover\\nepclextract = ${eprover}/bin/epclextract" > "$out/etc/leoatprc" wrapProgram $out/bin/leo \ --add-flags "--atprc $out/etc/leoatprc" ''; meta = with lib; { description = "High-performance typed higher order prover"; mainProgram = "leo"; maintainers = [ maintainers.raskin ]; platforms = platforms.unix; license = licenses.bsd3; homepage = "http://www.leoprover.org/"; }; }