diff --git a/docs/user-guide/helpers.md b/docs/user-guide/helpers.md index 65e80c1c61..dc450a9811 100644 --- a/docs/user-guide/helpers.md +++ b/docs/user-guide/helpers.md @@ -39,6 +39,36 @@ This "extended" lib, includes everything normally in `lib`, along with some addi **Note:** the `lib` argument passed to modules is entirely unrelated to the `lib` _option_ accessed as `config.lib`! +## Using a custom `lib` with Nixvim + +When Nixvim is built in standalone mode, it expects `lib` to have Nixvim's extensions. +If you'd like to use a `lib` with your own extensions, you must supply it via `specialArgs`, +however you must ensure Nixvim's extensions are also present. + +This can be achieved using the lib overlay, available via the `.lib.overlay` flake output. + +```nix +# Example flake +{ + inputs = { + # ... + }; + + outputs = + { nixpkgs, ... }@inputs: + let + lib = import (nixpkgs + "/lib"); + myCustomLib = lib.extend (final: prev: { + # ... + }); + myCustomLibForNixvim = myCustomLib.extend inputs.nixvim.lib.overlay; + in + { + # ... + }; +} +``` + ## Common helper functions A certain number of helpers are defined that can be useful: diff --git a/lib/modules.nix b/lib/modules.nix index 618dfa04ca..d9c39f1242 100644 --- a/lib/modules.nix +++ b/lib/modules.nix @@ -23,10 +23,10 @@ in extraSpecialArgs ? { }, }: # Ensure a suitable `lib` is used - # TODO: offer a lib overlay that end-users could use to apply nixvim's extensions to their own `lib` assert lib.assertMsg (extraSpecialArgs ? lib -> extraSpecialArgs.lib ? nixvim) '' Nixvim requires a lib that includes some custom extensions, however the `lib` from `specialArgs` does not have a `nixvim` attr. - Remove `lib` from nixvim's `specialArgs` or ensure you apply nixvim's extensions to your `lib`.''; + Remove `lib` from nixvim's `specialArgs` or ensure you apply nixvim's extensions to your `lib`. + See https://nix-community.github.io/nixvim/user-guide/helpers.html#using-a-custom-lib-with-nixvim''; lib.evalModules { modules = modules ++ [ ../modules/top-level