This change introduces a fixpoint, which allows to do deep override when
building packages defined in pkgs/development/beam-modules/default.hex.
This allows to provide beam.packages.erlang{,R16,R17,R18,R19} which
contains the same packages built with different Erlang/OTP versions.
Top-level attribute beamPackages points at beam.packages.erlangR18, the
same applies to other top-level Erlang packages.
TODO:
- beam.packages.erlang{R16,R17} is almost useless, since rebar/rebar3
does not build using these versions;
- all packages in beam.packages which use buildMix are actually built
with erlangR18;
- update documentation.
Building Hex packages is a superset of building with rebar3. There is no
need to force folks that use rebar3 but not hex to build with hex. This
commit seperates the rebar3 specific bits and the hex specific bits into
seperate functions that can be used independently.
This adds erlangPackages.${name}.env, which is usable to launch a shell
with the package and it's dependencies like this:
nix-shell -A erlangPackages.lager.env
This required:
1) refactoring buildHex to become a fixed-point function,
2) moves output of a package into $out/${name},
3) introduces erlEnv (buildEnv, which links in package and it's deps
into one directory - a super-simple plagiarization of
haskellPackages.compiler.ghcWithPackages) and
4) shell function producing a un-buildable derivation to be used by
nix-shell
This allows to avoid fetching registry file from S3 at build time,
making the build hermetic and much faster. Automatic tools will be used
to update said external repo content when Hex packages are
imported/update.
There are some packages on Hex which have custom hex-specific names, but
inside there's a base project name.
Remove most packages andadd ibrowse, meck, jiffy