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