about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/beam-modules/lib.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/beam-modules/lib.nix')
-rw-r--r--nixpkgs/pkgs/development/beam-modules/lib.nix79
1 files changed, 79 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/beam-modules/lib.nix b/nixpkgs/pkgs/development/beam-modules/lib.nix
new file mode 100644
index 000000000000..db40c47794fa
--- /dev/null
+++ b/nixpkgs/pkgs/development/beam-modules/lib.nix
@@ -0,0 +1,79 @@
+{ pkgs, stdenv }:
+
+rec {
+
+  /* Similar to callPackageWith/callPackage, but without makeOverridable
+  */
+  callPackageWith = autoArgs: fn: args:
+    let
+      f = if pkgs.lib.isFunction fn then fn else import fn;
+      auto = builtins.intersectAttrs (stdenv.lib.functionArgs f) autoArgs;
+    in f (auto // args);
+
+  callPackage = callPackageWith pkgs;
+
+  /* Uses generic-builder to evaluate provided drv containing OTP-version
+  specific data.
+
+  drv: package containing version-specific args;
+  builder: generic builder for all Erlang versions;
+  args: arguments merged into version-specific args, used mostly to customize
+        dependencies;
+
+  Arguments passed to the generic-builder are overridable, used to
+  enable/disable high-level OTP features, like ODBC or WX support;
+
+  Please note that "mkDerivation" defined here is the one called from R16.nix
+  and similar files.
+  */
+  callErlang = drv: args:
+    let
+      builder = callPackage ../../development/interpreters/erlang/generic-builder.nix args;
+    in
+      callPackage drv {
+        mkDerivation = pkgs.makeOverridable builder;
+      };
+
+  /* Uses generic-builder to evaluate provided drv containing Elixir version
+  specific data.
+
+  drv: package containing version-specific args;
+  builder: generic builder for all Erlang versions;
+  args: arguments merged into version-specific args, used mostly to customize
+        dependencies;
+
+  Arguments passed to the generic-builder are overridable.
+
+  Please note that "mkDerivation" defined here is the one called from 1.4.nix
+  and similar files.
+  */
+  callElixir = drv: args:
+    let
+      builder = callPackage ../interpreters/elixir/generic-builder.nix args;
+    in
+      callPackage drv {
+        mkDerivation = pkgs.makeOverridable builder;
+      };
+
+  /* Uses generic-builder to evaluate provided drv containing Elixir version
+  specific data.
+
+  drv: package containing version-specific args;
+  builder: generic builder for all Erlang versions;
+  args: arguments merged into version-specific args, used mostly to customize
+        dependencies;
+
+  Arguments passed to the generic-builder are overridable.
+
+  Please note that "mkDerivation" defined here is the one called from 1.2.nix
+  and similar files.
+  */
+  callLFE = drv: args:
+    let
+      builder = callPackage ../interpreters/lfe/generic-builder.nix args;
+    in
+      callPackage drv {
+        mkDerivation = pkgs.makeOverridable builder;
+      };
+
+}