{ callPackage, wrapNeovim, neovim-unwrapped, vimPlugins, ... }: let lib = import ./lib.nix; callPlugins = list: builtins.map (p: callPackage p { }) list; plugins = callPlugins [ ./plugins/syntax ./plugins/explorer ./plugins/theme ./plugins/lsp ]; basicConfigs = [builtins.readFile ./config/basic.lua]; pluginConfigs = lib.extractAttrs "luaConfig" plugins; allConfigs = basicConfigs ++ pluginConfigs; in wrapNeovim neovim-unwrapped { withPython3 = false; withNodeJs = false; withRuby = false; configure = { customRC = lib.mkLuaRc allConfigs; packages.myVimPackages = { start = lib.extractAttrs "plugins" plugins; }; }; }