Introduction

Features

Nix flake module. This module provides a package of Vim environments from minimal to full configuration.

License

This project is licensed under the MIT license.

Quick Start

bundler-nvim (for Neovim)

$ nix flake init --template github:ttak0422/bundler#neovim
$ nix run .#bundler-nvim

bundler-vim (for Vim)

`bundler-vim` is under development.

Neovim Configuration

Configurations defined in bundler-nvim are available as packages and apps. This module assumes that you will use that package as you wish, as follows.

environment.systemPackages = [
  (pkgs.runCommand "nvim" { } ''
    mkdir -p $out/bin
    ln -s ${
      self.packages.${system}.bundler-nvim
    }/bin/nvim $out/bin/nvim
  '')
];

flakeModule schemes

nametypedefaultdescription
packageNamePrefixtypes.str"bundler-nvim"package name prefix provided by this module
appNamePrefixtypes.str"bundler-nvim"app name prefix provided by this module
packagetypes.packagepkgs.neovim-unwrappedneovim package
extraPackageswith types; listOf package[]e.g. lua-language-server
extraConfigtypes.lines""viml code executed at startup
extraLuaConfigtypes.lines""lua code executed at startup
after.ftPluginwith types; attrsOf lines{}after/ftplugin (viml only)
withNodeJstypes.boolfalsealias for neovim.withNodeJs
withPython3types.boolfalsealias for neovim.withPython3
withRubytypes.boolfalsealias for neovim.withRuby
eagerPluginswith types; listOf (either package eagerPluginConfig)[]plugins loaded at startup
lazyPluginswith types; listOf (either package lazyPluginConfig)[]plugins lazy loaded
lazyGroupstypes.listOf lazyGroupConfig[]plugin groups lazy loaded
timertypes.int100time used for loading plugin (msec)
logLeveltypes.enum [ "debug" "info" "warn" "error" ]"warn"

pluginConfigDetail

nametypedefaultdescription
languagetypes.enum [ "vim" "lua" ]vim-
codetypes.lines""setup code
argstypes.attrs{}bring the values of nix into the code . see example.

eagerPluginConfig

nametypedefaultdescription
startupConfigwith types; either lines pluginConfigDetail""setup code executed at startup
extraPackageswith types; listOf package[]nix packages

lazyPluginConfig

nametypedefaultdescription
startupConfigwith types; either lines pluginConfigDetail""setup code executed at startup
extraPackageswith types; listOf package[]nix packages
preConfigwith types; either lines pluginConfigDetail""setup code executed before load plugin
postConfigwith types; either lines pluginConfigDetail""setup code executed after load plugin
dependPluginswith types; listOf (either package lazyPluginConfig)[]plugins on which this plugin depends
dependGroupswith types; listOf str[]groups on which this plugin depends
onModuleswith types; listOf str[]load plugin when configured modules is called
onEventswith types; listOf str[]load plugin when configured events fires
onFiletypeswith types; listOf str[]load plugin when configured filetype is read
onCommandswith types; listOf str[]load plugin when configured commands execute
useTimertypes.boolfalseset true to load the plugin using timer
useDenopstypes.boolfalsemust be explicitly set to true in the denops plugin

lazyGroupConfig

nametypedefaultdescription
nametypes.strrequiredgroup name
pluginswith types; listOf[]group name
startupConfigwith types; either lines pluginConfigDetail""setup code executed at startup
extraPackageswith types; listOf package[]nix packages
preConfigwith types; either lines pluginConfigDetail""setup code executed before load plugin
postConfigwith types; either lines pluginConfigDetail""setup code executed after load plugin
dependPluginswith types; listOf (either package lazyPluginConfig)[]plugins on which this plugin depends
dependGroupswith types; listOf str[]groups on which this plugin depends
onModuleswith types; listOf str[]load plugin when configured modules is called
onEventswith types; listOf str[]load plugin when configured events fires
onFiletypeswith types; listOf str[]load plugin when configured filetype is read
onCommandswith types; listOf str[]load plugin when configured commands execute
useTimertypes.boolfalseset true to load the plugin using timer

example pluginConfigDetail.args

# access args in viml
{
  language = "vim";
  code = ''
    s:args['foo'] " bar
  '';
  args = {
    foo = "bar";
  };
}

# access args in lua
{
  language = "lua";
  code = ''
    args.foo -- bar
  '';
  args = {
    foo = "bar"
  };
}

Vim Configuration

`bundler-vim` is under development.