-
keep easiness and dynamic nature of neovim
- install plugins and LSP servers with nix
- configure with .lua
- Iterate on lua config without nix rebuild. Just restart neovim
-
nixCats-nvim is more customizable
-
Kickstart-nix.nvim is simpler then nixCats-nvim
-
neovim-nix does it's best to be even simpler
Changes in nvim config are both instant and tracked by git.
- tweak the config as easy and fast as without nix
- run the same config as any user and on any machine with nix
- edit your config directory as if it were a
~/.config/nvim/. Config is loaded only from the provided config directory. And from nowhere else.
First. HM makes only one neovim package. But with nvim-on-nix you can have any number of neovims:
- one picks up nvim config changes rigth away, so that you easy iterate on config
- one uses config saved in nix store, so you have a working nvim even when nvim directory is messed up in a crazy configuration jorney
- one to use as a
$MANPAGER. Start instantly by saving on features
-
To setup the mutable config, you need to provide an absolute path for the symlink, and to run a shell script. See
Install and Startsection -
Here are no tools to convert from non-nix (probably Lazy-based) neovim config
- Bootstrap the repository from the template To bootstrap the symlink:
- edit
./configLink.nix - run
./scripts/bootstrapMutableConfig.sh
nix run
./nvim/- behaves exactly as~/.config/nvim/; # TODO fix the nameoverlay.nix- Describe your neovim packages. What plugins and extra programs to installmkNeovim.nix- function which makes a neovim derivation
I believe, it's the most complex task with this template.
- update list of plugins in
overlay.nix - put your
nvimconfig directory in place of./nvim
https://github.com/folke/snacks.nvim/blob/main/docs/profiler.md#profiling-neovim-startup
To profile startup time, run your nvim with PROF=1
PROF=1 nvimLook at lze or lz.n plugins.
- Make a directory with plugins you develop
- organize them as a package:
pack/{}/start/{}orpack/{}/opt/{} - add the directory to
packpathininit.lua:vim.opt.packpath:append('~/PACK-DIR')
I haven't ever done it myself :D
One can choose how to manage files neovim loads for you. You can either put files
in the plugin/ directory or require() them from init.lua.
Files in plugin/ are loaded automatically; just put the file, and vim will load it.
- TODO: make templates
- TODO: homeModule
- TODO: test oos link with nix --impure and default package
- TODO: decouple package definitions from overlay