{ pkgs, ... }: { xdg.desktopEntries = { "nvim".name = "Neovim wrapper"; "nvim".exec = "nvim %F"; "nvim".noDisplay = true; }; programs.nixvim = { enable = true; viAlias = true; vimAlias = true; clipboard.providers.wl-copy.enable = true; colorschemes.dracula = { enable = true; fullSpecialAttrsSupport = true; }; extraPackages = with pkgs; [ fd ripgrep ]; extraConfigLuaPre = '' vim.opt.listchars:append "space:⋅" vim.opt.listchars:append "eol:↴" ''; options = { autowrite = true; background = "dark"; clipboard = "unnamedplus"; expandtab = true; laststatus = 2; list = true; number = true; relativenumber = true; shiftwidth = 2; showmode = false; signcolumn = "yes"; smartindent = true; splitbelow = true; splitright = true; swapfile = false; tabstop = 2; termguicolors = true; updatetime = 100; wrap = true; }; keymaps = [ { mode = "n"; key = ""; options.silent = true; action = "bp"; } { mode = "n"; key = ""; options.silent = true; action = "bn"; } { mode = "n"; key = ""; options.silent = true; action = "noh"; } { mode = "n"; key = "w"; options.silent = true; action = "bdeletebnext"; } { mode = "n"; key = "`"; options.silent = true; action = ":ToggleTerm"; } { mode = "n"; key = "1"; options.silent = true; action = ":Neotree toggle"; } { mode = "n"; key = "ff"; options.silent = true; action = ":Telescope find_files"; } { mode = "n"; key = "fg"; options.silent = true; action = ":Telescope live_grep"; } { mode = "n"; key = "pp"; options.silent = true; action = ":MarkdownPreview"; } { mode = "n"; key = "po"; options.silent = true; action = ":MarkdownPreviewStop"; } ]; plugins = { bufferline = { enable = true; diagnostics = "nvim_lsp"; offsets = [ { filetype = "neo-tree"; text = "File Explorer"; separator = true; } ]; separatorStyle = "slant"; }; cmp-buffer.enable = true; cmp-nvim-lsp.enable = true; cmp-nvim-lsp-document-symbol.enable = true; cmp-nvim-lsp-signature-help.enable = true; cmp-treesitter.enable = true; cmp_luasnip.enable = true; gitblame = { enable = true; dateFormat = "%r"; }; gitsigns.enable = true; indent-blankline.enable = true; lastplace.enable = true; lsp = { enable = true; servers = { bashls.enable = true; dartls = { enable = true; installLanguageServer = false; }; gopls = { enable = true; installLanguageServer = false; }; hls = { enable = true; installLanguageServer = false; }; html = { enable = true; installLanguageServer = false; }; jsonls.enable = true; nixd.enable = true; pyright = { enable = true; installLanguageServer = false; }; rust-analyzer = { enable = true; installCargo = false; installRustc = false; }; tailwindcss = { enable = true; installLanguageServer = false; }; yamlls.enable = true; }; }; lsp-lines.enable = true; lualine = { enable = true; globalstatus = true; theme = "dracula"; }; markdown-preview = { enable = true; browser = "${pkgs.ungoogled-chromium}/bin/chromium"; theme = "light"; }; neo-tree = { enable = true; addBlankLineAtTop = true; enableDiagnostics = true; enableGitStatus = true; closeIfLastWindow = false; filesystem = { followCurrentFile = { enabled = true; leaveDirsOpen = false; }; filteredItems.visible = true; useLibuvFileWatcher = true; }; }; nvim-cmp = { enable = true; snippet.expand = "luasnip"; sources = [ { name = "nvim_lsp"; } { name = "luasnip"; } { name = "buffers"; } { name = "treesitter"; } ]; }; telescope = { enable = true; extensions = { fzf-native = { enable = true; caseMode = "smart_case"; fuzzy = true; }; }; }; toggleterm = { enable = true; }; treesitter = { enable = true; }; treesitter-refactor = { enable = true; highlightDefinitions.enable = true; navigation.enable = true; }; }; }; }