Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / development / beam-modules / lib.nix
blob2d93b28cda6ba1b22897581feb9e759f3ffc56f3
1 { __splicedPackages, lib }:
3 let
4   pkgs = __splicedPackages;
5 in
6 rec {
8   /* Similar to callPackageWith/callPackage, but without makeOverridable
9   */
10   callPackageWith = autoArgs: fn: args:
11     let
12       f = if pkgs.lib.isFunction fn then fn else import fn;
13       auto = builtins.intersectAttrs (lib.functionArgs f) autoArgs;
14     in f (auto // args);
16   callPackage = callPackageWith pkgs;
18   /* Uses generic-builder to evaluate provided drv containing OTP-version
19   specific data.
21   drv: package containing version-specific args;
22   builder: generic builder for all Erlang versions;
23   args: arguments merged into version-specific args, used mostly to customize
24         dependencies;
26   Arguments passed to the generic-builder are overridable, used to
27   enable/disable high-level OTP features, like ODBC or WX support;
29   Please note that "mkDerivation" defined here is the one called from R16.nix
30   and similar files.
31   */
32   callErlang = drv: args:
33     let
34       builder = callPackage ../../development/interpreters/erlang/generic-builder.nix args;
35     in
36       callPackage drv {
37         mkDerivation = pkgs.makeOverridable builder;
38       };
40   /* Uses generic-builder to evaluate provided drv containing Elixir version
41   specific data.
43   drv: package containing version-specific args;
44   builder: generic builder for all Erlang versions;
45   args: arguments merged into version-specific args, used mostly to customize
46         dependencies;
48   Arguments passed to the generic-builder are overridable.
50   Please note that "mkDerivation" defined here is the one called from 1.4.nix
51   and similar files.
52   */
53   callElixir = drv: args:
54     let
55       builder = callPackage ../interpreters/elixir/generic-builder.nix args;
56     in
57       callPackage drv {
58         mkDerivation = pkgs.makeOverridable builder;
59       };
61   /* Uses generic-builder to evaluate provided drv containing Elixir version
62   specific data.
64   drv: package containing version-specific args;
65   builder: generic builder for all Erlang versions;
66   args: arguments merged into version-specific args, used mostly to customize
67         dependencies;
69   Arguments passed to the generic-builder are overridable.
71   Please note that "mkDerivation" defined here is the one called from 1.2.nix
72   and similar files.
73   */
74   callLFE = drv: args:
75     let
76       builder = callPackage ../interpreters/lfe/generic-builder.nix args;
77     in
78       callPackage drv {
79         mkDerivation = pkgs.makeOverridable builder;
80       };