Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

lib.nixvim: Nixvim's functions

Accessing Nixvim's functions

If Nixvim is built using the standalone method, you can access our "helpers" as part of the lib module arg:

{ lib, ... }:
{
  # You can use lib.nixvim in your config
  fooOption = lib.nixvim.mkRaw "print('hello')";
}

If Nixvim is being used as as a home-manager module, a nixos module, or as a dawwin module, our "helpers" can be accessed via the config.lib option:

{ config, ... }:
let
  helpers = config.lib.nixvim;
in
{
  # Your config
}

Or you can access the extended lib used in standalone builds via the nixvimLib module arg:

{ nixvimLib, ... }:
{
  # You can use nixvimLib.nixvim in your config
  fooOption = nixvimLib.nixvim.mkRaw "print('hello')";
}

This "extended" lib, includes everything normally in lib, along with some additions from nixvim.

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 <nixvim>.lib.overlay flake output.

# Example flake
{
  inputs = {
    # ...
  };

  outputs =
    { nixpkgs, ... }@inputs:
    let
      myCustomLib = nixpkgs.lib.extend (final: prev: {
        # ...
      });
      myCustomLibForNixvim = myCustomLib.extend inputs.nixvim.lib.overlay;
    in
    {
      # ...
    };
}