{ lib, stdenv, fetchurl, ocamlPackages, zlib, bzip2, ncurses, file, gd, libpng, libjpeg }: stdenv.mkDerivation ({ name = "mldonkey-3.1.6"; src = fetchurl { url = "https://github.com/ygrek/mldonkey/releases/download/release-3-1-6/mldonkey-3.1.6.tar.bz2"; sha256 = "0g84islkj72ymp0zzppcj9n4r21h0vlghnq87hv2wg580mybadhv"; }; preConfigure = lib.optionalString (ocamlPackages.camlp4 != null) '' substituteInPlace Makefile --replace '+camlp4' \ '${ocamlPackages.camlp4}/lib/ocaml/${ocamlPackages.ocaml.version}/site-lib/camlp4' ''; buildInputs = [ zlib ncurses bzip2 file gd libpng libjpeg ] ++ (with ocamlPackages; [ ocaml camlp4 ]); configureFlags = [ "--disable-gui" ]; meta = { description = "Client for many p2p networks, with multiple frontends"; homepage = "http://mldonkey.sourceforge.net/"; license = lib.licenses.gpl2; platforms = lib.platforms.unix; }; } // (if !ocamlPackages.ocaml.nativeCompilers then { # Byte code compilation (the ocaml opt compiler is not supported in some platforms) buildPhase = "make mlnet.byte"; installPhase = '' mkdir -p $out/bin cp mlnet.byte $out/bin/mlnet ''; # ocaml bytecode selfcontained binaries loose the bytecode if stripped dontStrip = true; } else {}))