Something went wrong. Try again.
What happens if I push all of nixpkgs
Something went wrong. Try again.
3.0 kB · 133 lines
Nix
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134{ config, lib, fetchFromGitHub, erlang, makeWrapper, coreutils, bash, buildRebar3, buildHex,}:
{ baseName ? "lfe", version, maximumOTPVersion, sha256 ? "", hash ? "", rev ? version, src ? fetchFromGitHub { inherit hash rev sha256; owner = "lfe"; repo = "lfe"; }, patches ? [ ],}:
let inherit (lib) assertMsg makeBinPath optionalString getVersion versionAtLeast versionOlder versions ;
mainVersion = versions.major (getVersion erlang);
maxAssert = versionAtLeast maximumOTPVersion mainVersion;
proper = buildHex { name = "proper"; version = "1.4.0";
sha256 = "sha256-GChYQhhb0z772pfRNKXLWgiEOE2zYRn+4OPPpIhWjLs="; };
inif !config.allowAliases && !maxAssert then # Don't throw without aliases to not break CI. nullelse assert assertMsg maxAssert '' LFE ${version} is supported on OTP <=${maximumOTPVersion}, not ${mainVersion}. ''; buildRebar3 { name = baseName;
inherit src version;
nativeBuildInputs = [ makeWrapper erlang ]; beamDeps = [ proper ]; patches = [ ./fix-rebar-config.patch ./dedup-ebins.patch ] ++ patches; doCheck = true; checkTarget = "travis";
makeFlags = [ "-e" "MANDB=''" "PREFIX=$$out" ];
# These installPhase tricks are based on Elixir's Makefile. # TODO: Make, upload, and apply a patch. installPhase = optionalString (versionOlder version "1.3") '' local libdir=$out/lib/lfe local ebindir=$libdir/ebin local bindir=$libdir/bin
rm -Rf $ebindir install -m755 -d $ebindir install -m644 _build/default/lib/lfe/ebin/* $ebindir
install -m755 -d $bindir
for bin in bin/lfe{,c,doc,script}; do install -m755 $bin $bindir; done
install -m755 -d $out/bin for file in $bindir/*; do ln -sf $file $out/bin/; done '';
# Thanks again, Elixir. postFixup = '' # LFE binaries are shell scripts which run erl and lfe. # Add some stuff to PATH so the scripts can run without problems. for f in $out/bin/*; do wrapProgram $f \ --prefix PATH ":" "${ makeBinPath [ erlang coreutils bash ] }:$out/bin" substituteInPlace $f --replace "/usr/bin/env" "${coreutils}/bin/env" done '';
meta = with lib; { description = "Best of Erlang and of Lisp; at the same time"; longDescription = '' LFE, Lisp Flavoured Erlang, is a lisp syntax front-end to the Erlang compiler. Code produced with it is compatible with "normal" Erlang code. An LFE evaluator and shell is also included. '';
homepage = "https://lfe.io"; downloadPage = "https://github.com/rvirding/lfe/releases";
license = licenses.asl20; teams = [ teams.beam ]; platforms = platforms.unix; }; }