{ config, lib, ... }: let inherit (lib.modules) mkIf mkMerge; inherit (lib.strings) optionalString; inherit (lib.attrsets) mapAttrs; inherit (lib.nvim.dag) entryAfter; cfg = config.vim.lsp; in { config = mkIf cfg.lspconfig.enable (mkMerge [ { vim = { lsp.enable = true; startPlugins = ["nvim-lspconfig"]; luaConfigRC.lspconfig = entryAfter ["lsp-setup"] '' local lspconfig = require('lspconfig') ${ optionalString config.vim.ui.borders.enable '' require('lspconfig.ui.windows').default_options.border = '${config.vim.ui.borders.globalStyle}' '' } ''; }; } { vim.luaConfigRC = mapAttrs (_: v: (entryAfter ["lspconfig"] v)) cfg.lspconfig.sources; } ]); }