1{ __splicedPackages, lib }:
2
3let
4 pkgs = __splicedPackages;
5in
6rec {
7
8 # Similar to callPackageWith/callPackage, but without makeOverridable
9 callPackageWith =
10 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
15 f (auto // args);
16
17 callPackage = callPackageWith pkgs;
18
19 /*
20 Uses generic-builder to evaluate provided drv containing OTP-version
21 specific data.
22
23 drv: package containing version-specific args;
24 builder: generic builder for all Erlang versions;
25 args: arguments merged into version-specific args, used mostly to customize
26 dependencies;
27
28 Arguments passed to the generic-builder are overridable, used to
29 enable/disable high-level OTP features, like ODBC or WX support;
30
31 Please note that "mkDerivation" defined here is the one called from R16.nix
32 and similar files.
33 */
34 callErlang =
35 drv: args:
36 let
37 builder = callPackage ../../development/interpreters/erlang/generic-builder.nix args;
38 in
39 callPackage drv {
40 mkDerivation = pkgs.makeOverridable builder;
41 };
42
43 /*
44 Uses generic-builder to evaluate provided drv containing Elixir version
45 specific data.
46
47 drv: package containing version-specific args;
48 builder: generic builder for all Erlang versions;
49 args: arguments merged into version-specific args, used mostly to customize
50 dependencies;
51
52 Arguments passed to the generic-builder are overridable.
53
54 Please note that "mkDerivation" defined here is the one called from 1.4.nix
55 and similar files.
56 */
57 callElixir =
58 drv: args:
59 let
60 builder = callPackage ../interpreters/elixir/generic-builder.nix args;
61 in
62 callPackage drv {
63 mkDerivation = pkgs.makeOverridable builder;
64 };
65
66 /*
67 Uses generic-builder to evaluate provided drv containing Elixir version
68 specific data.
69
70 drv: package containing version-specific args;
71 builder: generic builder for all Erlang versions;
72 args: arguments merged into version-specific args, used mostly to customize
73 dependencies;
74
75 Arguments passed to the generic-builder are overridable.
76
77 Please note that "mkDerivation" defined here is the one called from 1.2.nix
78 and similar files.
79 */
80 callLFE =
81 drv: args:
82 let
83 builder = callPackage ../interpreters/lfe/generic-builder.nix args;
84 in
85 callPackage drv {
86 mkDerivation = pkgs.makeOverridable builder;
87 };
88
89}