1{
2 lib,
3 beam,
4 callPackage,
5 wxGTK32,
6 stdenv,
7 wxSupport ? true,
8 systemd,
9 systemdSupport ? lib.meta.availableOn stdenv.hostPlatform systemd,
10}:
11
12let
13 self = beam;
14
15in
16
17{
18 beamLib = callPackage ../development/beam-modules/lib.nix { };
19
20 latestVersion = "erlang_27";
21
22 # Each
23 interpreters = {
24
25 erlang = self.interpreters.${self.latestVersion};
26
27 # Standard Erlang versions, using the generic builder.
28 #
29 # Three versions are supported according to https://github.com/erlang/otp/security
30
31 erlang_28 = self.beamLib.callErlang ../development/interpreters/erlang/28.nix {
32 wxGTK = wxGTK32;
33 parallelBuild = true;
34 inherit wxSupport systemdSupport;
35 };
36
37 erlang_27 = self.beamLib.callErlang ../development/interpreters/erlang/27.nix {
38 wxGTK = wxGTK32;
39 parallelBuild = true;
40 inherit wxSupport systemdSupport;
41 };
42
43 erlang_26 = self.beamLib.callErlang ../development/interpreters/erlang/26.nix {
44 wxGTK = wxGTK32;
45 parallelBuild = true;
46 inherit wxSupport systemdSupport;
47 };
48
49 # Other Beam languages. These are built with `beam.interpreters.erlang`. To
50 # access for example elixir built with different version of Erlang, use
51 # `beam.packages.erlang_27.elixir`.
52 inherit (self.packages.erlang)
53 elixir
54 elixir_1_19
55 elixir_1_18
56 elixir_1_17
57 elixir_1_16
58 elixir_1_15
59 elixir_1_14
60 elixir-ls
61 lfe
62 lfe_2_1
63 ;
64 };
65
66 # Helper function to generate package set with a specific Erlang version.
67 packagesWith = erlang: callPackage ../development/beam-modules { inherit erlang; };
68
69 # Each field in this tuple represents all Beam packages in nixpkgs built with
70 # appropriate Erlang/OTP version.
71 packages = {
72 erlang = self.packages.${self.latestVersion};
73 erlang_28 = self.packagesWith self.interpreters.erlang_28;
74 erlang_27 = self.packagesWith self.interpreters.erlang_27;
75 erlang_26 = self.packagesWith self.interpreters.erlang_26;
76 };
77}