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}