diff options
Diffstat (limited to 'lib/default.nix')
| -rw-r--r-- | lib/default.nix | 31 |
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 { |
