summary refs log tree commit diff
path: root/pkgs/development/dhall-modules/lib.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/dhall-modules/lib.nix')
-rw-r--r--pkgs/development/dhall-modules/lib.nix25
1 files changed, 25 insertions, 0 deletions
diff --git a/pkgs/development/dhall-modules/lib.nix b/pkgs/development/dhall-modules/lib.nix
new file mode 100644
index 00000000000..c1993d0af02
--- /dev/null
+++ b/pkgs/development/dhall-modules/lib.nix
@@ -0,0 +1,25 @@
+{ lib }:
+
+let
+  # This is essentially the same thing as `lib.makeOverridable`, except storing
+  # the override method in a method named `overridePackage` so that it's not
+  # shadowed by the `override` method added by `callPackage`
+  makePackageOverridable = f: args:
+    let
+      result = lib.makeOverridable f args;
+
+      copyArgs = g: lib.setFunctionArgs g (lib.functionArgs f);
+
+      overrideWith =
+        update: args // (if lib.isFunction update then update args else update);
+
+      overridePackage =
+        copyArgs (update: makePackageOverridable f (overrideWith update));
+
+    in
+      result // { inherit overridePackage; };
+
+in
+  lib // {
+    inherit makePackageOverridable;
+  }