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}