Files
nixpkgs/pkgs/top-level/beam-packages.nix
2025-10-20 21:08:37 -04:00

76 lines
1.9 KiB
Nix

{
lib,
beam,
callPackage,
stdenv,
wxSupport ? true,
systemd,
systemdSupport ? lib.meta.availableOn stdenv.hostPlatform systemd,
__splicedPackages,
}:
let
self = beam;
pkgs = __splicedPackages;
callErlang =
drv: args:
let
genericBuilder =
versionArgs: import ../development/interpreters/erlang/generic-builder.nix (versionArgs // args);
in
pkgs.callPackage (import drv genericBuilder) { };
in
{
latestVersion = "erlang_28";
# Each
interpreters = {
erlang = self.interpreters.${self.latestVersion};
# Standard Erlang versions, using the generic builder.
#
# Three versions are supported according to https://github.com/erlang/otp/security
erlang_28 = callErlang ../development/interpreters/erlang/28.nix {
inherit wxSupport systemdSupport;
};
erlang_27 = callErlang ../development/interpreters/erlang/27.nix {
inherit wxSupport systemdSupport;
};
erlang_26 = callErlang ../development/interpreters/erlang/26.nix {
inherit wxSupport systemdSupport;
};
# Other Beam languages. These are built with `beam.interpreters.erlang`. To
# access for example elixir built with different version of Erlang, use
# `beam.packages.erlang_27.elixir`.
inherit (self.packages.erlang)
elixir
elixir_1_19
elixir_1_18
elixir_1_17
elixir_1_16
elixir_1_15
elixir-ls
lfe
;
};
# Helper function to generate package set with a specific Erlang version.
packagesWith = erlang: callPackage ../development/beam-modules { inherit erlang; };
# Each field in this tuple represents all Beam packages in nixpkgs built with
# appropriate Erlang/OTP version.
packages = {
erlang = self.packages.${self.latestVersion};
erlang_28 = self.packagesWith self.interpreters.erlang_28;
erlang_27 = self.packagesWith self.interpreters.erlang_27;
erlang_26 = self.packagesWith self.interpreters.erlang_26;
};
}