summaryrefslogtreecommitdiff
path: root/lib/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'lib/default.nix')
-rw-r--r--lib/default.nix31
1 files changed, 29 insertions, 2 deletions
diff --git a/lib/default.nix b/lib/default.nix
index 849d6ce8f9d6..e77d053b8cc0 100644
--- a/lib/default.nix
+++ b/lib/default.nix
@@ -5,9 +5,36 @@
*/
let
- inherit (import ./fixed-points.nix { inherit lib; }) makeExtensible;
+ # A copy of `lib.makeExtensible'` in order to document `extend`.
+ # It has been leading to some trouble, so we have to document it specially.
+ makeExtensible' =
+ rattrs:
+ let self = rattrs self // {
+ /**
+ Patch the Nixpkgs library
- lib = makeExtensible (self: let
+ The name `extends` is a bit misleading, as it doesn't actually extend the library, but rather patches it.
+ It is merely a consequence of being implemented by `makeExtensible`.
+
+ # Inputs
+
+ - An "extension function" `f` that returns attributes that will be updated in the returned Nixpkgs library.
+
+ # Output
+
+ A patched Nixpkgs library.
+
+ :::{.warning}
+ This functionality is intended as an escape hatch for when the provided version of the Nixpkgs library has a flaw.
+
+ If you were to use it to add new functionality, you will run into compatibility and interoperability issues.
+ :::
+ */
+ extend = f: lib.makeExtensible (lib.extends f rattrs);
+ };
+ in self;
+
+ lib = makeExtensible' (self: let
callLibs = file: import file { lib = self; };
in {