{ 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 ./plugins/formatter ]; basicConfigs = map 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; }; }; }