{ pkgs, ... }: { programs.neovim = { enable = true; defaultEditor = true; viAlias = true; vimAlias = true; withNodeJs = true; plugins = []; extraLuaConfig = '' -- LazyVim bootstrap local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" if not vim.loop.fs_stat(lazypath) then vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath, }) end vim.opt.rtp:prepend(lazypath) require("lazy").setup({ spec = { { "LazyVim/LazyVim", import = "lazyvim.plugins" }, { import = "lazyvim.plugins.extras.lang.tex" }, { import = "lazyvim.plugins.extras.lang.markdown" }, { import = "lazyvim.plugins.extras.ui.mini-animate" }, { import = "lazyvim.plugins.extras.lang.typescript" }, { import = "lazyvim.plugins.extras.lang.python" }, { import = "lazyvim.plugins.extras.lang.rust" }, { import = "lazyvim.plugins.extras.lang.nix" }, { "lervag/vimtex", lazy = false, init = function() vim.g.vimtex_view_method = "zathura" end }, { "MeanderingProgrammer/render-markdown.nvim", opts = { enabled = true, file_types = { "markdown", "rmd" }, colorscheme = "default", }, dependencies = { "nvim-treesitter/nvim-treesitter", "nvim-tree/nvim-web-devicons", }, }, { "mracos/mermaid.vim", ft = { "mermaid" } }, }, defaults = { lazy = false, version = false }, checker = { enabled = true }, performance = { rtp = { disabled_plugins = { "gzip", "tarPlugin", "tohtml", "tutor", "zipPlugin", }, }, }, }) -- LaTeX wrapping vim.api.nvim_create_autocmd("FileType", { pattern = "tex", callback = function() vim.opt_local.wrap = true vim.opt_local.linebreak = true vim.opt_local.breakindent = true vim.opt_local.breakindentopt = "shift:2" vim.opt_local.textwidth = 0 end, }) -- Disable diagnostics in markdown vim.api.nvim_create_autocmd("FileType", { pattern = "markdown", callback = function() vim.diagnostic.disable(0) end, }) -- Nix LSP local lspconfig = require("lspconfig") lspconfig.nil_ls.setup({ cmd = { "nil" } }) vim.opt.clipboard = "unnamedplus" ''; }; }