{ pkgs, ... }: { programs.nixvim = { diagnostic.settings = { virtual_text = true; }; plugins = { lsp = { enable = true; inlayHints = true; servers = { bashls.enable = true; clangd.enable = true; clangd.package = null; nixd.enable = true; }; }; conform-nvim = { enable = true; settings = { format_on_save = { lspFormat = "fallback"; timeoutMs = 500; }; formatters_by_ft = { lua = [ "stylua" ]; nix = [ "nixfmt" ]; python = [ "ruff_format" ]; javascript = [ "prettier" ]; typescript = [ "prettier" ]; svelte = [ "prettier" ]; css = [ "prettier" ]; json = [ "prettier" ]; html = [ "prettier" ]; }; }; }; cmp = { enable = true; autoEnableSources = true; settings = { sources = [ { name = "nvim_lsp"; } { name = "path"; } { name = "buffer"; } ]; mapping = { "" = "cmp.mapping.scroll_docs(-4)"; "" = "cmp.mapping.scroll_docs(4)"; "" = "cmp.mapping.complete()"; "" = "cmp.mapping.abort()"; "" = "cmp.mapping.confirm({ select = true })"; "" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})"; "" = "cmp.mapping(cmp.mapping.select_prev_item(), {'i', 's'})"; }; window.completion.border = "rounded"; window.documentation.border = "rounded"; }; }; }; }; }