Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / top-level / beam-packages.nix
blobff9d1f62ab1f30c29a2e2db8ccb6a8cfa74612ee
1 { lib
2 , beam
3 , callPackage
4 , wxGTK32
5 , buildPackages
6 , stdenv
7 , wxSupport ? true
8 , systemd
9 , systemdSupport ? lib.meta.availableOn stdenv.hostPlatform systemd
12 let
13   self = beam;
15   # Aliases added 2023-03-21
16   versionLoop = f: lib.lists.foldr (version: acc: (f version) // acc) { } [ "26" "25" "24" "23" ];
18   interpretersAliases = versionLoop (version: {
19     "erlangR${version}" = self.interpreters."erlang_${version}";
20     "erlangR${version}_odbc" = self.interpreters."erlang_${version}_odbc";
21     "erlangR${version}_javac" = self.interpreters."erlang_${version}_javac";
22     "erlangR${version}_odbc_javac" = self.interpreters."erlang_${version}_odbc_javac";
23   });
25   packagesAliases = versionLoop (version: { "erlangR${version}" = self.packages."erlang_${version}"; });
30   beamLib = callPackage ../development/beam-modules/lib.nix { };
32   latestVersion = "erlang_25";
34   # Each
35   interpreters = {
37     erlang = self.interpreters.${self.latestVersion};
38     erlang_odbc = self.interpreters."${self.latestVersion}_odbc";
39     erlang_javac = self.interpreters."${self.latestVersion}_javac";
40     erlang_odbc_javac = self.interpreters."${self.latestVersion}_odbc_javac";
42     # Standard Erlang versions, using the generic builder.
44     erlang_26 = self.beamLib.callErlang ../development/interpreters/erlang/26.nix {
45       wxGTK = wxGTK32;
46       parallelBuild = true;
47       autoconf = buildPackages.autoconf269;
48       inherit wxSupport systemdSupport;
49     };
50     erlang_26_odbc = self.interpreters.erlang_26.override { odbcSupport = true; };
51     erlang_26_javac = self.interpreters.erlang_26.override { javacSupport = true; };
52     erlang_26_odbc_javac = self.interpreters.erlang_26.override {
53       javacSupport = true;
54       odbcSupport = true;
55     };
57     erlang_25 = self.beamLib.callErlang ../development/interpreters/erlang/25.nix {
58       wxGTK = wxGTK32;
59       parallelBuild = true;
60       autoconf = buildPackages.autoconf269;
61       inherit wxSupport systemdSupport;
62     };
63     erlang_25_odbc = self.interpreters.erlang_25.override { odbcSupport = true; };
64     erlang_25_javac = self.interpreters.erlang_25.override { javacSupport = true; };
65     erlang_25_odbc_javac = self.interpreters.erlang_25.override {
66       javacSupport = true;
67       odbcSupport = true;
68     };
70     erlang_24 = self.beamLib.callErlang ../development/interpreters/erlang/24.nix {
71       wxGTK = wxGTK32;
72       # Can be enabled since the bug has been fixed in https://github.com/erlang/otp/pull/2508
73       parallelBuild = true;
74       autoconf = buildPackages.autoconf269;
75       inherit wxSupport systemdSupport;
76     };
77     erlang_24_odbc = self.interpreters.erlang_24.override { odbcSupport = true; };
78     erlang_24_javac = self.interpreters.erlang_24.override { javacSupport = true; };
79     erlang_24_odbc_javac = self.interpreters.erlang_24.override {
80       javacSupport = true;
81       odbcSupport = true;
82     };
84     # Other Beam languages. These are built with `beam.interpreters.erlang`. To
85     # access for example elixir built with different version of Erlang, use
86     # `beam.packages.erlang_24.elixir`.
87     inherit (self.packages.erlang)
88       elixir elixir_1_15 elixir_1_14 elixir_1_13 elixir_1_12 elixir_1_11 elixir_1_10 elixir-ls lfe lfe_2_1;
89   } // interpretersAliases;
91   # Helper function to generate package set with a specific Erlang version.
92   packagesWith = erlang:
93     callPackage ../development/beam-modules { inherit erlang; };
95   # Each field in this tuple represents all Beam packages in nixpkgs built with
96   # appropriate Erlang/OTP version.
97   packages = {
98     erlang = self.packages.${self.latestVersion};
100     erlang_26 = self.packagesWith self.interpreters.erlang_26;
101     erlang_25 = self.packagesWith self.interpreters.erlang_25;
102     erlang_24 = self.packagesWith self.interpreters.erlang_24;
103   } // packagesAliases;