1{ lib, stdenv, fetchFromGitHub, writeText, elixir }:
2
3let
4 shell = drv: stdenv.mkDerivation {
5 name = "interactive-shell-${drv.name}";
6 buildInputs = [ drv ];
7 };
8
9 pkg = self: stdenv.mkDerivation rec {
10 pname = "hex";
11 version = "2.0.6";
12
13 src = fetchFromGitHub {
14 owner = "hexpm";
15 repo = "hex";
16 rev = "v${version}";
17 sha256 = "sha256-fSADQDrqh5U/TdhaHXsMiLMk1wtQ0gEiTqEclJ2w2nY=";
18 };
19
20 setupHook = writeText "setupHook.sh" ''
21 addToSearchPath ERL_LIBS "$1/lib/erlang/lib/"
22 '';
23
24 dontStrip = true;
25
26 buildInputs = [ elixir ];
27
28 buildPhase = ''
29 runHook preBuild
30 export HEX_OFFLINE=1
31 export HEX_HOME=./
32 export MIX_ENV=prod
33 mix compile
34 runHook postBuild
35 '';
36
37 installPhase = ''
38 runHook preInstall
39
40 mkdir -p $out/lib/erlang/lib
41 cp -r ./_build/prod/lib/hex $out/lib/erlang/lib/
42
43 runHook postInstall
44 '';
45
46 meta = {
47 description = "Package manager for the Erlang VM https://hex.pm";
48 license = lib.licenses.mit;
49 homepage = "https://github.com/hexpm/hex";
50 maintainers = with lib.maintainers; [ ericbmerritt ];
51 };
52
53 passthru = {
54 env = shell self;
55 };
56};
57in lib.fix pkg