├── .editorconfig ├── .envrc ├── .git-blame-ignore-revs ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md ├── dependabot.yml ├── mergify.yml └── workflows │ ├── backport.yml │ ├── build_documentation.yml │ ├── flakehub-publish-rolling.yml │ ├── flakestry-publish-rolling.yml │ ├── update-other.yml │ └── update.yml ├── .gitignore ├── CONTRIBUTING.md ├── LICENSE ├── MAINTAINING.md ├── README.md ├── assets └── nixvim_logo.svg ├── buildbot-nix.toml ├── default.nix ├── docs ├── 0001-nixos-render-docs-Output-GFM-admonition.patch ├── 0002-nixos-render-docs-Support-gfm-style-admonitions.patch ├── default.nix ├── fix-links │ ├── default.nix │ └── filter.lua ├── gfm-alerts-to-admonitions │ ├── default.nix │ ├── gfm_alerts_to_admonitions │ │ ├── __init__.py │ │ └── main.py │ ├── pyproject.toml │ └── tests │ │ ├── test_plugin.py │ │ └── test_plugin │ │ ├── test_parse_caution_.yml │ │ ├── test_parse_important_.yml │ │ ├── test_parse_note_.yml │ │ ├── test_parse_tip_.yml │ │ └── test_parse_warning_.yml ├── lib │ ├── default.nix │ ├── function-locations.nix │ ├── index.md │ ├── menu.nix │ └── pages.nix ├── man │ ├── default.nix │ ├── filter.lua │ ├── nixvim-footer.5 │ ├── nixvim-header-end.5 │ └── nixvim-header-start.5 ├── mdbook │ ├── SUMMARY.md │ ├── book.toml │ ├── default.nix │ ├── highlight.js │ └── index.md ├── pkgs.nix ├── platforms │ ├── index.md │ └── standalone.md ├── server │ └── default.nix ├── user-configs │ ├── default.nix │ ├── list.toml │ └── tests.nix └── user-guide │ ├── config-examples.md │ ├── faq.md │ ├── install.md │ └── lazy-loading.md ├── example.nix ├── flake.lock ├── flake.nix ├── flake ├── ci.nix ├── default.nix ├── dev │ ├── default.nix │ ├── devshell.nix │ ├── flake.lock │ ├── flake.nix │ ├── launch-test.sh │ ├── list-plugins │ │ ├── default.nix │ │ └── list-plugins.py │ ├── locate-lsp-packages.py │ ├── new-plugin.py │ ├── package-tests.nix │ ├── template-tests.nix │ └── tests.nix ├── flake-modules │ ├── auto.nix │ ├── default.nix │ ├── nixvimConfigurations.nix │ └── nixvimModules.nix ├── legacy-packages.nix ├── lib.nix ├── nixvim-configurations.nix ├── overlays.nix ├── packages.nix ├── templates.nix └── wrappers.nix ├── generated ├── efmls-configs.nix ├── lspconfig-servers.json ├── none-ls.nix └── rust-analyzer.nix ├── lib ├── autocmd-helpers.nix ├── builders.nix ├── default.nix ├── deprecation.nix ├── keymap-helpers.nix ├── lua-types.nix ├── maintainers.nix ├── modules.nix ├── options.nix ├── overlay.nix ├── pkg-lists.nix ├── plugins │ ├── default.nix │ ├── mk-neovim-plugin.nix │ ├── mk-vim-plugin.nix │ ├── neovim.nix │ ├── utils.nix │ └── vim.nix ├── tests.nix ├── to-lua.nix ├── types.nix ├── utils.internal.nix └── utils.nix ├── modules ├── autocmd.nix ├── clipboard.nix ├── colorscheme.nix ├── commands.nix ├── default.nix ├── dependencies.nix ├── diagnostic.nix ├── doc.nix ├── editorconfig.nix ├── files.nix ├── filetype.nix ├── highlights.nix ├── keymaps.nix ├── lazyload.nix ├── lsp │ ├── default.nix │ ├── keymaps.nix │ ├── on-attach.nix │ └── servers │ │ ├── default.nix │ │ ├── global-server.nix │ │ ├── server-renames.nix │ │ └── server.nix ├── lua-loader.nix ├── misc │ ├── assertions.nix │ ├── context.nix │ ├── default.nix │ ├── meta.nix │ └── nixvim-info.nix ├── opts.nix ├── output.nix ├── performance.nix ├── plugins.nix └── top-level │ ├── default.nix │ ├── files │ ├── default.nix │ └── submodule.nix │ ├── nixpkgs.nix │ ├── output.nix │ ├── plugins │ ├── byte-compile-lua-lib.nix │ ├── byte-compile-plugins.nix │ ├── combine-plugins.nix │ ├── default.nix │ ├── mk-plugin-pack.nix │ └── utils.nix │ ├── readonly-renames.nix │ └── test.nix ├── plugins ├── TEMPLATE.nix ├── by-name │ ├── actions-preview │ │ └── default.nix │ ├── aerial │ │ └── default.nix │ ├── airline │ │ └── default.nix │ ├── alpha │ │ └── default.nix │ ├── arrow │ │ └── default.nix │ ├── auto-save │ │ └── default.nix │ ├── auto-session │ │ ├── default.nix │ │ └── renamed-options.nix │ ├── autoclose │ │ ├── default.nix │ │ └── deprecations.nix │ ├── autosource │ │ └── default.nix │ ├── avante │ │ └── default.nix │ ├── aw-watcher │ │ └── default.nix │ ├── bacon │ │ └── default.nix │ ├── baleia │ │ └── default.nix │ ├── barbar │ │ └── default.nix │ ├── barbecue │ │ └── default.nix │ ├── better-escape │ │ └── default.nix │ ├── blink-cmp-copilot │ │ └── default.nix │ ├── blink-cmp-dictionary │ │ └── default.nix │ ├── blink-cmp-git │ │ └── default.nix │ ├── blink-cmp-spell │ │ └── default.nix │ ├── blink-cmp │ │ ├── default.nix │ │ ├── provider-config.nix │ │ └── settings-options.nix │ ├── blink-compat │ │ └── default.nix │ ├── blink-copilot │ │ └── default.nix │ ├── blink-emoji │ │ └── default.nix │ ├── blink-ripgrep │ │ └── default.nix │ ├── bufdelete │ │ └── default.nix │ ├── bufferline │ │ └── default.nix │ ├── bullets │ │ └── default.nix │ ├── ccc │ │ └── default.nix │ ├── chadtree │ │ └── default.nix │ ├── chatgpt │ │ └── default.nix │ ├── clangd-extensions │ │ ├── default.nix │ │ ├── deprecations.nix │ │ └── renamed-options.nix │ ├── claude-code │ │ └── default.nix │ ├── clipboard-image │ │ ├── default.nix │ │ └── deprecations.nix │ ├── cloak │ │ └── default.nix │ ├── cmake-tools │ │ └── default.nix │ ├── cmp-ai │ │ └── default.nix │ ├── cmp-git │ │ ├── default.nix │ │ └── settings-options.nix │ ├── cmp-tabby │ │ └── default.nix │ ├── cmp-tabnine │ │ └── default.nix │ ├── codecompanion │ │ └── default.nix │ ├── codesnap │ │ └── default.nix │ ├── colorful-menu │ │ └── default.nix │ ├── colorizer │ │ └── default.nix │ ├── comment-box │ │ └── default.nix │ ├── comment │ │ ├── default.nix │ │ └── renamed-options.nix │ ├── commentary │ │ └── default.nix │ ├── committia │ │ └── default.nix │ ├── competitest │ │ └── default.nix │ ├── compiler │ │ └── default.nix │ ├── conform-nvim │ │ └── default.nix │ ├── conjure │ │ └── default.nix │ ├── copilot-chat │ │ └── default.nix │ ├── copilot-cmp │ │ └── default.nix │ ├── copilot-lua │ │ ├── default.nix │ │ └── renamed-options.nix │ ├── copilot-vim │ │ └── default.nix │ ├── coq-nvim │ │ └── default.nix │ ├── coq-thirdparty │ │ └── default.nix │ ├── cord │ │ └── default.nix │ ├── cornelis │ │ └── default.nix │ ├── coverage │ │ └── default.nix │ ├── crates │ │ └── default.nix │ ├── csvview │ │ └── default.nix │ ├── cursorline │ │ ├── default.nix │ │ └── deprecations.nix │ ├── dap-go │ │ ├── default.nix │ │ └── deprecations.nix │ ├── dap-lldb │ │ └── default.nix │ ├── dap-python │ │ ├── default.nix │ │ └── deprecations.nix │ ├── dap-rr │ │ └── default.nix │ ├── dap-ui │ │ ├── default.nix │ │ └── deprecations.nix │ ├── dap-view │ │ └── default.nix │ ├── dap-virtual-text │ │ ├── default.nix │ │ └── deprecations.nix │ ├── dap │ │ ├── dapHelpers.nix │ │ └── default.nix │ ├── dashboard │ │ └── default.nix │ ├── dbee │ │ └── default.nix │ ├── debugprint │ │ └── default.nix │ ├── devdocs │ │ └── default.nix │ ├── diagram │ │ └── default.nix │ ├── dial │ │ └── default.nix │ ├── diffview │ │ └── default.nix │ ├── direnv │ │ └── default.nix │ ├── distant │ │ └── default.nix │ ├── dotnet │ │ └── default.nix │ ├── dressing │ │ └── default.nix │ ├── dropbar │ │ ├── default.nix │ │ └── settings-options.nix │ ├── earthly │ │ └── default.nix │ ├── easy-dotnet │ │ └── default.nix │ ├── easyescape │ │ └── default.nix │ ├── edgy │ │ └── default.nix │ ├── efmls-configs │ │ ├── default.nix │ │ └── packages.nix │ ├── emmet │ │ └── default.nix │ ├── endwise │ │ └── default.nix │ ├── fastaction │ │ └── default.nix │ ├── faust │ │ └── default.nix │ ├── femaco │ │ └── default.nix │ ├── fidget │ │ ├── default.nix │ │ └── deprecations.nix │ ├── firenvim │ │ └── default.nix │ ├── flash │ │ └── default.nix │ ├── flit │ │ └── default.nix │ ├── floaterm │ │ └── default.nix │ ├── flutter-tools │ │ ├── default.nix │ │ └── settings-options.nix │ ├── friendly-snippets │ │ └── default.nix │ ├── fugit2 │ │ └── default.nix │ ├── fugitive │ │ └── default.nix │ ├── fzf-lua │ │ └── default.nix │ ├── git-conflict │ │ └── default.nix │ ├── git-worktree │ │ ├── default.nix │ │ └── deprecations.nix │ ├── gitblame │ │ └── default.nix │ ├── gitgutter │ │ ├── default.nix │ │ └── renamed-options.nix │ ├── gitignore │ │ └── default.nix │ ├── gitlab │ │ └── default.nix │ ├── gitlinker │ │ └── default.nix │ ├── gitmessenger │ │ └── default.nix │ ├── gitsigns │ │ ├── default.nix │ │ ├── renamed-options.nix │ │ └── settings-options.nix │ ├── glance │ │ └── default.nix │ ├── glow │ │ └── default.nix │ ├── godot │ │ └── default.nix │ ├── goto-preview │ │ └── default.nix │ ├── goyo │ │ └── default.nix │ ├── grug-far │ │ └── default.nix │ ├── guess-indent │ │ └── default.nix │ ├── gx │ │ └── default.nix │ ├── hardtime │ │ └── default.nix │ ├── harpoon │ │ ├── default.nix │ │ └── deprecations.nix │ ├── haskell-scope-highlighting │ │ └── default.nix │ ├── headlines │ │ └── default.nix │ ├── helm │ │ └── default.nix │ ├── helpview │ │ └── default.nix │ ├── hex │ │ └── default.nix │ ├── highlight-colors │ │ └── default.nix │ ├── hlchunk │ │ └── default.nix │ ├── hmts │ │ └── default.nix │ ├── hop │ │ └── default.nix │ ├── hunk │ │ └── default.nix │ ├── hurl │ │ └── default.nix │ ├── hydra │ │ ├── default.nix │ │ ├── hydras-option.nix │ │ └── settings-options.nix │ ├── idris2 │ │ └── default.nix │ ├── illuminate │ │ └── default.nix │ ├── image │ │ ├── default.nix │ │ └── deprecations.nix │ ├── improved-search │ │ └── default.nix │ ├── inc-rename │ │ └── default.nix │ ├── indent-blankline │ │ └── default.nix │ ├── indent-o-matic │ │ └── default.nix │ ├── indent-tools │ │ └── default.nix │ ├── instant │ │ └── default.nix │ ├── intellitab │ │ └── default.nix │ ├── iron │ │ └── default.nix │ ├── java │ │ └── default.nix │ ├── jdtls │ │ ├── default.nix │ │ ├── deprecations.nix │ │ └── settings-options.nix │ ├── julia-cell │ │ └── default.nix │ ├── jupytext │ │ └── default.nix │ ├── kulala │ │ └── default.nix │ ├── lastplace │ │ ├── default.nix │ │ └── deprecations.nix │ ├── lazydev │ │ └── default.nix │ ├── lazygit │ │ └── default.nix │ ├── lean │ │ ├── default.nix │ │ └── deprecations.nix │ ├── leap │ │ └── default.nix │ ├── ledger │ │ └── default.nix │ ├── lexima │ │ ├── default.nix │ │ └── settings-options.nix │ ├── lf │ │ └── default.nix │ ├── lightline │ │ └── default.nix │ ├── lilypond-suite │ │ └── default.nix │ ├── lint │ │ └── default.nix │ ├── lir │ │ ├── default.nix │ │ └── settings-options.nix │ ├── llm │ │ ├── default.nix │ │ └── settings-options.nix │ ├── lsp-format │ │ └── default.nix │ ├── lsp-lines │ │ └── default.nix │ ├── lsp-signature │ │ └── default.nix │ ├── lsp-status │ │ └── default.nix │ ├── lspconfig │ │ └── default.nix │ ├── lspkind │ │ └── default.nix │ ├── lspsaga │ │ └── default.nix │ ├── ltex-extra │ │ └── default.nix │ ├── lualine │ │ └── default.nix │ ├── luasnip │ │ └── default.nix │ ├── magma-nvim │ │ └── default.nix │ ├── mark-radar │ │ └── default.nix │ ├── markdown-preview │ │ ├── default.nix │ │ └── deprecations.nix │ ├── marks │ │ └── default.nix │ ├── markview │ │ └── default.nix │ ├── mini │ │ └── default.nix │ ├── minuet │ │ └── default.nix │ ├── mkdnflow │ │ └── default.nix │ ├── modicator │ │ └── default.nix │ ├── molten │ │ └── default.nix │ ├── multicursors │ │ └── default.nix │ ├── muren │ │ └── default.nix │ ├── nabla │ │ └── default.nix │ ├── navbuddy │ │ └── default.nix │ ├── navic │ │ └── default.nix │ ├── neo-tree │ │ └── default.nix │ ├── neoclip │ │ └── default.nix │ ├── neoconf │ │ └── default.nix │ ├── neocord │ │ └── default.nix │ ├── neogen │ │ └── default.nix │ ├── neogit │ │ ├── default.nix │ │ └── settings-options.nix │ ├── neorg │ │ ├── default.nix │ │ └── deprecations.nix │ ├── neoscroll │ │ └── default.nix │ ├── neotest │ │ ├── adapters-list.nix │ │ ├── adapters.nix │ │ ├── default.nix │ │ └── settings-options.nix │ ├── nerdy │ │ └── default.nix │ ├── netman │ │ └── default.nix │ ├── nix-develop │ │ └── default.nix │ ├── nix │ │ └── default.nix │ ├── noice │ │ └── default.nix │ ├── none-ls │ │ ├── _mk-source-plugin.nix │ │ ├── default.nix │ │ ├── packages.nix │ │ ├── prettier.nix │ │ ├── prettierd.nix │ │ ├── settings.nix │ │ └── sources.nix │ ├── notebook-navigator │ │ └── default.nix │ ├── notify │ │ ├── default.nix │ │ └── deprecations.nix │ ├── nui │ │ └── default.nix │ ├── numbertoggle │ │ └── default.nix │ ├── nvim-autopairs │ │ └── default.nix │ ├── nvim-bqf │ │ └── default.nix │ ├── nvim-lightbulb │ │ └── default.nix │ ├── nvim-osc52 │ │ └── default.nix │ ├── nvim-snippets │ │ └── default.nix │ ├── nvim-surround │ │ └── default.nix │ ├── nvim-tree │ │ └── default.nix │ ├── nvim-ufo │ │ └── default.nix │ ├── obsidian │ │ ├── default.nix │ │ ├── deprecations.nix │ │ └── settings-options.nix │ ├── octo │ │ └── default.nix │ ├── oil-git-status │ │ └── default.nix │ ├── oil │ │ └── default.nix │ ├── ollama │ │ └── default.nix │ ├── openscad │ │ ├── default.nix │ │ ├── fuzzy-finder-plugin-option.nix │ │ └── renamed-options.nix │ ├── orgmode │ │ └── default.nix │ ├── origami │ │ └── default.nix │ ├── otter │ │ └── default.nix │ ├── overseer │ │ └── default.nix │ ├── package-info │ │ └── default.nix │ ├── papis │ │ ├── default.nix │ │ └── settings-options.nix │ ├── parinfer-rust │ │ └── default.nix │ ├── parrot │ │ └── default.nix │ ├── pckr │ │ └── default.nix │ ├── peek │ │ └── default.nix │ ├── persisted │ │ └── default.nix │ ├── persistence │ │ └── default.nix │ ├── plantuml-syntax │ │ └── default.nix │ ├── precognition │ │ └── default.nix │ ├── presence-nvim │ │ └── default.nix │ ├── preview │ │ └── default.nix │ ├── project-nvim │ │ └── default.nix │ ├── projections │ │ └── default.nix │ ├── qmk │ │ └── default.nix │ ├── quarto │ │ └── default.nix │ ├── quicker │ │ ├── default.nix │ │ └── settings-options.nix │ ├── quickmath │ │ └── default.nix │ ├── rainbow-delimiters │ │ └── default.nix │ ├── refactoring │ │ └── default.nix │ ├── remote-nvim │ │ └── default.nix │ ├── render-markdown │ │ └── default.nix │ ├── repeat │ │ └── default.nix │ ├── rest │ │ ├── default.nix │ │ └── renamed-options.nix │ ├── rust-tools │ │ └── default.nix │ ├── rustaceanvim │ │ ├── default.nix │ │ ├── renamed-options.nix │ │ └── settings-options.nix │ ├── sandwich │ │ └── default.nix │ ├── schemastore │ │ └── default.nix │ ├── scope │ │ └── default.nix │ ├── scrollview │ │ └── default.nix │ ├── sg │ │ └── default.nix │ ├── sleuth │ │ └── default.nix │ ├── smart-splits │ │ └── default.nix │ ├── smartcolumn │ │ └── default.nix │ ├── smear-cursor │ │ ├── default.nix │ │ └── settings-options.nix │ ├── snacks │ │ └── default.nix │ ├── sniprun │ │ └── default.nix │ ├── specs │ │ └── default.nix │ ├── spectre │ │ └── default.nix │ ├── spider │ │ └── default.nix │ ├── sqlite-lua │ │ └── default.nix │ ├── startify │ │ ├── default.nix │ │ └── settings-options.nix │ ├── startup │ │ └── default.nix │ ├── statuscol │ │ └── default.nix │ ├── supermaven │ │ └── default.nix │ ├── tagbar │ │ └── default.nix │ ├── tailwind-tools │ │ └── default.nix │ ├── telekasten │ │ └── default.nix │ ├── telescope │ │ ├── default.nix │ │ └── extensions │ │ │ ├── _helpers.nix │ │ │ ├── _mk-extension.nix │ │ │ ├── advanced-git-search.nix │ │ │ ├── default.nix │ │ │ ├── file-browser.nix │ │ │ ├── frecency.nix │ │ │ ├── fzf-native.nix │ │ │ ├── fzy-native.nix │ │ │ ├── live-greps-args.nix │ │ │ ├── manix.nix │ │ │ ├── media-files.nix │ │ │ ├── project.nix │ │ │ ├── ui-select.nix │ │ │ ├── undo.nix │ │ │ └── zoxide.nix │ ├── texpresso │ │ └── default.nix │ ├── timerly │ │ └── default.nix │ ├── tiny-devicons-auto-colors │ │ └── default.nix │ ├── tiny-inline-diagnostic │ │ └── default.nix │ ├── tinygit │ │ └── default.nix │ ├── tmux-navigator │ │ └── default.nix │ ├── todo-comments │ │ └── default.nix │ ├── toggleterm │ │ └── default.nix │ ├── transparent │ │ └── default.nix │ ├── treesitter-context │ │ └── default.nix │ ├── treesitter-refactor │ │ └── default.nix │ ├── treesitter-textobjects │ │ └── default.nix │ ├── treesitter │ │ ├── default.nix │ │ └── injections.scm │ ├── treesj │ │ └── default.nix │ ├── trim │ │ └── default.nix │ ├── trouble │ │ └── default.nix │ ├── ts-autotag │ │ └── default.nix │ ├── ts-comments │ │ └── default.nix │ ├── ts-context-commentstring │ │ └── default.nix │ ├── twilight │ │ └── default.nix │ ├── typescript-tools │ │ └── default.nix │ ├── typst-preview │ │ └── default.nix │ ├── typst-vim │ │ └── default.nix │ ├── undotree │ │ └── default.nix │ ├── vim-bbye │ │ └── default.nix │ ├── vim-be-good │ │ └── default.nix │ ├── vim-colemak │ │ └── default.nix │ ├── vim-css-color │ │ └── default.nix │ ├── vim-dadbod-completion │ │ └── default.nix │ ├── vim-dadbod-ui │ │ └── default.nix │ ├── vim-dadbod │ │ └── default.nix │ ├── vim-matchup │ │ ├── default.nix │ │ └── renamed-options.nix │ ├── vim-slime │ │ └── default.nix │ ├── vim-suda │ │ └── default.nix │ ├── vim-surround │ │ └── default.nix │ ├── vim-test │ │ └── default.nix │ ├── vimade │ │ └── default.nix │ ├── vimtex │ │ └── default.nix │ ├── vimux │ │ ├── default.nix │ │ └── settings-options.nix │ ├── vimwiki │ │ └── default.nix │ ├── virt-column │ │ └── default.nix │ ├── visual-multi │ │ ├── default.nix │ │ └── settings-options.nix │ ├── visual-whitespace │ │ └── default.nix │ ├── wakatime │ │ └── default.nix │ ├── web-devicons │ │ └── default.nix │ ├── wezterm │ │ └── default.nix │ ├── which-key │ │ ├── default.nix │ │ └── renamed-options.nix │ ├── whichpy │ │ └── default.nix │ ├── whitespace │ │ └── default.nix │ ├── wilder │ │ └── default.nix │ ├── windsurf-nvim │ │ ├── default.nix │ │ └── deprecations.nix │ ├── windsurf-vim │ │ ├── default.nix │ │ └── deprecations.nix │ ├── wrapping │ │ └── default.nix │ ├── wtf │ │ └── default.nix │ ├── yanky │ │ └── default.nix │ ├── yazi │ │ └── default.nix │ ├── zellij-nav │ │ └── default.nix │ ├── zellij │ │ └── default.nix │ ├── zen-mode │ │ └── default.nix │ ├── zig │ │ └── default.nix │ ├── zk │ │ └── default.nix │ └── zotcite │ │ └── default.nix ├── cmp │ ├── auto-enable.nix │ ├── default.nix │ ├── deprecations.nix │ ├── options │ │ ├── default.nix │ │ ├── settings-options.nix │ │ └── sources-option.nix │ └── sources │ │ ├── _mk-cmp-plugin.nix │ │ └── default.nix ├── colorschemes │ ├── ayu.nix │ ├── bamboo.nix │ ├── base16 │ │ ├── default.nix │ │ └── theme-list.nix │ ├── catppuccin.nix │ ├── cyberdream.nix │ ├── dracula-nvim.nix │ ├── dracula.nix │ ├── everforest.nix │ ├── github-theme.nix │ ├── gruvbox.nix │ ├── kanagawa-paper.nix │ ├── kanagawa.nix │ ├── melange.nix │ ├── modus.nix │ ├── monokai-pro.nix │ ├── nightfox.nix │ ├── nord.nix │ ├── one.nix │ ├── onedark.nix │ ├── oxocarbon.nix │ ├── palette.nix │ ├── poimandres.nix │ ├── rose-pine.nix │ ├── tokyonight.nix │ └── vscode.nix ├── default.nix ├── deprecation.nix ├── lsp │ ├── default.nix │ ├── language-servers │ │ ├── _mk-lsp.nix │ │ ├── _renamed.nix │ │ ├── ccls.nix │ │ ├── dartls-settings.nix │ │ ├── default.nix │ │ ├── hls.nix │ │ ├── jsonnet-ls-settings.nix │ │ ├── ltex-settings.nix │ │ ├── lua-ls-settings.nix │ │ ├── nil-ls-settings.nix │ │ ├── nixd-settings.nix │ │ ├── pylsp.nix │ │ ├── rust-analyzer-config.nix │ │ ├── rust-analyzer.nix │ │ ├── svelte.nix │ │ └── tinymist-settings.nix │ └── lsp-packages.nix └── pluginmanagers │ ├── lazy.nix │ └── lz-n.nix ├── templates ├── experimental-flake-parts │ ├── README.md │ ├── config │ │ ├── bufferline.nix │ │ └── default.nix │ └── flake.nix └── simple │ ├── README.md │ ├── config │ ├── bufferline.nix │ └── default.nix │ └── flake.nix ├── tests ├── default.nix ├── enable-except-in-tests.nix ├── extend.nix ├── extra-args.nix ├── extra-files.nix ├── failing-tests.nix ├── fetch-tests.nix ├── generated.nix ├── lib-tests.nix ├── lsp-servers.nix ├── main.nix ├── maintainers.nix ├── nixpkgs-mock.nix ├── nixpkgs-module.nix ├── no-flake.nix ├── platforms │ ├── darwin.nix │ ├── default.nix │ ├── hm-extra-files-byte-compiling.nix │ ├── hm-submodule-merge.nix │ ├── hm.nix │ └── nixos.nix ├── plugins-by-name.nix ├── test-sources │ ├── env.nix │ ├── example-configurations │ │ └── issues.nix │ ├── examples.nix │ ├── extended-lib.nix │ ├── modules │ │ ├── autocmd.nix │ │ ├── clipboard.nix │ │ ├── commands.nix │ │ ├── dependencies.nix │ │ ├── diagnostics.nix │ │ ├── editorconfig.nix │ │ ├── extra-files.nix │ │ ├── files.nix │ │ ├── filetypes.nix │ │ ├── highlight.nix │ │ ├── keymaps.nix │ │ ├── lsp.nix │ │ ├── lua-loader.nix │ │ ├── options.nix │ │ ├── output.nix │ │ └── performance │ │ │ ├── byte-compile-lua.nix │ │ │ ├── combine-plugins.nix │ │ │ └── files │ │ │ └── file.lua │ └── plugins │ │ ├── by-name │ │ ├── actions-preview │ │ │ └── default.nix │ │ ├── aerial │ │ │ └── default.nix │ │ ├── airline │ │ │ └── default.nix │ │ ├── alpha │ │ │ └── default.nix │ │ ├── arrow │ │ │ └── default.nix │ │ ├── auto-save │ │ │ └── default.nix │ │ ├── auto-session │ │ │ └── default.nix │ │ ├── autoclose │ │ │ └── default.nix │ │ ├── autosource │ │ │ └── default.nix │ │ ├── avante │ │ │ └── default.nix │ │ ├── aw-watcher │ │ │ └── default.nix │ │ ├── bacon │ │ │ └── default.nix │ │ ├── baleia │ │ │ └── default.nix │ │ ├── barbar │ │ │ └── default.nix │ │ ├── barbecue │ │ │ └── default.nix │ │ ├── better-escape │ │ │ └── default.nix │ │ ├── blink-cmp-copilot │ │ │ └── default.nix │ │ ├── blink-cmp-dictionary │ │ │ └── default.nix │ │ ├── blink-cmp-git │ │ │ └── default.nix │ │ ├── blink-cmp-spell │ │ │ └── default.nix │ │ ├── blink-cmp │ │ │ └── default.nix │ │ ├── blink-compat │ │ │ └── default.nix │ │ ├── blink-copilot │ │ │ └── default.nix │ │ ├── blink-emoji │ │ │ └── default.nix │ │ ├── blink-ripgrep │ │ │ └── default.nix │ │ ├── bufdelete │ │ │ └── default.nix │ │ ├── bufferline │ │ │ └── default.nix │ │ ├── bullets │ │ │ └── default.nix │ │ ├── ccc │ │ │ └── default.nix │ │ ├── chadtree │ │ │ └── default.nix │ │ ├── chatgpt │ │ │ └── default.nix │ │ ├── clangd-extensions │ │ │ └── default.nix │ │ ├── claude-code │ │ │ └── default.nix │ │ ├── clipboard-image │ │ │ └── default.nix │ │ ├── cloak │ │ │ └── default.nix │ │ ├── cmake-tools │ │ │ └── default.nix │ │ ├── cmp-ai │ │ │ └── default.nix │ │ ├── cmp-git │ │ │ └── default.nix │ │ ├── cmp-tabby │ │ │ └── default.nix │ │ ├── cmp-tabnine │ │ │ └── default.nix │ │ ├── codecompanion │ │ │ └── default.nix │ │ ├── codesnap │ │ │ └── default.nix │ │ ├── colorful-menu │ │ │ └── default.nix │ │ ├── colorizer │ │ │ └── default.nix │ │ ├── comment-box │ │ │ └── default.nix │ │ ├── comment │ │ │ └── default.nix │ │ ├── commentary │ │ │ └── default.nix │ │ ├── committia │ │ │ └── default.nix │ │ ├── competitest │ │ │ └── default.nix │ │ ├── compiler │ │ │ └── default.nix │ │ ├── conform-nvim │ │ │ └── default.nix │ │ ├── conjure │ │ │ └── default.nix │ │ ├── copilot-chat │ │ │ └── default.nix │ │ ├── copilot-cmp │ │ │ └── default.nix │ │ ├── copilot-lua │ │ │ └── default.nix │ │ ├── copilot-vim │ │ │ └── default.nix │ │ ├── coq-nvim │ │ │ └── default.nix │ │ ├── coq-thirdparty │ │ │ └── default.nix │ │ ├── cord │ │ │ └── default.nix │ │ ├── cornelis │ │ │ └── default.nix │ │ ├── coverage │ │ │ └── default.nix │ │ ├── crates │ │ │ └── default.nix │ │ ├── csvview │ │ │ └── default.nix │ │ ├── cursorline │ │ │ └── default.nix │ │ ├── dap-go │ │ │ └── default.nix │ │ ├── dap-lldb │ │ │ └── default.nix │ │ ├── dap-python │ │ │ └── default.nix │ │ ├── dap-rr │ │ │ └── default.nix │ │ ├── dap-ui │ │ │ └── default.nix │ │ ├── dap-view │ │ │ └── default.nix │ │ ├── dap-virtual-text │ │ │ └── default.nix │ │ ├── dap │ │ │ └── default.nix │ │ ├── dashboard │ │ │ └── default.nix │ │ ├── dbee │ │ │ └── default.nix │ │ ├── debugprint │ │ │ └── default.nix │ │ ├── devdocs │ │ │ └── default.nix │ │ ├── diagram │ │ │ └── default.nix │ │ ├── dial │ │ │ └── default.nix │ │ ├── diffview │ │ │ └── default.nix │ │ ├── direnv │ │ │ └── default.nix │ │ ├── distant │ │ │ └── default.nix │ │ ├── dotnet │ │ │ └── default.nix │ │ ├── dressing │ │ │ └── default.nix │ │ ├── dropbar │ │ │ └── default.nix │ │ ├── earthly │ │ │ └── default.nix │ │ ├── easy-dotnet │ │ │ └── default.nix │ │ ├── easyescape │ │ │ └── default.nix │ │ ├── edgy │ │ │ └── default.nix │ │ ├── efmls-configs │ │ │ └── default.nix │ │ ├── emmet │ │ │ └── default.nix │ │ ├── endwise │ │ │ └── default.nix │ │ ├── fastaction │ │ │ └── default.nix │ │ ├── faust │ │ │ └── default.nix │ │ ├── femaco │ │ │ └── default.nix │ │ ├── fidget │ │ │ └── default.nix │ │ ├── firenvim │ │ │ └── default.nix │ │ ├── flash │ │ │ └── default.nix │ │ ├── flit │ │ │ └── default.nix │ │ ├── floaterm │ │ │ └── default.nix │ │ ├── flutter-tools │ │ │ └── default.nix │ │ ├── friendly-snippets │ │ │ └── default.nix │ │ ├── fugit2 │ │ │ └── default.nix │ │ ├── fugitive │ │ │ └── default.nix │ │ ├── fzf-lua │ │ │ └── default.nix │ │ ├── git-conflict │ │ │ └── default.nix │ │ ├── git-worktree │ │ │ └── default.nix │ │ ├── gitblame │ │ │ └── default.nix │ │ ├── gitgutter │ │ │ └── default.nix │ │ ├── gitignore │ │ │ └── default.nix │ │ ├── gitlab │ │ │ └── default.nix │ │ ├── gitlinker │ │ │ └── default.nix │ │ ├── gitmessenger │ │ │ └── default.nix │ │ ├── gitsigns │ │ │ └── default.nix │ │ ├── glance │ │ │ └── default.nix │ │ ├── glow │ │ │ └── default.nix │ │ ├── godot │ │ │ └── default.nix │ │ ├── goto-preview │ │ │ └── default.nix │ │ ├── goyo │ │ │ └── default.nix │ │ ├── grug-far │ │ │ └── default.nix │ │ ├── guess-indent │ │ │ └── default.nix │ │ ├── gx │ │ │ └── default.nix │ │ ├── hardtime │ │ │ └── default.nix │ │ ├── harpoon │ │ │ └── default.nix │ │ ├── haskell-scope-highlighting │ │ │ └── default.nix │ │ ├── headlines │ │ │ └── default.nix │ │ ├── helm │ │ │ └── default.nix │ │ ├── helpview │ │ │ └── default.nix │ │ ├── hex │ │ │ └── default.nix │ │ ├── highlight-colors │ │ │ └── default.nix │ │ ├── hlchunk │ │ │ └── default.nix │ │ ├── hmts │ │ │ └── default.nix │ │ ├── hop │ │ │ └── default.nix │ │ ├── hunk │ │ │ └── default.nix │ │ ├── hurl │ │ │ └── default.nix │ │ ├── hydra │ │ │ └── default.nix │ │ ├── idris2 │ │ │ └── default.nix │ │ ├── illuminate │ │ │ └── default.nix │ │ ├── image │ │ │ └── default.nix │ │ ├── improved-search │ │ │ └── default.nix │ │ ├── inc-rename │ │ │ └── default.nix │ │ ├── indent-blankline │ │ │ └── default.nix │ │ ├── indent-o-matic │ │ │ └── default.nix │ │ ├── indent-tools │ │ │ └── default.nix │ │ ├── instant │ │ │ └── default.nix │ │ ├── intellitab │ │ │ └── default.nix │ │ ├── iron │ │ │ └── default.nix │ │ ├── java │ │ │ └── default.nix │ │ ├── jdtls │ │ │ └── default.nix │ │ ├── julia-cell │ │ │ └── default.nix │ │ ├── jupytext │ │ │ └── default.nix │ │ ├── kulala │ │ │ └── default.nix │ │ ├── lastplace │ │ │ └── default.nix │ │ ├── lazydev │ │ │ └── default.nix │ │ ├── lazygit │ │ │ └── default.nix │ │ ├── lean │ │ │ └── default.nix │ │ ├── leap │ │ │ └── default.nix │ │ ├── ledger │ │ │ └── default.nix │ │ ├── lexima │ │ │ └── default.nix │ │ ├── lf │ │ │ └── default.nix │ │ ├── lightline │ │ │ └── default.nix │ │ ├── lilypond-suite │ │ │ └── default.nix │ │ ├── lint │ │ │ └── default.nix │ │ ├── lir │ │ │ └── default.nix │ │ ├── llm │ │ │ └── default.nix │ │ ├── lsp-format │ │ │ └── default.nix │ │ ├── lsp-lines │ │ │ └── default.nix │ │ ├── lsp-signature │ │ │ └── default.nix │ │ ├── lsp-status │ │ │ └── default.nix │ │ ├── lspconfig │ │ │ └── default.nix │ │ ├── lspkind │ │ │ └── default.nix │ │ ├── lspsaga │ │ │ └── default.nix │ │ ├── ltex-extra │ │ │ └── default.nix │ │ ├── lualine │ │ │ └── default.nix │ │ ├── luasnip │ │ │ └── default.nix │ │ ├── magma-nvim │ │ │ └── default.nix │ │ ├── mark-radar │ │ │ └── default.nix │ │ ├── markdown-preview │ │ │ └── default.nix │ │ ├── marks │ │ │ └── default.nix │ │ ├── markview │ │ │ └── default.nix │ │ ├── mini │ │ │ └── default.nix │ │ ├── minuet │ │ │ └── default.nix │ │ ├── mkdnflow │ │ │ └── default.nix │ │ ├── modicator │ │ │ └── default.nix │ │ ├── molten │ │ │ └── default.nix │ │ ├── multicursors │ │ │ └── default.nix │ │ ├── muren │ │ │ └── default.nix │ │ ├── nabla │ │ │ └── default.nix │ │ ├── navbuddy │ │ │ └── default.nix │ │ ├── navic │ │ │ └── default.nix │ │ ├── neo-tree │ │ │ └── default.nix │ │ ├── neoclip │ │ │ └── default.nix │ │ ├── neoconf │ │ │ └── default.nix │ │ ├── neocord │ │ │ └── default.nix │ │ ├── neogen │ │ │ └── default.nix │ │ ├── neogit │ │ │ └── default.nix │ │ ├── neorg │ │ │ └── default.nix │ │ ├── neoscroll │ │ │ └── default.nix │ │ ├── neotest │ │ │ ├── dart.nix │ │ │ ├── default.nix │ │ │ ├── dotnet.nix │ │ │ ├── elixir.nix │ │ │ ├── foundry.nix │ │ │ ├── go.nix │ │ │ ├── golang.nix │ │ │ ├── gtest.nix │ │ │ ├── haskell.nix │ │ │ ├── java.nix │ │ │ ├── jest.nix │ │ │ ├── minitest.nix │ │ │ ├── pest.nix │ │ │ ├── phpunit.nix │ │ │ ├── playwright.nix │ │ │ ├── plenary.nix │ │ │ ├── python.nix │ │ │ ├── rspec.nix │ │ │ ├── rust.nix │ │ │ ├── scala.nix │ │ │ └── vitest.nix │ │ ├── nerdy │ │ │ └── default.nix │ │ ├── netman │ │ │ └── default.nix │ │ ├── nix-develop │ │ │ └── default.nix │ │ ├── nix │ │ │ └── default.nix │ │ ├── noice │ │ │ └── default.nix │ │ ├── none-ls │ │ │ └── default.nix │ │ ├── notebook-navigator │ │ │ └── default.nix │ │ ├── notify │ │ │ └── default.nix │ │ ├── nui │ │ │ └── default.nix │ │ ├── numbertoggle │ │ │ └── default.nix │ │ ├── nvim-autopairs │ │ │ └── default.nix │ │ ├── nvim-bqf │ │ │ └── default.nix │ │ ├── nvim-lightbulb │ │ │ └── default.nix │ │ ├── nvim-osc52 │ │ │ └── default.nix │ │ ├── nvim-snippets │ │ │ └── default.nix │ │ ├── nvim-surround │ │ │ └── default.nix │ │ ├── nvim-tree │ │ │ └── default.nix │ │ ├── nvim-ufo │ │ │ └── default.nix │ │ ├── obsidian │ │ │ └── default.nix │ │ ├── octo │ │ │ └── default.nix │ │ ├── oil-git-status │ │ │ └── default.nix │ │ ├── oil │ │ │ └── default.nix │ │ ├── ollama │ │ │ └── default.nix │ │ ├── openscad │ │ │ └── default.nix │ │ ├── orgmode │ │ │ └── default.nix │ │ ├── origami │ │ │ └── default.nix │ │ ├── otter │ │ │ └── default.nix │ │ ├── overseer │ │ │ └── default.nix │ │ ├── package-info │ │ │ └── default.nix │ │ ├── papis │ │ │ └── default.nix │ │ ├── parinfer-rust │ │ │ └── default.nix │ │ ├── parrot │ │ │ └── default.nix │ │ ├── pckr │ │ │ └── default.nix │ │ ├── peek │ │ │ └── default.nix │ │ ├── persisted │ │ │ └── default.nix │ │ ├── persistence │ │ │ └── default.nix │ │ ├── plantuml-syntax │ │ │ └── default.nix │ │ ├── precognition │ │ │ └── default.nix │ │ ├── presence-nvim │ │ │ └── default.nix │ │ ├── preview │ │ │ └── default.nix │ │ ├── project-nvim │ │ │ └── default.nix │ │ ├── projections │ │ │ └── default.nix │ │ ├── qmk │ │ │ └── default.nix │ │ ├── quarto │ │ │ └── default.nix │ │ ├── quicker │ │ │ └── default.nix │ │ ├── quickmath │ │ │ └── default.nix │ │ ├── rainbow-delimiters │ │ │ └── default.nix │ │ ├── refactoring │ │ │ └── default.nix │ │ ├── remote-nvim │ │ │ └── default.nix │ │ ├── render-markdown │ │ │ └── default.nix │ │ ├── repeat │ │ │ └── default.nix │ │ ├── rest │ │ │ └── default.nix │ │ ├── rust-tools │ │ │ └── default.nix │ │ ├── rustaceanvim │ │ │ └── default.nix │ │ ├── sandwich │ │ │ └── default.nix │ │ ├── schemastore │ │ │ └── default.nix │ │ ├── scope │ │ │ └── default.nix │ │ ├── scrollview │ │ │ └── default.nix │ │ ├── sg │ │ │ └── default.nix │ │ ├── sleuth │ │ │ └── default.nix │ │ ├── smart-splits │ │ │ └── default.nix │ │ ├── smartcolumn │ │ │ └── default.nix │ │ ├── smear-cursor │ │ │ └── default.nix │ │ ├── snacks │ │ │ └── default.nix │ │ ├── sniprun │ │ │ └── default.nix │ │ ├── specs │ │ │ └── default.nix │ │ ├── spectre │ │ │ └── default.nix │ │ ├── spider │ │ │ └── default.nix │ │ ├── sqlite-lua │ │ │ └── default.nix │ │ ├── startify │ │ │ └── default.nix │ │ ├── startup │ │ │ └── default.nix │ │ ├── statuscol │ │ │ └── default.nix │ │ ├── supermaven │ │ │ └── default.nix │ │ ├── tagbar │ │ │ └── default.nix │ │ ├── tailwind-tools │ │ │ └── default.nix │ │ ├── telekasten │ │ │ └── default.nix │ │ ├── telescope │ │ │ ├── advanced-git-search.nix │ │ │ ├── default.nix │ │ │ ├── file-browser.nix │ │ │ ├── frecency.nix │ │ │ ├── fzf-native.nix │ │ │ ├── fzy-native.nix │ │ │ ├── live-grep-args.nix │ │ │ ├── manix.nix │ │ │ ├── media-files.nix │ │ │ ├── project.nix │ │ │ ├── ui-select.nix │ │ │ ├── undo.nix │ │ │ └── zoxide.nix │ │ ├── texpresso │ │ │ └── default.nix │ │ ├── timerly │ │ │ └── default.nix │ │ ├── tiny-devicons-auto-colors │ │ │ └── default.nix │ │ ├── tiny-inline-diagnostic │ │ │ └── default.nix │ │ ├── tinygit │ │ │ └── default.nix │ │ ├── tmux-navigator │ │ │ └── default.nix │ │ ├── todo-comments │ │ │ └── default.nix │ │ ├── toggleterm │ │ │ └── default.nix │ │ ├── transparent │ │ │ └── default.nix │ │ ├── treesitter-context │ │ │ └── default.nix │ │ ├── treesitter-refactor │ │ │ └── default.nix │ │ ├── treesitter-textobjects │ │ │ └── default.nix │ │ ├── treesitter │ │ │ ├── combine-plugins.nix │ │ │ └── default.nix │ │ ├── treesj │ │ │ └── default.nix │ │ ├── trim │ │ │ └── default.nix │ │ ├── trouble │ │ │ └── default.nix │ │ ├── ts-autotag │ │ │ └── default.nix │ │ ├── ts-comments │ │ │ └── default.nix │ │ ├── ts-context-commentstring │ │ │ └── default.nix │ │ ├── twilight │ │ │ └── default.nix │ │ ├── typescript-tools │ │ │ └── default.nix │ │ ├── typst-preview │ │ │ └── default.nix │ │ ├── typst-vim │ │ │ └── default.nix │ │ ├── undotree │ │ │ └── default.nix │ │ ├── vim-bbye │ │ │ └── default.nix │ │ ├── vim-be-good │ │ │ └── default.nix │ │ ├── vim-colemak │ │ │ └── default.nix │ │ ├── vim-css-color │ │ │ └── default.nix │ │ ├── vim-dadbod-completion │ │ │ └── default.nix │ │ ├── vim-dadbod-ui │ │ │ └── default.nix │ │ ├── vim-dadbod │ │ │ └── default.nix │ │ ├── vim-matchup │ │ │ └── default.nix │ │ ├── vim-slime │ │ │ └── default.nix │ │ ├── vim-suda │ │ │ └── default.nix │ │ ├── vim-surround │ │ │ └── default.nix │ │ ├── vim-test │ │ │ └── default.nix │ │ ├── vimade │ │ │ └── default.nix │ │ ├── vimtex │ │ │ └── default.nix │ │ ├── vimux │ │ │ └── default.nix │ │ ├── vimwiki │ │ │ └── default.nix │ │ ├── virt-column │ │ │ └── default.nix │ │ ├── visual-multi │ │ │ └── default.nix │ │ ├── visual-whitespace │ │ │ └── default.nix │ │ ├── wakatime │ │ │ └── default.nix │ │ ├── web-devicons │ │ │ └── default.nix │ │ ├── wezterm │ │ │ └── default.nix │ │ ├── which-key │ │ │ └── default.nix │ │ ├── whichpy │ │ │ └── default.nix │ │ ├── whitespace │ │ │ └── default.nix │ │ ├── wilder │ │ │ └── default.nix │ │ ├── windsurf-nvim │ │ │ └── default.nix │ │ ├── windsurf-vim │ │ │ └── default.nix │ │ ├── wrapping │ │ │ └── default.nix │ │ ├── wtf │ │ │ └── default.nix │ │ ├── yanky │ │ │ └── default.nix │ │ ├── yazi │ │ │ └── default.nix │ │ ├── zellij-nav │ │ │ └── default.nix │ │ ├── zellij │ │ │ └── default.nix │ │ ├── zen-mode │ │ │ └── default.nix │ │ ├── zig │ │ │ └── default.nix │ │ ├── zk │ │ │ └── default.nix │ │ └── zotcite │ │ │ └── default.nix │ │ ├── cmp │ │ ├── all-sources.nix │ │ ├── cmp-async-path.nix │ │ └── default.nix │ │ ├── colorschemes │ │ ├── ayu.nix │ │ ├── bamboo.nix │ │ ├── base16.nix │ │ ├── catppuccin.nix │ │ ├── cyberdream.nix │ │ ├── dracula-nvim.nix │ │ ├── dracula.nix │ │ ├── everforest.nix │ │ ├── github-theme.nix │ │ ├── gruvbox.nix │ │ ├── kanagawa-paper.nix │ │ ├── kanagawa.nix │ │ ├── melange.nix │ │ ├── modus.nix │ │ ├── monokai-pro.nix │ │ ├── nightfox.nix │ │ ├── nord.nix │ │ ├── one.nix │ │ ├── onedark.nix │ │ ├── oxocarbon.nix │ │ ├── palette.nix │ │ ├── poimandres.nix │ │ ├── rose-pine.nix │ │ ├── tokyonight.nix │ │ └── vscode.nix │ │ ├── lazyloading │ │ └── lz-n.nix │ │ ├── lsp │ │ ├── _lsp.nix │ │ ├── jsonls.nix │ │ ├── language-servers │ │ │ ├── ccls.nix │ │ │ ├── dartls.nix │ │ │ ├── jsonnet.nix │ │ │ ├── lua-ls.nix │ │ │ ├── nil-ls.nix │ │ │ ├── nixd.nix │ │ │ ├── pylsp.nix │ │ │ ├── svelte.nix │ │ │ ├── tinymist.nix │ │ │ └── vls.nix │ │ ├── ltex.nix │ │ ├── omnisharp.nix │ │ └── yamlls.nix │ │ ├── lua-config.nix │ │ └── pluginmanagers │ │ ├── lazy.nix │ │ └── lz-n.nix └── utils │ └── plugin-stubs.nix ├── typos.toml ├── update-scripts ├── README.md ├── default.nix ├── efmls-configs.nix ├── generate.nix ├── none-ls.nix ├── nvim-lspconfig │ ├── clean-desc.py │ ├── default.nix │ ├── desc-filter.lua │ └── lspconfig-servers.lua ├── rust-analyzer │ ├── default.nix │ └── heading_filter.lua ├── shell.nix ├── update.nix └── version-info │ ├── default.nix │ ├── main.nix │ └── supported-versions.nix ├── version-info.toml └── wrappers ├── _shared.nix ├── darwin.nix ├── hm.nix ├── modules ├── darwin.nix ├── hm.nix ├── nixos.nix ├── nixpkgs.nix └── shared.nix ├── nixos.nix └── standalone.nix /.editorconfig: -------------------------------------------------------------------------------- 1 | [*.sh] 2 | indent_style = space 3 | indent_size = 2 4 | 5 | [*.nix] 6 | indent_size = 2 7 | -------------------------------------------------------------------------------- /.envrc: -------------------------------------------------------------------------------- 1 | if ! has nix_direnv_version || ! nix_direnv_version 2.3.0; then 2 | source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.3.0/direnvrc" "sha256-Dmd+j63L84wuzgyjITIfSxSD57Tx7v51DMxVZOsiUD8=" 3 | fi 4 | 5 | watch_file flake-modules/**/* 6 | 7 | use flake 8 | -------------------------------------------------------------------------------- /.git-blame-ignore-revs: -------------------------------------------------------------------------------- 1 | # Git revisions added to this file will be ignored by GitHub's blame feature. 2 | # 3 | # This can also be used locally with `git blame` by configuring your "blame.ignoreRevsFile": 4 | # git config blame.ignoreRevsFile .git-blame-ignore-revs 5 | # 6 | # Or you can this on an ad-hock basis with the `--ignore-revs-file` argument: 7 | # git blame --ignore-revs-file .git-blame-ignore-revs 8 | 9 | # This commit reformatted from alejandra to nixfmt-rfc-style: 10 | # 2024-05-05: treewide: Reformat with nixfmt 11 | 62f32bfc711f0a3c8a52af4c0790345b4b3d2346 12 | 13 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug Report 3 | about: Report a bug to help us improve 4 | title: '[BUG] ' 5 | labels: bug 6 | assignees: '' 7 | --- 8 | 9 | | Field | Description | 10 | |--------------|-------------| 11 | | Plugin | `` | 12 | | Nixpkgs | `` | 13 | | Home Manager | `` | 14 | 15 | 16 | - [ ] I have read the [FAQ](https://nix-community.github.io/nixvim/user-guide/faq.html) and my bug is not listed there. 17 | 18 | ## Description 19 | 20 | 21 | 22 | ## Minimal, Reproducible Example (MRE) 23 | 24 | 25 | 26 | ```nix 27 | programs.nixvim = { 28 | } 29 | ``` 30 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Plugin Request 3 | about: Request support for a new plugin 4 | title: '[PLUGIN REQUEST] ' 5 | labels: enhancement 6 | assignees: '' 7 | --- 8 | 9 | | Field | Description | 10 | |----------|-------------| 11 | | Plugin | `` | 12 | | Homepage | `` | 13 | | Nixpkgs | `` | 14 | 15 | ## Extra Information 16 | 17 | 21 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # To get started with Dependabot version updates, you'll need to specify which 2 | # package ecosystems to update and where the package manifests are located. 3 | # Please see the documentation for all configuration options: 4 | # https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file 5 | 6 | version: 2 7 | updates: 8 | # Enable version updates for GitHub Actions 9 | - package-ecosystem: "github-actions" 10 | # Workflow files stored in the default location of `.github/workflows` 11 | # You don't need to specify `/.github/workflows` for `directory`. You can use `directory: "/"`. 12 | directory: "/" 13 | schedule: 14 | interval: "weekly" 15 | commit-message: 16 | prefix: "ci" 17 | -------------------------------------------------------------------------------- /.github/workflows/flakehub-publish-rolling.yml: -------------------------------------------------------------------------------- 1 | name: "Publish every Git push to main to FlakeHub" 2 | on: 3 | push: 4 | branches: 5 | - "main" 6 | jobs: 7 | flakehub-publish: 8 | if: github.repository == 'nix-community/nixvim' 9 | runs-on: "ubuntu-latest" 10 | permissions: 11 | id-token: "write" 12 | contents: "read" 13 | steps: 14 | - uses: "actions/checkout@v4" 15 | - uses: "DeterminateSystems/nix-installer-action@main" 16 | - uses: "DeterminateSystems/flakehub-push@main" 17 | with: 18 | name: ${{ github.repository }} 19 | rolling: true 20 | visibility: "public" 21 | -------------------------------------------------------------------------------- /.github/workflows/flakestry-publish-rolling.yml: -------------------------------------------------------------------------------- 1 | name: Publish every git push to Flakestry 2 | on: 3 | push: 4 | branches: 5 | - main 6 | workflow_dispatch: 7 | inputs: 8 | ref: 9 | description: "The existing reference to publish" 10 | type: "string" 11 | required: true 12 | jobs: 13 | publish-flake: 14 | if: github.event_name != 'push' || github.repository == 'nix-community/nixvim' 15 | runs-on: ubuntu-latest 16 | permissions: 17 | id-token: "write" 18 | contents: "read" 19 | steps: 20 | - uses: flakestry/flakestry-publish@main 21 | with: 22 | ref: "${{ inputs.ref || github.ref }}" 23 | -------------------------------------------------------------------------------- /.github/workflows/update-other.yml: -------------------------------------------------------------------------------- 1 | name: Schedule update for other branches 2 | on: 3 | # Runs every Saturday at noon 4 | schedule: 5 | - cron: "0 12 * * SAT" 6 | 7 | # Allow running workflows 8 | permissions: 9 | actions: write 10 | 11 | jobs: 12 | update: 13 | name: Trigger updates for nixvim's stable branches 14 | runs-on: ubuntu-latest 15 | if: github.repository == 'nix-community/nixvim' 16 | strategy: 17 | matrix: 18 | branches: 19 | - nixos-25.05 20 | - nixos-24.11 21 | steps: 22 | - name: Update ${{ matrix.branches }} 23 | env: 24 | GH_TOKEN: ${{ github.token }} 25 | repo: ${{ github.repository }} 26 | branch: ${{ matrix.branches }} 27 | run: | 28 | gh --repo "$repo" workflow run \ 29 | update.yml --ref "$branch" 30 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .tmp 2 | result 3 | .pre-commit-config.yaml 4 | .direnv 5 | 6 | templates/_wrapper/simple/flake.lock 7 | -------------------------------------------------------------------------------- /assets/nixvim_logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /buildbot-nix.toml: -------------------------------------------------------------------------------- 1 | attribute = "ci.buildbot" 2 | -------------------------------------------------------------------------------- /default.nix: -------------------------------------------------------------------------------- 1 | (import ( 2 | let 3 | lock = builtins.fromJSON (builtins.readFile ./flake/dev/flake.lock); 4 | in 5 | fetchTarball { 6 | url = 7 | lock.nodes.flake-compat.locked.url 8 | or "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz"; 9 | sha256 = lock.nodes.flake-compat.locked.narHash; 10 | } 11 | ) { src = ./.; }).defaultNix 12 | -------------------------------------------------------------------------------- /docs/fix-links/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | runCommand, 4 | pandoc, 5 | githubUrl ? "https://github.com/nix-community/nixvim/blob/main/", 6 | docsUrl ? "https://nix-community.github.io/nixvim/", 7 | }: 8 | src: 9 | runCommand (src.name or (builtins.baseNameOf src)) 10 | { 11 | inherit src; 12 | bindings = 13 | lib.generators.toLua 14 | { 15 | asBindings = true; 16 | } 17 | { 18 | inherit githubUrl docsUrl; 19 | }; 20 | filter = ./filter.lua; 21 | nativeBuildInputs = [ pandoc ]; 22 | } 23 | '' 24 | echo "$bindings" > filter.lua 25 | cat $filter >> filter.lua 26 | 27 | pandoc \ 28 | --output $out \ 29 | --from gfm \ 30 | --to gfm \ 31 | --lua-filter filter.lua \ 32 | $src 33 | '' 34 | -------------------------------------------------------------------------------- /docs/gfm-alerts-to-admonitions/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | buildPythonPackage, 3 | pytestCheckHook, 4 | markdown-it-py, 5 | lib, 6 | setuptools, 7 | pytest-regressions, 8 | }: 9 | buildPythonPackage { 10 | pname = "gfm-alerts-to-admonitions"; 11 | version = "0.0"; 12 | format = "pyproject"; 13 | 14 | src = ./.; 15 | 16 | build-system = [ setuptools ]; 17 | dependencies = [ markdown-it-py ]; 18 | 19 | nativeCheckInputs = [ 20 | pytestCheckHook 21 | pytest-regressions 22 | ]; 23 | pythonImportsCheck = [ "gfm_alerts_to_admonitions" ]; 24 | 25 | meta = { 26 | description = "Transform GFM alerts to nixos-render-docs admonitions"; 27 | license = lib.licenses.mit; 28 | maintainers = [ lib.maintainers.traxys ]; 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /docs/gfm-alerts-to-admonitions/gfm_alerts_to_admonitions/__init__.py: -------------------------------------------------------------------------------- 1 | from .main import gfm_alert_to_admonition as gfm_alert_to_admonition 2 | -------------------------------------------------------------------------------- /docs/gfm-alerts-to-admonitions/pyproject.toml: -------------------------------------------------------------------------------- 1 | [project] 2 | name = "gfm-alerts-to-admonitions" 3 | version = "0.0" 4 | description = "MarkdownIt plugin to convert gfm alerts to nixos-render-docs admonitions" 5 | classifiers = [ 6 | "Programming Language :: Python :: 3", 7 | "License :: OSI Approved :: MIT License", 8 | "Operating System :: OS Independent", 9 | ] 10 | 11 | [build-system] 12 | requires = ["setuptools"] 13 | 14 | [tool.pytest.ini_options] 15 | pythonpath = ["."] 16 | -------------------------------------------------------------------------------- /docs/lib/menu.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | pageSpecs, 4 | indentSize ? " ", 5 | }: 6 | let 7 | pageToLines = 8 | indent: parentName: 9 | { 10 | name, 11 | outFile ? "", 12 | pages ? { }, 13 | ... 14 | }: 15 | let 16 | menuName = lib.strings.removePrefix (parentName + ".") name; 17 | children = builtins.attrValues pages; 18 | # Only add node to the menu if it has content or multiple children 19 | useNodeInMenu = outFile != "" || builtins.length children > 1; 20 | parentOfChildren = if useNodeInMenu then name else parentName; 21 | in 22 | lib.optional useNodeInMenu "${indent}- [${menuName}](${outFile})" 23 | ++ lib.optionals (children != [ ]) ( 24 | builtins.concatMap (pageToLines (indent + indentSize) parentOfChildren) children 25 | ); 26 | in 27 | lib.pipe pageSpecs [ 28 | builtins.attrValues 29 | (builtins.concatMap (pageToLines "" "")) 30 | lib.concatLines 31 | ] 32 | -------------------------------------------------------------------------------- /docs/lib/pages.nix: -------------------------------------------------------------------------------- 1 | # This file contains a list of function reference docs pages that should be generated by `nixdoc` 2 | # 3 | # Note: `nixdoc` uses `rnix` to parse the input file, so the file must return a fairly simple attrset. 4 | # If there is an issue parsing the file, the resulting markdown will not contain any function docs. 5 | 6 | { 7 | lib.pages = { 8 | nixvim = { 9 | title = "Nixvim's functions"; 10 | markdown = ./index.md; 11 | 12 | pages = { 13 | utils = { 14 | file = ../../lib/utils.nix; 15 | title = "utility functions"; 16 | }; 17 | lua = { 18 | file = ../../lib/to-lua.nix; 19 | title = "lua functions"; 20 | }; 21 | }; 22 | }; 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /docs/man/filter.lua: -------------------------------------------------------------------------------- 1 | local text = pandoc.text 2 | 3 | function Header(el) 4 | if el.level == 1 then 5 | return el:walk({ 6 | Str = function(el) 7 | return pandoc.Str(text.upper(el.text)) 8 | end, 9 | }) 10 | end 11 | end 12 | 13 | function Link(el) 14 | return el.content 15 | end 16 | -------------------------------------------------------------------------------- /docs/man/nixvim-footer.5: -------------------------------------------------------------------------------- 1 | .SH "AUTHORS" 2 | .PP 3 | nixvim maintainers 4 | -------------------------------------------------------------------------------- /docs/man/nixvim-header-end.5: -------------------------------------------------------------------------------- 1 | .SH "OPTIONS" 2 | .PP 3 | You can use the following options in a NixVim module. 4 | -------------------------------------------------------------------------------- /docs/man/nixvim-header-start.5: -------------------------------------------------------------------------------- 1 | .TH "NIXVIM" "5" "01/01/1980" "NixVim" "NixVim Reference Pages" 2 | .\" disable hyphenation 3 | .nh 4 | .\" disable justification (adjust text to left margin only) 5 | .ad l 6 | .\" enable line breaks after slashes 7 | .cflags 4 / 8 | .SH "NAME" 9 | NixVim options specification 10 | .SH "DESCRIPTION" 11 | .PP 12 | This page lists all the options that can be used in NixVim. It can either be used as a Home-Manager module, an NixOS module or a standalone package. Please refer to the installation instructions for more details. 13 | -------------------------------------------------------------------------------- /docs/mdbook/SUMMARY.md: -------------------------------------------------------------------------------- 1 | # Structure for nixvim docs 2 | 3 | - [Home](./index.md) 4 | 5 | # User guide 6 | 7 | - [Installation](./user-guide/install.md) 8 | - [FAQ](./user-guide/faq.md) 9 | - [Configuration examples](./user-guide/config-examples.md) 10 | - [Lazy Loading](./user-guide/lazy-loading.md) 11 | 12 | # Functions 13 | 14 | @FUNCTIONS_MENU@ 15 | 16 | # Platforms 17 | 18 | - [Nixvim Platforms](./platforms/index.md) 19 | @PLATFORM_OPTIONS@ 20 | - [Standalone](./platforms/standalone.md) 21 | 22 | # Options 23 | 24 | @NIXVIM_OPTIONS@ 25 | 26 | # 27 | 28 | --- 29 | 30 | [Contributing](./CONTRIBUTING.md) 31 | [Maintaining](./MAINTAINING.md) 32 | [NixVim Options Search](./search/index.html) 33 | -------------------------------------------------------------------------------- /docs/mdbook/book.toml: -------------------------------------------------------------------------------- 1 | [book] 2 | authors = [] 3 | language = "en" 4 | multilingual = false 5 | src = "." 6 | title = "nixvim docs" 7 | 8 | [output.html] 9 | site-url = "@SITE_URL@" 10 | additional-js = ["theme/pagetoc.js"] 11 | additional-css = ["theme/pagetoc.css"] 12 | 13 | # Redirect targets must be relative to their origin; 14 | # absolute paths can break with different baseHrefs. 15 | [output.html.redirect] 16 | "/user-guide/helpers.html" = "../lib/nixvim/index.html" # Since #3049 17 | 18 | [output.html.fold] 19 | enable = true 20 | level = 0 21 | 22 | [preprocessor.alerts] 23 | 24 | [preprocessor.pagetoc] 25 | -------------------------------------------------------------------------------- /docs/platforms/index.md: -------------------------------------------------------------------------------- 1 | # Platform-specific options 2 | 3 | All of Nixvim's options are available within `programs.nixvim.*` when Nixvim is used via wrapper modules, 4 | such as our NixOS, home-manager, or nix-darwin modules. 5 | 6 | When Nixvim is used standalone (without a wrapper module), its options are available at the "top-level". 7 | See [Standalone Usage](./standalone.md) for more info. 8 | 9 | There are a few wrapper specific options, which are documented in their respective sub-pages. 10 | 11 | -------------------------------------------------------------------------------- /docs/server/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | docs, 3 | http-server, 4 | writeShellApplication, 5 | }: 6 | writeShellApplication { 7 | name = "serve-docs"; 8 | runtimeInputs = [ http-server ]; 9 | runtimeEnv.server_flags = [ 10 | # Search for available port 11 | "--port=0" 12 | 13 | # Disable browser cache 14 | "-c-1" 15 | 16 | # Open using xdg-open 17 | "-o" 18 | ]; 19 | text = '' 20 | http-server ${docs} "''${server_flags[@]}" 21 | ''; 22 | } 23 | -------------------------------------------------------------------------------- /flake/dev/package-tests.nix: -------------------------------------------------------------------------------- 1 | { 2 | perSystem = 3 | { config, ... }: 4 | { 5 | # Test that all packages build fine when running `nix flake check`. 6 | checks = config.packages; 7 | 8 | # Test that all packages build when running buildbot 9 | # TODO: only test the docs on x86_64-linux 10 | ci.buildbot = config.packages; 11 | }; 12 | } 13 | -------------------------------------------------------------------------------- /flake/dev/tests.nix: -------------------------------------------------------------------------------- 1 | { 2 | self, 3 | helpers, 4 | ... 5 | }: 6 | { 7 | perSystem = 8 | { pkgs, ... }: 9 | { 10 | # TODO: consider whether all these tests are needed in the `checks` output 11 | checks = pkgs.callPackages ../../tests { 12 | inherit helpers self; 13 | }; 14 | 15 | # TODO: consider whether all these tests are needed to be built by buildbot 16 | ci.buildbot = pkgs.callPackages ../../tests { 17 | inherit helpers self; 18 | allSystems = false; 19 | }; 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /flake/flake-modules/default.nix: -------------------------------------------------------------------------------- 1 | { inputs, ... }: 2 | let 3 | # Modules for the flakeModules output and the default module 4 | defaultModules = { 5 | nixvimModules = ./nixvimModules.nix; 6 | nixvimConfigurations = ./nixvimConfigurations.nix; 7 | auto = ./auto.nix; 8 | }; 9 | 10 | # Modules for the flakeModules output, but not the default module 11 | extraModules = { 12 | default.imports = builtins.attrValues defaultModules; 13 | }; 14 | in 15 | { 16 | imports = [ 17 | inputs.flake-parts.flakeModules.flakeModules 18 | extraModules.default 19 | ]; 20 | 21 | flake.flakeModules = defaultModules // extraModules; 22 | } 23 | -------------------------------------------------------------------------------- /flake/flake-modules/nixvimConfigurations.nix: -------------------------------------------------------------------------------- 1 | { lib, flake-parts-lib, ... }: 2 | let 3 | configurationType = lib.mkOptionType { 4 | name = "configuration"; 5 | description = "configuration"; 6 | descriptionClass = "noun"; 7 | merge = lib.options.mergeOneOption; 8 | check = x: x._type or null == "configuration"; 9 | }; 10 | in 11 | flake-parts-lib.mkTransposedPerSystemModule { 12 | name = "nixvimConfigurations"; 13 | option = lib.mkOption { 14 | type = lib.types.lazyAttrsOf configurationType; 15 | default = { }; 16 | description = '' 17 | An attribute set of Nixvim configurations. 18 | ''; 19 | }; 20 | file = ./nixvimConfigurations.nix; 21 | } 22 | -------------------------------------------------------------------------------- /flake/flake-modules/nixvimModules.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | flake-parts-lib, 4 | moduleLocation, 5 | ... 6 | }: 7 | { 8 | options = { 9 | flake = flake-parts-lib.mkSubmoduleOptions { 10 | nixvimModules = lib.mkOption { 11 | type = with lib.types; lazyAttrsOf deferredModule; 12 | default = { }; 13 | apply = lib.mapAttrs ( 14 | name: module: { 15 | _file = "${toString moduleLocation}#nixvimModules.${name}"; 16 | imports = [ module ]; 17 | } 18 | ); 19 | description = '' 20 | Nixvim modules. 21 | 22 | You may use this for reusable pieces of configuration, utility modules, etc. 23 | ''; 24 | }; 25 | }; 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /flake/legacy-packages.nix: -------------------------------------------------------------------------------- 1 | { 2 | perSystem = 3 | { 4 | config, 5 | makeNixvimWithModule, 6 | ... 7 | }: 8 | { 9 | legacyPackages = rec { 10 | inherit makeNixvimWithModule; 11 | makeNixvim = module: makeNixvimWithModule { inherit module; }; 12 | nixvimConfiguration = config.nixvimConfigurations.default; 13 | }; 14 | }; 15 | } 16 | -------------------------------------------------------------------------------- /flake/nixvim-configurations.nix: -------------------------------------------------------------------------------- 1 | { helpers, ... }: 2 | { 3 | perSystem = 4 | { system, ... }: 5 | { 6 | nixvimConfigurations.default = helpers.modules.evalNixvim { 7 | inherit system; 8 | }; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /flake/overlays.nix: -------------------------------------------------------------------------------- 1 | { inputs, ... }: 2 | { 3 | imports = [ inputs.flake-parts.flakeModules.easyOverlay ]; 4 | perSystem = 5 | { 6 | config, 7 | pkgs, 8 | final, 9 | ... 10 | }: 11 | { 12 | overlayAttrs = { 13 | nixvim = { 14 | inherit (config.legacyPackages) makeNixvim makeNixvimWithModule; 15 | }; 16 | }; 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /flake/packages.nix: -------------------------------------------------------------------------------- 1 | { 2 | self, 3 | inputs, 4 | helpers, 5 | ... 6 | }: 7 | { 8 | perSystem = 9 | { 10 | config, 11 | inputs', 12 | system, 13 | ... 14 | }: 15 | { 16 | # Run the docs server when using `nix run .#docs` 17 | apps.docs.program = config.packages.serve-docs; 18 | 19 | packages = import ../docs { 20 | nixvim = self; 21 | inherit helpers; 22 | inherit system; 23 | inherit (inputs) nixpkgs; 24 | inherit (inputs') nuschtosSearch; 25 | }; 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /flake/templates.nix: -------------------------------------------------------------------------------- 1 | { 2 | flake.templates = { 3 | default = { 4 | path = ../templates/simple; 5 | description = "A simple nix flake template for getting started with nixvim"; 6 | }; 7 | new = { 8 | path = ../templates/experimental-flake-parts; 9 | description = "An experimental flake template for configuring nixvim using evalNixvim and flake.parts"; 10 | }; 11 | }; 12 | } 13 | -------------------------------------------------------------------------------- /lib/overlay.nix: -------------------------------------------------------------------------------- 1 | { flake }: 2 | final: prev: { 3 | # Include our custom lib 4 | nixvim = flake.lib.nixvim.override { 5 | lib = final; 6 | _isExtended = true; 7 | }; 8 | 9 | # Merge in our maintainers 10 | maintainers = prev.maintainers // import ./maintainers.nix; 11 | 12 | # Merge in our custom types 13 | types = prev.types // import ./types.nix { lib = final; }; 14 | } 15 | -------------------------------------------------------------------------------- /lib/pkg-lists.nix: -------------------------------------------------------------------------------- 1 | # This file isn't (currently) part of `lib.nixvim`, but is used directly by `efmls` and `none-ls` pkg lists 2 | lib: rec { 3 | # Produces an attrset of { ${name} = name; } 4 | topLevel = names: lib.genAttrs names lib.id; 5 | 6 | # Produces an attrset of { ${name} = null; } 7 | nullAttrs = names: lib.genAttrs names (_: null); 8 | 9 | # Produces an attrset of { ${name} = [ scope name ]; } 10 | # Where the "scope" is the (nested) attr names, 11 | # and "name" is the value. 12 | # If the name value is a list, it will be expanded into multiple attrs. 13 | scoped = lib.concatMapAttrs ( 14 | scope: v: 15 | if builtins.isAttrs v then 16 | lib.mapAttrs (_: loc: [ scope ] ++ loc) (scoped v) 17 | else 18 | lib.genAttrs (lib.toList v) (name: [ 19 | scope 20 | name 21 | ]) 22 | ); 23 | } 24 | -------------------------------------------------------------------------------- /lib/plugins/default.nix: -------------------------------------------------------------------------------- 1 | { lib }: 2 | let 3 | self = lib.nixvim.plugins; 4 | call = lib.callPackageWith (self // { inherit call lib self; }); 5 | in 6 | { 7 | utils = call ./utils.nix { }; 8 | neovim = call ./neovim.nix { }; 9 | vim = call ./vim.nix { }; 10 | 11 | # Aliases 12 | inherit (self.neovim) mkNeovimPlugin; 13 | inherit (self.vim) mkVimPlugin; 14 | } 15 | -------------------------------------------------------------------------------- /lib/plugins/neovim.nix: -------------------------------------------------------------------------------- 1 | { 2 | call, 3 | lib, 4 | }: 5 | { 6 | mkNeovimPlugin = call ./mk-neovim-plugin.nix { }; 7 | 8 | # TODO: DEPRECATED: use the `settings` option instead 9 | extraOptionsOptions = { 10 | extraOptions = lib.mkOption { 11 | default = { }; 12 | type = with lib.types; attrsOf anything; 13 | description = '' 14 | These attributes will be added to the table parameter for the setup function. 15 | Typically, it can override NixVim's default settings. 16 | ''; 17 | }; 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /modules/colorscheme.nix: -------------------------------------------------------------------------------- 1 | { config, lib, ... }: 2 | { 3 | options = { 4 | colorscheme = lib.mkOption { 5 | type = lib.types.nullOr lib.types.str; 6 | description = "The name of the colorscheme to use"; 7 | default = null; 8 | }; 9 | }; 10 | 11 | config = lib.mkIf (config.colorscheme != "" && config.colorscheme != null) { 12 | extraConfigVim = '' 13 | colorscheme ${config.colorscheme} 14 | ''; 15 | }; 16 | } 17 | -------------------------------------------------------------------------------- /modules/default.nix: -------------------------------------------------------------------------------- 1 | # This module includes the nixvim modules that should always be evaluated. 2 | # 3 | # You may want to use the `/modules/top-level` module instead, unless you're 4 | # using this in a submodule nested within another nixvim config. 5 | { 6 | imports = [ 7 | ./lsp 8 | ./misc 9 | ./autocmd.nix 10 | ./clipboard.nix 11 | ./colorscheme.nix 12 | ./commands.nix 13 | ./dependencies.nix 14 | ./diagnostic.nix 15 | ./doc.nix 16 | ./editorconfig.nix 17 | ./files.nix 18 | ./filetype.nix 19 | ./highlights.nix 20 | ./keymaps.nix 21 | ./lazyload.nix 22 | ./lua-loader.nix 23 | ./opts.nix 24 | ./output.nix 25 | ./performance.nix 26 | ./plugins.nix 27 | ]; 28 | } 29 | -------------------------------------------------------------------------------- /modules/doc.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | { 3 | options.enableMan = lib.mkOption { 4 | type = lib.types.bool; 5 | default = true; 6 | description = "Install the man pages for NixVim options."; 7 | }; 8 | } 9 | -------------------------------------------------------------------------------- /modules/lsp/default.nix: -------------------------------------------------------------------------------- 1 | { lib, config, ... }: 2 | let 3 | cfg = config.lsp; 4 | in 5 | { 6 | options.lsp = { 7 | luaConfig = lib.mkOption { 8 | type = lib.types.pluginLuaConfig; 9 | default = { }; 10 | description = '' 11 | Lua code configuring LSP. 12 | ''; 13 | }; 14 | 15 | inlayHints = { 16 | enable = lib.mkEnableOption "inlay hints globally"; 17 | }; 18 | }; 19 | 20 | imports = [ 21 | ./servers 22 | ./keymaps.nix 23 | ./on-attach.nix 24 | ]; 25 | 26 | config = { 27 | lsp.luaConfig.content = lib.mkIf cfg.inlayHints.enable "vim.lsp.inlay_hint.enable(true)"; 28 | 29 | extraConfigLua = lib.mkIf (cfg.luaConfig.content != "") '' 30 | -- LSP {{{ 31 | do 32 | ${cfg.luaConfig.content} 33 | end 34 | -- }}} 35 | ''; 36 | }; 37 | } 38 | -------------------------------------------------------------------------------- /modules/lsp/servers/server-renames.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | { 3 | # NOTE: we need a warnings option for `mkRenamedOptionModule` to warn about unexpected definitions 4 | # This can be removed when all rename aliases are gone 5 | options.warnings = lib.mkOption { 6 | type = with lib.types; listOf str; 7 | description = "Warnings to propagate to nixvim's `warnings` option."; 8 | default = [ ]; 9 | internal = true; 10 | visible = false; 11 | }; 12 | 13 | imports = [ 14 | # TODO: rename added 2025-04-30 (during the 25.05 cycle) 15 | # The previous name `config` was introduced 2025-04-28 (during the 25.05 cycle) 16 | # Because the previous name `config` never made it into a stable release, 17 | # we could consider dropping this alias sooner than normal. 18 | (lib.mkRenamedOptionModule [ "config" ] [ "settings" ]) 19 | ]; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /modules/lua-loader.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | config, 4 | ... 5 | }: 6 | let 7 | cfg = config.luaLoader; 8 | inherit (lib.nixvim) mkNullOrOption mkIfNonNull' toLuaObject; 9 | in 10 | { 11 | options.luaLoader.enable = mkNullOrOption lib.types.bool '' 12 | Whether to enable/disable the experimental lua loader: 13 | 14 | If `true`: Enables the experimental Lua module loader: 15 | - overrides loadfile 16 | - adds the lua loader using the byte-compilation cache 17 | - adds the libs loader 18 | - removes the default Neovim loader 19 | 20 | If `false`: Disables the experimental Lua module loader: 21 | - removes the loaders 22 | - adds the default Neovim loader 23 | 24 | If `null`: Nothing is configured. 25 | ''; 26 | 27 | config = mkIfNonNull' cfg.enable { 28 | extraConfigLuaPre = "vim.loader.enable(${toLuaObject cfg.enable})"; 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /modules/misc/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./assertions.nix 4 | ./context.nix 5 | ./meta.nix 6 | ./nixvim-info.nix 7 | ]; 8 | } 9 | -------------------------------------------------------------------------------- /modules/plugins.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | let 3 | inherit (builtins) readDir; 4 | inherit (lib.attrsets) foldlAttrs; 5 | inherit (lib.lists) optional; 6 | by-name = ../plugins/by-name; 7 | in 8 | { 9 | imports = 10 | [ ../plugins ] 11 | ++ foldlAttrs ( 12 | prev: name: type: 13 | prev ++ optional (type == "directory") (by-name + "/${name}") 14 | ) [ ] (readDir by-name); 15 | } 16 | -------------------------------------------------------------------------------- /modules/top-level/default.nix: -------------------------------------------------------------------------------- 1 | # Alternative to `/modules` that also includes modules that should only exist at the "top-level". 2 | # Therefore, `/modules` should be used instead for submodules nested within a nixvim config. 3 | # 4 | # When using this, you likely also want a "wrapper" module for any platform-specific options. 5 | # See `/wrappers/modules` for examples. 6 | { 7 | imports = [ 8 | ../. 9 | ./files 10 | ./nixpkgs.nix 11 | ./output.nix 12 | ./plugins 13 | ./readonly-renames.nix 14 | ./test.nix 15 | ]; 16 | 17 | config = { 18 | isTopLevel = true; 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /modules/top-level/files/submodule.nix: -------------------------------------------------------------------------------- 1 | { 2 | name, 3 | config, 4 | lib, 5 | pkgs, 6 | ... 7 | }: 8 | { 9 | options = { 10 | plugin = lib.mkOption { 11 | type = lib.types.package; 12 | description = "A derivation with the content of the file in it"; 13 | readOnly = true; 14 | internal = true; 15 | }; 16 | }; 17 | config = 18 | let 19 | derivationName = "nvim-" + lib.replaceStrings [ "/" ] [ "-" ] name; 20 | writeContent = 21 | if config.type == "lua" then lib.nixvim.builders.writeLuaWith pkgs else pkgs.writeText; 22 | in 23 | { 24 | path = lib.mkDefault name; 25 | type = lib.mkDefault (if lib.hasSuffix ".vim" name then "vim" else "lua"); 26 | # No need to use mkDerivedConfig; this option is readOnly. 27 | plugin = writeContent derivationName config.content; 28 | }; 29 | } 30 | -------------------------------------------------------------------------------- /modules/top-level/plugins/byte-compile-plugins.nix: -------------------------------------------------------------------------------- 1 | /* 2 | Byte compiling of normalized plugin list 3 | 4 | Inputs: List of normalized plugins 5 | Outputs: List of normalized (compiled) plugins 6 | */ 7 | { lib, pkgs }: 8 | let 9 | builders = lib.nixvim.builders.withPkgs pkgs; 10 | inherit (import ./utils.nix lib) mapNormalizedPlugins; 11 | 12 | byteCompile = 13 | p: 14 | (builders.byteCompileLuaDrv p).overrideAttrs ( 15 | prev: lib.optionalAttrs (prev ? dependencies) { dependencies = map byteCompile prev.dependencies; } 16 | ); 17 | in 18 | mapNormalizedPlugins byteCompile 19 | -------------------------------------------------------------------------------- /plugins/TEMPLATE.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkNeovimPlugin { 3 | name = "my-plugin"; 4 | moduleName = "my-plugin"; # TODO replace (or remove entirely if it is the same as `name`) 5 | packPathName = "my-plugin.nvim"; # TODO replace (or remove entirely if it is the same as `name`) 6 | package = "my-plugin-nvim"; # TODO replace 7 | 8 | # TODO replace with your name 9 | maintainers = [ lib.maintainers.MyName ]; 10 | 11 | # TODO provide an example for the `settings` option (or remove entirely if there is no useful example) 12 | # NOTE you can use `lib.literalExpression` or `lib.literalMD` if needed 13 | settingsExample = { 14 | foo = 42; 15 | bar.__raw = "function() print('hello') end"; 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /plugins/by-name/autoclose/deprecations.nix: -------------------------------------------------------------------------------- 1 | { 2 | deprecateExtraOptions = true; 3 | optionsRenamedToSettings = [ 4 | "keys" 5 | [ 6 | "options" 7 | "disabledFiletypes" 8 | ] 9 | [ 10 | "options" 11 | "disableWhenTouch" 12 | ] 13 | [ 14 | "options" 15 | "touchRegex" 16 | ] 17 | [ 18 | "options" 19 | "pairSpaces" 20 | ] 21 | [ 22 | "options" 23 | "autoIndent" 24 | ] 25 | [ 26 | "options" 27 | "disableCommandMode" 28 | ] 29 | ]; 30 | } 31 | -------------------------------------------------------------------------------- /plugins/by-name/bacon/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkNeovimPlugin { 3 | name = "bacon"; 4 | package = "nvim-bacon"; 5 | maintainers = [ lib.maintainers.alisonjenkins ]; 6 | 7 | settingsOptions = { 8 | quickfix = { 9 | enabled = lib.nixvim.defaultNullOpts.mkBool true '' 10 | Whether to populate the quickfix list with bacon errors and warnings. 11 | ''; 12 | 13 | event_trigger = lib.nixvim.defaultNullOpts.mkBool true '' 14 | Triggers the `QuickFixCmdPost` event after populating the quickfix list. 15 | ''; 16 | }; 17 | }; 18 | 19 | settingsExample = { 20 | quickfix = { 21 | enabled = false; 22 | event_trigger = true; 23 | }; 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /plugins/by-name/bullets/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkVimPlugin { 3 | name = "bullets"; 4 | url = "https://github.com/bullets-vim/bullets.vim"; 5 | description = '' 6 | Bullets.vim is a Vim plugin for automated bullet lists. 7 | ''; 8 | packPathName = "bullets.vim"; 9 | package = "bullets-vim"; 10 | globalPrefix = "bullets_"; 11 | maintainers = [ lib.maintainers.DanielLaing ]; 12 | 13 | settingsExample = { 14 | enabled_file_types = [ 15 | "markdown" 16 | "text" 17 | "gitcommit" 18 | "scratch" 19 | ]; 20 | nested_checkboxes = 0; 21 | enable_in_empty_buffers = 0; 22 | }; 23 | } 24 | -------------------------------------------------------------------------------- /plugins/by-name/clangd-extensions/renamed-options.nix: -------------------------------------------------------------------------------- 1 | let 2 | inlayHintsOptions = [ 3 | "inline" 4 | "onlyCurrentLine" 5 | "onlyCurrentLineAutocmd" 6 | "showParameterHints" 7 | "parameterHintsPrefix" 8 | "otherHintsPrefix" 9 | "maxLenAlign" 10 | "maxLenAlignPadding" 11 | "rightAlign" 12 | "rightAlignPadding" 13 | "highlight" 14 | "priority" 15 | ]; 16 | astOptions = [ 17 | "roleIcons" 18 | "kindIcons" 19 | "highlights" 20 | ]; 21 | in 22 | [ 23 | "memoryUsage" 24 | "symbolInfo" 25 | ] 26 | ++ map (oldOption: [ 27 | "inlayHints" 28 | oldOption 29 | ]) inlayHintsOptions 30 | ++ map (oldOption: [ 31 | "ast" 32 | oldOption 33 | ]) astOptions 34 | -------------------------------------------------------------------------------- /plugins/by-name/claude-code/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkNeovimPlugin { 3 | name = "claude-code"; 4 | packPathName = "claude-code.nvim"; 5 | package = "claude-code-nvim"; 6 | 7 | maintainers = [ lib.maintainers.khaneliman ]; 8 | 9 | dependencies = [ 10 | "claude-code" 11 | ]; 12 | 13 | settingsExample = { 14 | window = { 15 | split_ratio = 0.4; 16 | position = "vertical"; 17 | hide_numbers = false; 18 | hide_signcolumn = false; 19 | }; 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /plugins/by-name/comment/renamed-options.nix: -------------------------------------------------------------------------------- 1 | [ 2 | "padding" 3 | "sticky" 4 | "ignore" 5 | [ 6 | "toggler" 7 | "line" 8 | ] 9 | [ 10 | "toggler" 11 | "block" 12 | ] 13 | [ 14 | "opleader" 15 | "line" 16 | ] 17 | [ 18 | "opleader" 19 | "block" 20 | ] 21 | [ 22 | "mappings" 23 | "basic" 24 | ] 25 | [ 26 | "mappings" 27 | "extra" 28 | ] 29 | "preHook" 30 | "postHook" 31 | ] 32 | -------------------------------------------------------------------------------- /plugins/by-name/commentary/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | helpers, 4 | ... 5 | }: 6 | lib.nixvim.plugins.mkVimPlugin { 7 | name = "commentary"; 8 | packPathName = "vim-commentary"; 9 | package = "vim-commentary"; 10 | 11 | # TODO Add support for additional filetypes. This requires autocommands! 12 | 13 | maintainers = [ lib.maintainers.GaetanLepage ]; 14 | 15 | # This plugin has no config options 16 | } 17 | -------------------------------------------------------------------------------- /plugins/by-name/compiler/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | ... 4 | }: 5 | lib.nixvim.plugins.mkNeovimPlugin { 6 | name = "compiler"; 7 | packPathName = "compiler.nvim"; 8 | package = "compiler-nvim"; 9 | 10 | maintainers = [ lib.maintainers.khaneliman ]; 11 | 12 | description = '' 13 | > [!Note] 14 | > Some languages require you manually install their compilers in your machine, so `compiler.nvim` is able to call them. 15 | > Please check [here], as the packages will be different depending your operative system. 16 | 17 | [here]: https://github.com/Zeioth/Compiler.nvim/wiki/how-to-install-the-required-dependencies 18 | ''; 19 | } 20 | -------------------------------------------------------------------------------- /plugins/by-name/conjure/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | ... 4 | }: 5 | lib.nixvim.plugins.mkVimPlugin { 6 | name = "conjure"; 7 | 8 | maintainers = [ lib.maintainers.GaetanLepage ]; 9 | } 10 | -------------------------------------------------------------------------------- /plugins/by-name/cord/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | ... 4 | }: 5 | lib.nixvim.plugins.mkNeovimPlugin { 6 | name = "cord"; 7 | packPathName = "cord.nvim"; 8 | package = "cord-nvim"; 9 | maintainers = [ lib.maintainers.eveeifyeve ]; 10 | 11 | settingsExample = { 12 | usercmd = false; 13 | display = { 14 | show_time = true; 15 | swap_fields = false; 16 | swap_icons = false; 17 | }; 18 | ide = { 19 | enable = true; 20 | show_status = true; 21 | timeout = 300000; 22 | text = "Idle"; 23 | tooltip = "💤"; 24 | }; 25 | text = { 26 | viewing = "Viewing {}"; 27 | editing = "Editing {}"; 28 | file_browser = "Browsing files in {}"; 29 | vcs = "Committing changes in {}"; 30 | workspace = "In {}"; 31 | }; 32 | }; 33 | } 34 | -------------------------------------------------------------------------------- /plugins/by-name/crates/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkNeovimPlugin { 3 | name = "crates"; 4 | packPathName = "crates.nvim"; 5 | package = "crates-nvim"; 6 | 7 | maintainers = [ lib.maintainers.GaetanLepage ]; 8 | 9 | imports = 10 | [ { cmpSourcePlugins.crates = "crates"; } ] 11 | ++ 12 | # TODO introduced 2024-12-12: remove after 25.05 13 | lib.nixvim.mkSettingsRenamedOptionModules [ "plugins" "crates-nvim" ] 14 | [ "plugins" "crates" ] 15 | [ 16 | "enable" 17 | "package" 18 | { 19 | old = "extraOptions"; 20 | new = "settings"; 21 | } 22 | ]; 23 | 24 | settingsOptions = { }; 25 | 26 | settingsExample = { 27 | smart_insert = true; 28 | autoload = true; 29 | autoupdate = true; 30 | }; 31 | } 32 | -------------------------------------------------------------------------------- /plugins/by-name/cursorline/deprecations.nix: -------------------------------------------------------------------------------- 1 | { 2 | deprecateExtraOptions = true; 3 | optionsRenamedToSettings = [ 4 | [ 5 | "cursorline" 6 | "enable" 7 | ] 8 | [ 9 | "cursorline" 10 | "timeout" 11 | ] 12 | [ 13 | "cursorline" 14 | "number" 15 | ] 16 | [ 17 | "cursorword" 18 | "enable" 19 | ] 20 | [ 21 | "cursorword" 22 | "minLength" 23 | ] 24 | [ 25 | "cursorword" 26 | "hl" 27 | ] 28 | ]; 29 | } 30 | -------------------------------------------------------------------------------- /plugins/by-name/dap-view/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkNeovimPlugin { 3 | name = "dap-view"; 4 | packPathName = "nvim-dap-view"; 5 | moduleName = "dap-view"; 6 | package = "nvim-dap-view"; 7 | 8 | maintainers = [ lib.maintainers.khaneliman ]; 9 | 10 | settingsExample = { 11 | winbar = { 12 | controls.enabled = true; 13 | }; 14 | windows.terminal = { 15 | position = "right"; 16 | start_hidden = true; 17 | }; 18 | }; 19 | 20 | extraConfig = { 21 | # Compatibility with lualine module. 22 | # Broken UI otherwise https://github.com/igorlfs/nvim-dap-view/issues/36 23 | plugins.lualine.settings.options.disabled_filetypes.winbar = [ 24 | "dap-repl" 25 | "dap-view" 26 | "dap-view-term" 27 | ]; 28 | }; 29 | } 30 | -------------------------------------------------------------------------------- /plugins/by-name/dbee/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkNeovimPlugin { 3 | name = "dbee"; 4 | packPathName = "nvim-dbee"; 5 | package = "nvim-dbee"; 6 | 7 | maintainers = [ lib.maintainers.GaetanLepage ]; 8 | 9 | settingsExample = { 10 | default_connection = "wtg"; 11 | sources = [ 12 | (lib.nixvim.nestedLiteralLua "require('dbee.sources').FileSource:new(vim.fn.stdpath('cache') .. '/dbee/persistence.json')") 13 | ]; 14 | }; 15 | } 16 | -------------------------------------------------------------------------------- /plugins/by-name/devdocs/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkNeovimPlugin { 3 | name = "devdocs"; 4 | packPathName = "devdocs.nvim"; 5 | package = "devdocs-nvim"; 6 | 7 | maintainers = [ lib.maintainers.GaetanLepage ]; 8 | 9 | settingsExample = { 10 | ensure_installed = [ 11 | "go" 12 | "html" 13 | "http" 14 | "lua~5.1" 15 | ]; 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /plugins/by-name/diagram/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkNeovimPlugin { 3 | name = "diagram"; 4 | packPathName = "diagram.nvim"; 5 | package = "diagram-nvim"; 6 | 7 | maintainers = [ lib.maintainers.GaetanLepage ]; 8 | 9 | settingsExample = { 10 | integrations = [ 11 | { __raw = "require('diagram.integrations.markdown')"; } 12 | { __raw = "require('diagram.integrations.neorg')"; } 13 | ]; 14 | renderer_options = { 15 | mermaid = { 16 | theme = "forest"; 17 | }; 18 | plantuml = { 19 | charset = "utf-8"; 20 | }; 21 | d2 = { 22 | theme_id = 1; 23 | }; 24 | gnuplot = { 25 | theme = "dark"; 26 | size = "800,600"; 27 | }; 28 | }; 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /plugins/by-name/dial/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkNeovimPlugin { 3 | name = "dial"; 4 | packPathName = "dial.nvim"; 5 | package = "dial-nvim"; 6 | 7 | maintainers = [ lib.maintainers.GaetanLepage ]; 8 | 9 | # This plugin does not have a conventional setup function 10 | hasSettings = false; 11 | callSetup = false; 12 | } 13 | -------------------------------------------------------------------------------- /plugins/by-name/dotnet/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkNeovimPlugin { 3 | name = "dotnet"; 4 | packPathName = "dotnet.nvim"; 5 | package = "dotnet-nvim"; 6 | 7 | maintainers = [ lib.maintainers.khaneliman ]; 8 | 9 | settingsOptions = { 10 | bootstrap = { 11 | auto_bootstrap = lib.nixvim.defaultNullOpts.mkBool true '' 12 | Automatically call "bootstrap" when creating a new file, adding a namespace and a class to the files. 13 | ''; 14 | }; 15 | 16 | project_selection = { 17 | path_display = lib.nixvim.defaultNullOpts.mkStr "filename_first" '' 18 | Determines how file paths are displayed. All of Telescope's path_display options are supported. 19 | ''; 20 | }; 21 | }; 22 | 23 | settingsExample = { 24 | bootstrap = { 25 | auto_bootstrap = false; 26 | }; 27 | project_selection = { 28 | path_display = "truncate"; 29 | }; 30 | }; 31 | } 32 | -------------------------------------------------------------------------------- /plugins/by-name/earthly/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkVimPlugin { 3 | name = "earthly"; 4 | packPathName = "earthly.vim"; 5 | package = "earthly-vim"; 6 | url = "https://github.com/earthly/earthly.vim"; 7 | description = "Earthfile syntax highlighting for vim"; 8 | maintainers = [ lib.maintainers.DataHearth ]; 9 | } 10 | -------------------------------------------------------------------------------- /plugins/by-name/endwise/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | helpers, 4 | ... 5 | }: 6 | lib.nixvim.plugins.mkVimPlugin { 7 | name = "endwise"; 8 | packPathName = "vim-endwise"; 9 | package = "vim-endwise"; 10 | 11 | maintainers = [ lib.maintainers.GaetanLepage ]; 12 | 13 | # This plugin has no config options 14 | } 15 | -------------------------------------------------------------------------------- /plugins/by-name/friendly-snippets/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | ... 4 | }: 5 | lib.nixvim.plugins.mkVimPlugin { 6 | name = "friendly-snippets"; 7 | 8 | maintainers = [ lib.maintainers.GaetanLepage ]; 9 | 10 | extraConfig = { 11 | # Simply add an element to the `fromVscode` list to trigger the import of friendly-snippets 12 | plugins.luasnip.fromVscode = [ { } ]; 13 | }; 14 | } 15 | -------------------------------------------------------------------------------- /plugins/by-name/fugitive/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | ... 4 | }: 5 | lib.nixvim.plugins.mkVimPlugin { 6 | name = "fugitive"; 7 | packPathName = "vim-fugitive"; 8 | package = "vim-fugitive"; 9 | 10 | maintainers = [ lib.maintainers.GaetanLepage ]; 11 | 12 | dependencies = [ "git" ]; 13 | 14 | imports = [ 15 | # TODO: added 2025-04-07, remove after 25.05 16 | (lib.nixvim.mkRemovedPackageOptionModule { 17 | plugin = "fugitive"; 18 | packageName = "git"; 19 | }) 20 | ]; 21 | 22 | # In typical tpope fashion, this plugin has no config options 23 | } 24 | -------------------------------------------------------------------------------- /plugins/by-name/git-worktree/deprecations.nix: -------------------------------------------------------------------------------- 1 | { 2 | optionsRenamedToSettings = [ 3 | "changeDirectoryCommand" 4 | "updateOnChange" 5 | "updateOnChangeCommand" 6 | "clearJumpsOnChange" 7 | "autopush" 8 | ]; 9 | } 10 | -------------------------------------------------------------------------------- /plugins/by-name/glance/default.nix: -------------------------------------------------------------------------------- 1 | { config, lib, ... }: 2 | lib.nixvim.plugins.mkNeovimPlugin { 3 | name = "glance"; 4 | packPathName = "glance.nvim"; 5 | package = "glance-nvim"; 6 | 7 | maintainers = [ lib.maintainers.khaneliman ]; 8 | 9 | settingsExample = { 10 | height = 40; 11 | zindex = 50; 12 | border = { 13 | enable = true; 14 | }; 15 | use_trouble_qf = true; 16 | }; 17 | 18 | extraConfig = cfg: { 19 | warnings = lib.nixvim.mkWarnings "plugins.glance" { 20 | when = 21 | cfg.settings ? use_trouble_qf 22 | && (cfg.settings.use_trouble_qf == true) 23 | && !config.plugins.trouble.enable; 24 | 25 | message = '' 26 | The `trouble` plugin is not enabled, so the `glance` plugin's `use_trouble_qf` setting has no effect. 27 | ''; 28 | }; 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /plugins/by-name/godot/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | helpers, 4 | ... 5 | }: 6 | with lib; 7 | lib.nixvim.plugins.mkVimPlugin { 8 | name = "godot"; 9 | packPathName = "vim-godot"; 10 | package = "vim-godot"; 11 | globalPrefix = "godot_"; 12 | 13 | maintainers = [ maintainers.GaetanLepage ]; 14 | 15 | dependencies = [ "godot" ]; 16 | 17 | imports = [ 18 | # TODO: added 2025-04-07, remove after 25.05 19 | (lib.nixvim.mkRemovedPackageOptionModule { 20 | plugin = "godot"; 21 | packageName = "godot"; 22 | }) 23 | ]; 24 | 25 | settingsOptions = { 26 | executable = helpers.defaultNullOpts.mkStr "godot" '' 27 | Path to the `godot` executable. 28 | ''; 29 | }; 30 | 31 | settingsExample = { 32 | executable = "godot"; 33 | }; 34 | } 35 | -------------------------------------------------------------------------------- /plugins/by-name/goto-preview/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | ... 4 | }: 5 | lib.nixvim.plugins.mkNeovimPlugin { 6 | name = "goto-preview"; 7 | 8 | maintainers = [ lib.maintainers.GaetanLepage ]; 9 | 10 | settingsExample = { 11 | default_mappings = false; 12 | height = 30; 13 | post_open_hook.__raw = '' 14 | function(_, win) 15 | -- Close the current preview window with or 'q'. 16 | local function close_window() 17 | vim.api.nvim_win_close(win, true) 18 | end 19 | vim.keymap.set('n', '', close_window, { buffer = true }) 20 | vim.keymap.set('n', 'q', close_window, { buffer = true }) 21 | end 22 | ''; 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /plugins/by-name/goyo/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | helpers, 4 | ... 5 | }: 6 | with lib.nixvim.plugins; 7 | with lib; 8 | mkVimPlugin { 9 | name = "goyo"; 10 | packPathName = "goyo.vim"; 11 | package = "goyo-vim"; 12 | globalPrefix = "goyo_"; 13 | 14 | maintainers = [ maintainers.GaetanLepage ]; 15 | 16 | # TODO introduced 2024-03-01: remove 2024-05-01 17 | deprecateExtraConfig = true; 18 | optionsRenamedToSettings = [ 19 | "width" 20 | "height" 21 | { 22 | old = "showLineNumbers"; 23 | new = "linenr"; 24 | } 25 | ]; 26 | 27 | settingsOptions = { 28 | width = helpers.mkNullOrOption types.ints.unsigned "width"; 29 | 30 | height = helpers.mkNullOrOption types.ints.unsigned "height"; 31 | 32 | linenr = helpers.defaultNullOpts.mkFlagInt 0 '' 33 | Show line numbers when in Goyo mode. 34 | ''; 35 | }; 36 | } 37 | -------------------------------------------------------------------------------- /plugins/by-name/grug-far/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkNeovimPlugin { 3 | name = "grug-far"; 4 | packPathName = "grug-far.nvim"; 5 | package = "grug-far-nvim"; 6 | 7 | maintainers = [ lib.maintainers.khaneliman ]; 8 | 9 | settingsExample = { 10 | debounceMs = 1000; 11 | minSearchChars = 1; 12 | maxSearchMatches = 2000; 13 | normalModeSearch = false; 14 | maxWorkers = 8; 15 | engine = "ripgrep"; 16 | engines = { 17 | ripgrep = { 18 | path = "rg"; 19 | showReplaceDiff = true; 20 | }; 21 | }; 22 | }; 23 | } 24 | -------------------------------------------------------------------------------- /plugins/by-name/haskell-scope-highlighting/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | config, 4 | ... 5 | }: 6 | lib.nixvim.plugins.mkVimPlugin { 7 | name = "haskell-scope-highlighting"; 8 | packPathName = "haskell-scope-highlighting.nvim"; 9 | package = "haskell-scope-highlighting-nvim"; 10 | 11 | maintainers = [ lib.maintainers.GaetanLepage ]; 12 | 13 | extraConfig = { 14 | warnings = lib.nixvim.mkWarnings "plugins.haskell-scope-highlighting" { 15 | when = !config.plugins.treesitter.enable; 16 | message = '' 17 | haskell-scope-highlighting needs treesitter to function as intended. 18 | Please, enable it by setting `plugins.treesitter.enable` to `true`. 19 | ''; 20 | }; 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /plugins/by-name/headlines/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | helpers, 4 | config, 5 | ... 6 | }: 7 | with lib; 8 | lib.nixvim.plugins.mkNeovimPlugin { 9 | name = "headlines"; 10 | packPathName = "headlines.nvim"; 11 | package = "headlines-nvim"; 12 | 13 | maintainers = [ maintainers.GaetanLepage ]; 14 | 15 | settingsExample = { 16 | org.headline_highlights = false; 17 | norg = { 18 | headline_highlights = [ "Headline" ]; 19 | codeblock_highlight = false; 20 | }; 21 | markdown.headline_highlights = [ "Headline1" ]; 22 | }; 23 | 24 | extraConfig = { 25 | warnings = lib.nixvim.mkWarnings "plugins.headlines" { 26 | when = !config.plugins.treesitter.enable; 27 | 28 | message = '' 29 | headlines requires `plugins.treesitter` to be enabled with the relevant grammars installed. 30 | ''; 31 | }; 32 | }; 33 | } 34 | -------------------------------------------------------------------------------- /plugins/by-name/helm/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | helpers, 4 | ... 5 | }: 6 | lib.nixvim.plugins.mkVimPlugin { 7 | name = "helm"; 8 | packPathName = "vim-helm"; 9 | package = "vim-helm"; 10 | 11 | description = '' 12 | To ensure that `helm_ls` (and not `yamlls`) is used on helm files, add the following autocmd: 13 | 14 | ```nix 15 | autoCmd = [ 16 | { 17 | event = "FileType"; 18 | pattern = "helm"; 19 | command = "LspRestart"; 20 | } 21 | ]; 22 | ``` 23 | 24 | See [nix-community/nixvim#989](https://github.com/nix-community/nixvim/issues/989#issuecomment-2333728503) 25 | for details. 26 | ''; 27 | 28 | maintainers = [ lib.maintainers.GaetanLepage ]; 29 | } 30 | -------------------------------------------------------------------------------- /plugins/by-name/hmts/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | config, 4 | ... 5 | }: 6 | lib.nixvim.plugins.mkNeovimPlugin { 7 | name = "hmts"; 8 | packPathName = "hmts.nvim"; 9 | package = "hmts-nvim"; 10 | 11 | maintainers = [ lib.maintainers.GaetanLepage ]; 12 | 13 | callSetup = false; 14 | hasSettings = false; 15 | hasLuaConfig = false; 16 | extraConfig = { 17 | warnings = lib.nixvim.mkWarnings "plugins.hmts" { 18 | when = !config.plugins.treesitter.enable; 19 | message = "hmts needs treesitter to function as intended"; 20 | }; 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /plugins/by-name/hurl/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkNeovimPlugin { 3 | name = "hurl"; 4 | packPathName = "hurl.nvim"; 5 | package = "hurl-nvim"; 6 | 7 | maintainers = [ lib.maintainers.GaetanLepage ]; 8 | 9 | settingsExample = { 10 | debug = true; 11 | mode = "popup"; 12 | env_file = [ "vars.env" ]; 13 | formatters = { 14 | json = [ "jq" ]; 15 | html = [ 16 | "prettier" 17 | "--parser" 18 | "html" 19 | ]; 20 | xml = [ 21 | "tidy" 22 | "-xml" 23 | "-i" 24 | "-q" 25 | ]; 26 | }; 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /plugins/by-name/idris2/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | helpers, 3 | lib, 4 | ... 5 | }: 6 | lib.nixvim.plugins.mkNeovimPlugin { 7 | name = "idris2"; 8 | packPathName = "idris2"; 9 | package = "idris2-nvim"; 10 | maintainers = [ lib.maintainers.mitchmindtree ]; 11 | } 12 | -------------------------------------------------------------------------------- /plugins/by-name/indent-o-matic/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | let 3 | inherit (lib) types; 4 | inherit (lib.nixvim) defaultNullOpts; 5 | in 6 | lib.nixvim.plugins.mkNeovimPlugin { 7 | name = "indent-o-matic"; 8 | maintainers = [ lib.maintainers.alisonjenkins ]; 9 | settingsOptions = { 10 | max_lines = defaultNullOpts.mkInt 2048 "Number of lines without indentation before giving up (use -1 for infinite)"; 11 | skip_multiline = defaultNullOpts.mkBool false "Skip multi-line comments and strings (more accurate detection but less performant)"; 12 | standard_widths = defaultNullOpts.mkListOf types.ints.unsigned [ 13 | 2 14 | 4 15 | 8 16 | ] "Space indentations that should be detected"; 17 | }; 18 | 19 | settingsExample = { 20 | max_lines = 2048; 21 | skip_multiline = false; 22 | standard_widths = [ 23 | 2 24 | 4 25 | 8 26 | ]; 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /plugins/by-name/indent-tools/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkNeovimPlugin { 3 | name = "indent-tools"; 4 | packPathName = "indent-tools.nvim"; 5 | package = "indent-tools-nvim"; 6 | 7 | maintainers = [ lib.maintainers.GaetanLepage ]; 8 | 9 | settingsExample = { 10 | textobj = { 11 | ii = "iI"; 12 | ai = "aI"; 13 | }; 14 | normal = { 15 | up = false; 16 | down = false; 17 | }; 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /plugins/by-name/intellitab/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | ... 4 | }: 5 | lib.nixvim.plugins.mkVimPlugin { 6 | name = "intellitab"; 7 | packPathName = "intellitab.nvim"; 8 | package = "intellitab-nvim"; 9 | 10 | maintainers = [ lib.maintainers.GaetanLepage ]; 11 | 12 | extraConfig = { 13 | keymaps = [ 14 | { 15 | mode = "i"; 16 | key = ""; 17 | action.__raw = "require('intellitab').indent"; 18 | } 19 | ]; 20 | plugins.treesitter = { 21 | settings.indent.enable = true; 22 | }; 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /plugins/by-name/iron/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | 3 | lib.nixvim.plugins.mkNeovimPlugin { 4 | name = "iron"; 5 | moduleName = "iron.core"; 6 | packPathName = "iron.nvim"; 7 | package = "iron-nvim"; 8 | description = '' 9 | Interactive Repls Over Neovim. 10 | ''; 11 | 12 | maintainers = [ lib.maintainers.jolars ]; 13 | 14 | settingsExample = { 15 | scratch_repl = true; 16 | repl_definition = { 17 | sh = { 18 | command = [ "zsh" ]; 19 | }; 20 | python = { 21 | command = [ "python3" ]; 22 | format.__raw = "require('iron.fts.common').bracketed_paste_python"; 23 | }; 24 | }; 25 | repl_open_cmd.__raw = ''require("iron.view").bottom(40)''; 26 | keymaps = { 27 | send_motion = "sc"; 28 | visual_send = "sc"; 29 | send_line = "sl"; 30 | }; 31 | highlight = { 32 | italic = true; 33 | }; 34 | }; 35 | } 36 | -------------------------------------------------------------------------------- /plugins/by-name/lastplace/deprecations.nix: -------------------------------------------------------------------------------- 1 | { lib }: 2 | { 3 | imports = 4 | let 5 | basePath = [ 6 | "plugins" 7 | "lastplace" 8 | ]; 9 | 10 | settingsPath = basePath ++ [ "settings" ]; 11 | in 12 | lib.nixvim.mkSettingsRenamedOptionModules basePath settingsPath [ 13 | { 14 | old = "ignoreBuftype"; 15 | new = "lastplace_ignore_buftype"; 16 | } 17 | { 18 | old = "ignoreFiletype"; 19 | new = "lastplace_ignore_filetype"; 20 | } 21 | { 22 | old = "openFolds"; 23 | new = "lastplace_open_folds"; 24 | } 25 | ]; 26 | 27 | deprecateExtraOptions = true; 28 | } 29 | -------------------------------------------------------------------------------- /plugins/by-name/lexima/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkVimPlugin { 3 | name = "lexima"; 4 | packPathName = "lexima.vim"; 5 | package = "lexima-vim"; 6 | globalPrefix = "lexima_"; 7 | 8 | maintainers = [ lib.maintainers.GaetanLepage ]; 9 | 10 | settingsOptions = import ./settings-options.nix lib; 11 | 12 | settingsExample = { 13 | map_escape = ""; 14 | enable_space_rules = 0; 15 | enable_endwise_rules = 0; 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /plugins/by-name/lilypond-suite/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkNeovimPlugin { 3 | name = "lilypond-suite"; 4 | packPathName = "nvim-lilypond-suite"; 5 | package = "nvim-lilypond-suite"; 6 | moduleName = "nvls"; 7 | 8 | maintainers = [ lib.maintainers.GaetanLepage ]; 9 | 10 | settingsExample = { 11 | lilypond = { 12 | mappings = { 13 | player = ""; 14 | compile = ""; 15 | open_pdf = ""; 16 | switch_buffers = ""; 17 | insert_version = ""; 18 | }; 19 | options = { 20 | pitches_language = "default"; 21 | output = "pdf"; 22 | include_dir = [ 23 | "./openlilylib" 24 | ]; 25 | }; 26 | }; 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /plugins/by-name/markdown-preview/deprecations.nix: -------------------------------------------------------------------------------- 1 | { 2 | # TODO introduced 2024-03-02: remove 2024-05-02 3 | deprecateExtraConfig = true; 4 | optionsRenamedToSettings = [ 5 | "autoStart" 6 | "autoClose" 7 | "refreshSlow" 8 | "commandForGlobal" 9 | "openToTheWorld" 10 | "openIp" 11 | "browser" 12 | "echoPreviewUrl" 13 | "previewOptions" 14 | "markdownCss" 15 | "highlightCss" 16 | "port" 17 | "pageTitle" 18 | "theme" 19 | { 20 | old = "fileTypes"; 21 | new = "filetypes"; 22 | } 23 | { 24 | old = "browserFunc"; 25 | new = "browserfunc"; 26 | } 27 | ]; 28 | 29 | } 30 | -------------------------------------------------------------------------------- /plugins/by-name/minuet/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkNeovimPlugin { 3 | name = "minuet"; 4 | packPathName = "minuet-ai.nvim"; 5 | package = "minuet-ai-nvim"; 6 | 7 | maintainers = [ lib.maintainers.GaetanLepage ]; 8 | 9 | # Register nvim-cmp association 10 | imports = [ 11 | { cmpSourcePlugins.minuet = "minuet"; } 12 | ]; 13 | 14 | settingsExample = { 15 | provider = "openai_compatible"; 16 | provider_options = { 17 | openai_compatible = { 18 | api_key = "OPENROUTER_API_KEY"; 19 | end_point = "https://openrouter.ai/api/v1/chat/completions"; 20 | name = "OpenRouter"; 21 | model = "google/gemini-flash-1.5"; 22 | stream = true; 23 | optional = { 24 | max_tokens = 256; 25 | top_p = 0.9; 26 | }; 27 | }; 28 | }; 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /plugins/by-name/modicator/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkNeovimPlugin { 3 | name = "modicator"; 4 | packPathName = "modicator.nvim"; 5 | package = "modicator-nvim"; 6 | 7 | maintainers = [ lib.maintainers.GaetanLepage ]; 8 | 9 | extraConfig = { 10 | opts = { 11 | termguicolors = lib.mkDefault true; 12 | cursorline = lib.mkDefault true; 13 | number = lib.mkDefault true; 14 | }; 15 | }; 16 | 17 | settingsExample = { 18 | show_warnings = true; 19 | highlights = { 20 | defaults = { 21 | bold = false; 22 | italic = false; 23 | }; 24 | }; 25 | }; 26 | } 27 | -------------------------------------------------------------------------------- /plugins/by-name/nabla/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | ... 4 | }: 5 | lib.nixvim.plugins.mkVimPlugin { 6 | name = "nabla"; 7 | packPathName = "nabla.nvim"; 8 | package = "nabla-nvim"; 9 | 10 | description = '' 11 | You can bind the popup action like so: 12 | ```nix 13 | keymaps = [ 14 | { 15 | key = "p"; 16 | action.__raw = "require('nabla').popup"; 17 | } 18 | ]; 19 | ``` 20 | 21 | You can also wrap an explicit call to `popup` in a `function() ... end` in order to provide 22 | a `border` option. 23 | 24 | See [README](https://github.com/jbyuki/nabla.nvim/?tab=readme-ov-file#configuration) for more 25 | information. 26 | ''; 27 | 28 | maintainers = [ lib.maintainers.GaetanLepage ]; 29 | } 30 | -------------------------------------------------------------------------------- /plugins/by-name/neorg/deprecations.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | let 3 | basePluginPath = [ 4 | "plugins" 5 | "neorg" 6 | ]; 7 | in 8 | { 9 | imports = [ 10 | (lib.mkRemovedOptionModule ( 11 | basePluginPath 12 | ++ [ 13 | "logger" 14 | "modes" 15 | ] 16 | ) "Please use `settings.logger.modes` but you now need to provide a list of submodules.") 17 | (lib.mkRenamedOptionModule (basePluginPath ++ [ "neorgTelescopePackage" ]) ( 18 | basePluginPath 19 | ++ [ 20 | "telescopeIntegration" 21 | "package" 22 | ] 23 | )) 24 | ]; 25 | } 26 | -------------------------------------------------------------------------------- /plugins/by-name/nerdy/default.nix: -------------------------------------------------------------------------------- 1 | { lib, config, ... }: 2 | lib.nixvim.plugins.mkNeovimPlugin { 3 | name = "nerdy"; 4 | packPathName = "nerdy.nvim"; 5 | package = "nerdy-nvim"; 6 | 7 | maintainers = [ lib.maintainers.GaetanLepage ]; 8 | 9 | callSetup = false; 10 | hasSettings = false; 11 | 12 | extraOptions = { 13 | enableTelescope = lib.mkEnableOption "telescope integration"; 14 | }; 15 | 16 | extraConfig = cfg: { 17 | assertions = lib.nixvim.mkAssertions "plugins.nerdy" { 18 | assertion = cfg.enableTelescope -> config.plugins.telescope.enable; 19 | message = '' 20 | Telescope support (enableTelescope) is enabled but the telescope plugin is not. 21 | ''; 22 | }; 23 | plugins.telescope.enabledExtensions = lib.mkIf cfg.enableTelescope [ "nerdy" ]; 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /plugins/by-name/netman/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | ... 4 | }: 5 | lib.nixvim.plugins.mkNeovimPlugin { 6 | name = "netman"; 7 | packPathName = "netman.nvim"; 8 | package = "netman-nvim"; 9 | 10 | hasSettings = false; 11 | callSetup = false; 12 | 13 | maintainers = [ lib.maintainers.khaneliman ]; 14 | 15 | extraOptions = { 16 | neoTreeIntegration = lib.mkEnableOption "support for netman as a neo-tree source"; 17 | }; 18 | 19 | extraConfig = cfg: { 20 | plugins.netman.luaConfig.content = '' 21 | require("netman") 22 | ''; 23 | 24 | plugins.neo-tree.extraSources = lib.mkIf cfg.neoTreeIntegration [ "netman.ui.neo-tree" ]; 25 | }; 26 | } 27 | -------------------------------------------------------------------------------- /plugins/by-name/nix/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | helpers, 4 | ... 5 | }: 6 | lib.nixvim.plugins.mkVimPlugin { 7 | name = "nix"; 8 | packPathName = "vim-nix"; 9 | package = "vim-nix"; 10 | 11 | maintainers = [ lib.maintainers.GaetanLepage ]; 12 | } 13 | -------------------------------------------------------------------------------- /plugins/by-name/none-ls/sources.nix: -------------------------------------------------------------------------------- 1 | { config, lib, ... }: 2 | let 3 | noneLsBuiltins = import ../../../generated/none-ls.nix; 4 | mkSourcePlugin = import ./_mk-source-plugin.nix; 5 | in 6 | { 7 | imports = 8 | [ 9 | ./prettier.nix 10 | ./prettierd.nix 11 | ] 12 | ++ (lib.flatten ( 13 | lib.mapAttrsToList (category: (lib.map (mkSourcePlugin category))) noneLsBuiltins 14 | )); 15 | 16 | config = 17 | let 18 | cfg = config.plugins.none-ls; 19 | gitsignsEnabled = cfg.sources.code_actions.gitsigns.enable; 20 | in 21 | lib.mkIf cfg.enable { 22 | # Enable gitsigns if the gitsigns source is enabled 23 | plugins.gitsigns.enable = lib.mkIf gitsignsEnabled true; 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /plugins/by-name/notify/deprecations.nix: -------------------------------------------------------------------------------- 1 | { 2 | deprecateExtraOptions = true; 3 | optionsRenamedToSettings = [ 4 | "level" 5 | "timeout" 6 | "maxWidth" 7 | "maxHeight" 8 | "stages" 9 | "backgroundColour" 10 | [ 11 | "icons" 12 | "error" 13 | ] 14 | [ 15 | "icons" 16 | "warn" 17 | ] 18 | [ 19 | "icons" 20 | "info" 21 | ] 22 | [ 23 | "icons" 24 | "debug" 25 | ] 26 | [ 27 | "icons" 28 | "trace" 29 | ] 30 | "onOpen" 31 | "onClose" 32 | "render" 33 | "minimumWidth" 34 | "fps" 35 | "topDown" 36 | ]; 37 | } 38 | -------------------------------------------------------------------------------- /plugins/by-name/nui/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkNeovimPlugin { 3 | name = "nui"; 4 | packPathName = "nui.nvim"; 5 | package = "nui-nvim"; 6 | description = "UI Component Library for Neovim"; 7 | maintainers = [ lib.maintainers.DataHearth ]; 8 | 9 | callSetup = false; 10 | hasSettings = false; 11 | } 12 | -------------------------------------------------------------------------------- /plugins/by-name/numbertoggle/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | ... 4 | }: 5 | lib.nixvim.plugins.mkVimPlugin { 6 | name = "numbertoggle"; 7 | packPathName = "vim-numbertoggle"; 8 | package = "vim-numbertoggle"; 9 | 10 | maintainers = [ lib.maintainers.refaelsh ]; 11 | } 12 | -------------------------------------------------------------------------------- /plugins/by-name/openscad/renamed-options.nix: -------------------------------------------------------------------------------- 1 | [ 2 | "fuzzyFinder" 3 | "cheatsheetWindowBlend" 4 | "loadSnippets" 5 | "autoOpen" 6 | { 7 | old = [ 8 | "keymaps" 9 | "enabled" 10 | ]; 11 | new = "default_mappings"; 12 | } 13 | { 14 | old = [ 15 | "keymaps" 16 | "cheatsheetToggle" 17 | ]; 18 | new = "cheatsheet_toggle_key"; 19 | } 20 | { 21 | old = [ 22 | "keymaps" 23 | "helpTrigger" 24 | ]; 25 | new = "help_trig_key"; 26 | } 27 | { 28 | old = [ 29 | "keymaps" 30 | "helpManualTrigger" 31 | ]; 32 | new = "help_manual_trig_key"; 33 | } 34 | { 35 | old = [ 36 | "keymaps" 37 | "execOpenSCADTrigger" 38 | ]; 39 | new = "exec_openscad_trig_key"; 40 | } 41 | { 42 | old = [ 43 | "keymaps" 44 | "topToggle" 45 | ]; 46 | new = "top_toggle"; 47 | } 48 | ] 49 | -------------------------------------------------------------------------------- /plugins/by-name/orgmode/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | ... 4 | }: 5 | let 6 | inherit (lib.nixvim) defaultNullOpts; 7 | in 8 | lib.nixvim.plugins.mkNeovimPlugin { 9 | name = "orgmode"; 10 | packPathName = "nvim-orgmode"; 11 | 12 | maintainers = [ lib.maintainers.refaelsh ]; 13 | 14 | settingsOptions = { 15 | org_agenda_files = defaultNullOpts.mkNullable (with lib.types; either str (listOf str)) "" '' 16 | A path for Org agenda files. 17 | ''; 18 | org_default_notes_file = defaultNullOpts.mkStr "" '' 19 | A path to the default notes file. 20 | ''; 21 | }; 22 | 23 | settingsExample = { 24 | org_agenda_files = "~/orgfiles/**/*"; 25 | org_default_notes_file = "~/orgfiles/refile.org"; 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /plugins/by-name/origami/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkNeovimPlugin { 3 | name = "origami"; 4 | packPathName = "nvim-origami"; 5 | package = "nvim-origami"; 6 | 7 | maintainers = [ lib.maintainers.GaetanLepage ]; 8 | 9 | # Ensures `nvim-ufo` (if enabled) is loaded before `origami` 10 | # Default priority is 1000, mkBefore is 500 and mkAfter is 1500 11 | configLocation = lib.mkOrder 1100 "extraConfigLua"; 12 | 13 | settingsExample = { 14 | keepFoldsAcrossSessions = true; 15 | pauseFoldsOnSearch = true; 16 | setupFoldKeymaps = false; 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /plugins/by-name/parinfer-rust/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | helpers, 4 | ... 5 | }: 6 | lib.nixvim.plugins.mkVimPlugin { 7 | name = "parinfer-rust"; 8 | globalPrefix = "parinfer_"; 9 | 10 | maintainers = [ lib.maintainers.GaetanLepage ]; 11 | 12 | settingsOptions = { 13 | mode = 14 | helpers.defaultNullOpts.mkEnumFirstDefault 15 | [ 16 | "smart" 17 | "indent" 18 | "paren" 19 | ] 20 | '' 21 | The mode used to process buffer changes. 22 | ''; 23 | 24 | force_balance = helpers.defaultNullOpts.mkBool false '' 25 | In smart mode and indent mode, parinfer will sometimes leave unbalanced brackets around the 26 | cursor and fix them when the cursor moves away. 27 | When this option is set to `true`, the brackets will be fixed immediately (and fixed again 28 | when text is inserted). 29 | ''; 30 | }; 31 | } 32 | -------------------------------------------------------------------------------- /plugins/by-name/preview/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | helpers, 4 | ... 5 | }: 6 | with lib; 7 | lib.nixvim.plugins.mkNeovimPlugin { 8 | name = "preview"; 9 | packPathName = "Preview.nvim"; 10 | package = "Preview-nvim"; 11 | 12 | hasSettings = false; 13 | 14 | maintainers = [ maintainers.GaetanLepage ]; 15 | } 16 | -------------------------------------------------------------------------------- /plugins/by-name/quickmath/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | ... 4 | }: 5 | let 6 | inherit (lib) types; 7 | in 8 | lib.nixvim.plugins.mkVimPlugin { 9 | name = "quickmath"; 10 | packPathName = "quickmath.nvim"; 11 | package = "quickmath-nvim"; 12 | 13 | maintainers = [ lib.maintainers.GaetanLepage ]; 14 | 15 | extraOptions = { 16 | keymap = { 17 | key = lib.nixvim.mkNullOrOption types.str "Keymap to run the `:Quickmath` command."; 18 | 19 | silent = lib.mkOption { 20 | type = types.bool; 21 | description = "Whether the quickmath keymap should be silent."; 22 | default = false; 23 | }; 24 | }; 25 | }; 26 | 27 | extraConfig = cfg: { 28 | keymaps = 29 | with cfg.keymap; 30 | lib.optional (key != null) { 31 | mode = "n"; 32 | inherit key; 33 | action = "Quickmath"; 34 | options.silent = cfg.keymap.silent; 35 | }; 36 | }; 37 | } 38 | -------------------------------------------------------------------------------- /plugins/by-name/remote-nvim/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkNeovimPlugin { 3 | name = "remote-nvim"; 4 | packPathName = "remote-nvim.nvim"; 5 | package = "remote-nvim-nvim"; 6 | 7 | maintainers = [ lib.maintainers.khaneliman ]; 8 | 9 | settingsExample = { 10 | offline_mode = { 11 | enabled = true; 12 | no_github = true; 13 | }; 14 | remote = { 15 | copy_dirs = { 16 | data = { 17 | base.__raw = ''vim.fn.stdpath ("data")''; 18 | dirs = [ "lazy" ]; 19 | compression = { 20 | enabled = true; 21 | additional_opts = [ "--exclude-vcs" ]; 22 | }; 23 | }; 24 | }; 25 | }; 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /plugins/by-name/repeat/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | ... 4 | }: 5 | lib.nixvim.plugins.mkVimPlugin { 6 | name = "repeat"; 7 | packPathName = "vim-repeat"; 8 | package = "vim-repeat"; 9 | 10 | maintainers = [ lib.maintainers.refaelsh ]; 11 | } 12 | -------------------------------------------------------------------------------- /plugins/by-name/smart-splits/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | helpers, 4 | ... 5 | }: 6 | lib.nixvim.plugins.mkNeovimPlugin { 7 | name = "smart-splits"; 8 | packPathName = "smart-splits.nvim"; 9 | package = "smart-splits-nvim"; 10 | 11 | maintainers = [ lib.maintainers.foo-dogsquared ]; 12 | 13 | settingsExample = { 14 | resize_mode = { 15 | quit_key = ""; 16 | resize_keys = [ 17 | "h" 18 | "j" 19 | "k" 20 | "l" 21 | ]; 22 | silent = true; 23 | }; 24 | ignored_events = [ 25 | "BufEnter" 26 | "WinEnter" 27 | ]; 28 | }; 29 | } 30 | -------------------------------------------------------------------------------- /plugins/by-name/smear-cursor/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkNeovimPlugin { 3 | name = "smear-cursor"; 4 | packPathName = "smear-cursor.nvim"; 5 | package = "smear-cursor-nvim"; 6 | moduleName = "smear_cursor"; 7 | 8 | maintainers = [ lib.maintainers.GaetanLepage ]; 9 | 10 | settingsOptions = import ./settings-options.nix lib; 11 | 12 | settingsExample = { 13 | stiffness = 0.8; 14 | trailing_stiffness = 0.5; 15 | distance_stop_animating = 0.5; 16 | hide_target_hack = false; 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /plugins/by-name/sqlite-lua/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | ... 4 | }: 5 | lib.nixvim.plugins.mkNeovimPlugin { 6 | name = "sqlite-lua"; 7 | packPathName = "sqlite.lua"; 8 | moduleName = "sqlite.lua"; 9 | package = "sqlite-lua"; 10 | 11 | maintainers = [ lib.maintainers.khaneliman ]; 12 | 13 | callSetup = false; 14 | hasSettings = false; 15 | } 16 | -------------------------------------------------------------------------------- /plugins/by-name/telescope/extensions/_helpers.nix: -------------------------------------------------------------------------------- 1 | lib: rec { 2 | # FIXME: don't manually put Default in the description 3 | # TODO: Comply with #603 4 | mkModeMappingsOption = 5 | mode: defaults: 6 | lib.mkOption { 7 | type = with lib.types; attrsOf strLuaFn; 8 | default = { }; 9 | description = '' 10 | Keymaps in ${mode} mode. 11 | 12 | Default: 13 | ```nix 14 | ${defaults} 15 | ``` 16 | ''; 17 | }; 18 | 19 | mkMappingsOption = 20 | { insertDefaults, normalDefaults }: 21 | { 22 | i = mkModeMappingsOption "insert" insertDefaults; 23 | n = mkModeMappingsOption "normal" normalDefaults; 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /plugins/by-name/telescope/extensions/advanced-git-search.nix: -------------------------------------------------------------------------------- 1 | let 2 | mkExtension = import ./_mk-extension.nix; 3 | in 4 | mkExtension { 5 | name = "advanced-git-search"; 6 | extensionName = "advanced_git_search"; 7 | package = "advanced-git-search-nvim"; 8 | 9 | settingsExample = { 10 | diff_plugin = "diffview"; 11 | git_flags = [ 12 | "-c" 13 | "delta.side-by-side=false" 14 | ]; 15 | }; 16 | } 17 | -------------------------------------------------------------------------------- /plugins/by-name/telescope/extensions/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./advanced-git-search.nix 4 | ./file-browser.nix 5 | ./frecency.nix 6 | ./fzf-native.nix 7 | ./fzy-native.nix 8 | ./live-greps-args.nix 9 | ./manix.nix 10 | ./media-files.nix 11 | ./project.nix 12 | ./ui-select.nix 13 | ./undo.nix 14 | ./zoxide.nix 15 | ]; 16 | } 17 | -------------------------------------------------------------------------------- /plugins/by-name/telescope/extensions/manix.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | ... 4 | }: 5 | let 6 | inherit (lib.nixvim) defaultNullOpts; 7 | 8 | mkExtension = import ./_mk-extension.nix; 9 | in 10 | mkExtension { 11 | name = "manix"; 12 | package = "telescope-manix"; 13 | 14 | imports = [ 15 | # TODO: added 2025-04-07, remove after 25.05 16 | (lib.nixvim.mkRemovedPackageOptionModule { 17 | plugin = [ 18 | "telescope" 19 | "extensions" 20 | "manix" 21 | ]; 22 | packageName = "manix"; 23 | }) 24 | ]; 25 | 26 | dependencies = [ "manix" ]; 27 | 28 | settingsOptions = { 29 | manix_args = defaultNullOpts.mkListOf lib.types.str [ ] "CLI arguments to pass to manix."; 30 | 31 | cword = defaultNullOpts.mkBool false '' 32 | Set to `true` if you want to use the current word as the search query. 33 | ''; 34 | }; 35 | 36 | settingsExample = { 37 | cword = true; 38 | }; 39 | } 40 | -------------------------------------------------------------------------------- /plugins/by-name/telescope/extensions/project.nix: -------------------------------------------------------------------------------- 1 | let 2 | mkExtension = import ./_mk-extension.nix; 3 | in 4 | mkExtension { 5 | name = "project"; 6 | package = "telescope-project-nvim"; 7 | 8 | settingsExample = { 9 | base_dirs = [ 10 | "~/dev/src" 11 | "~/dev/src2" 12 | { 13 | __unkeyed-1 = "~/dev/src3"; 14 | max_depth = 4; 15 | } 16 | { path = "~/dev/src4"; } 17 | { 18 | path = "~/dev/src5"; 19 | max_depth = 2; 20 | } 21 | ]; 22 | hidden_files = true; 23 | theme = "dropdown"; 24 | order_by = "asc"; 25 | search_by = "title"; 26 | sync_with_nvim_tree = true; 27 | on_project_selected.__raw = '' 28 | function(prompt_bufnr) 29 | require("telescope._extensions.project.actions").change_working_directory(prompt_bufnr, false) 30 | require("harpoon.ui").nav_file(1) 31 | end 32 | ''; 33 | }; 34 | } 35 | -------------------------------------------------------------------------------- /plugins/by-name/telescope/extensions/ui-select.nix: -------------------------------------------------------------------------------- 1 | let 2 | mkExtension = import ./_mk-extension.nix; 3 | in 4 | mkExtension { 5 | name = "ui-select"; 6 | package = "telescope-ui-select-nvim"; 7 | 8 | settingsExample = { 9 | specific_opts.codeactions = false; 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /plugins/by-name/telescope/extensions/zoxide.nix: -------------------------------------------------------------------------------- 1 | let 2 | mkExtension = import ./_mk-extension.nix; 3 | in 4 | mkExtension { 5 | name = "zoxide"; 6 | package = "telescope-zoxide"; 7 | 8 | settingsExample = { 9 | prompt_title = "Zoxide Folder List"; 10 | mappings = { 11 | "" = { 12 | keepinsert = true; 13 | action.__raw = '' 14 | function(selection) 15 | file_browser.file_browser({ cwd = selection.path }) 16 | end 17 | ''; 18 | }; 19 | }; 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /plugins/by-name/texpresso/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | ... 4 | }: 5 | with lib; 6 | # This plugin has no configuration, so we use `mkVimPlugin` without the `globalPrefix` argument to 7 | # avoid the creation of the `settings` option. 8 | lib.nixvim.plugins.mkVimPlugin { 9 | name = "texpresso"; 10 | packPathName = "texpresso.vim"; 11 | package = "texpresso-vim"; 12 | 13 | maintainers = [ maintainers.nickhu ]; 14 | 15 | dependencies = [ "texpresso" ]; 16 | 17 | imports = [ 18 | # TODO: added 2025-04-07, remove after 25.05 19 | (lib.nixvim.mkRemovedPackageOptionModule { 20 | plugin = "texpresso"; 21 | packageName = "texpresso"; 22 | }) 23 | ]; 24 | } 25 | -------------------------------------------------------------------------------- /plugins/by-name/timerly/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | pkgs, 5 | ... 6 | }: 7 | lib.nixvim.plugins.mkNeovimPlugin { 8 | name = "timerly"; 9 | packPathName = "timerly.nvim"; 10 | package = "timerly"; 11 | 12 | settingsExample = { 13 | minutes = [ 14 | 30 15 | 10 16 | ]; 17 | }; 18 | 19 | maintainers = [ lib.maintainers.FKouhai ]; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /plugins/by-name/tiny-inline-diagnostic/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkNeovimPlugin { 3 | name = "tiny-inline-diagnostic"; 4 | packPathName = "tiny-inline-diagnostic.nvim"; 5 | package = "tiny-inline-diagnostic-nvim"; 6 | 7 | maintainers = [ lib.maintainers.GaetanLepage ]; 8 | 9 | extraConfig = { 10 | # README encourages to disable `virtual_text`, to not have all diagnostics in the buffer 11 | # displayed. 12 | diagnostic.settings.virtual_text = lib.mkDefault false; 13 | }; 14 | 15 | settingsExample = { 16 | preset = "classic"; 17 | virt_texts = { 18 | priority = 2048; 19 | }; 20 | multilines = { 21 | enabled = true; 22 | }; 23 | options = { 24 | use_icons_from_diagnostic = true; 25 | }; 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /plugins/by-name/vim-be-good/default.nix: -------------------------------------------------------------------------------- 1 | { lib, pkgs, ... }: 2 | lib.nixvim.plugins.mkNeovimPlugin { 3 | name = "vim-be-good"; 4 | package = "vim-be-good"; 5 | 6 | description = '' 7 | Vim be good is a plugin designed to make you better at vim by creating a game to practice basic movements in. 8 | Learn more: https://github.com/ThePrimeagen/vim-be-good 9 | ''; 10 | 11 | maintainers = [ lib.maintainers.KatieJanzen ]; 12 | 13 | callSetup = false; 14 | hasSettings = false; 15 | } 16 | -------------------------------------------------------------------------------- /plugins/by-name/vim-colemak/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkVimPlugin { 3 | name = "vim-colemak"; 4 | maintainers = [ lib.maintainers.kalbasit ]; 5 | } 6 | -------------------------------------------------------------------------------- /plugins/by-name/vim-css-color/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkVimPlugin { 3 | name = "vim-css-color"; 4 | maintainers = [ lib.maintainers.DanielLaing ]; 5 | } 6 | -------------------------------------------------------------------------------- /plugins/by-name/vim-dadbod-completion/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkVimPlugin { 3 | name = "vim-dadbod-completion"; 4 | maintainers = [ lib.maintainers.BoneyPatel ]; 5 | imports = [ 6 | { cmpSourcePlugins.vim-dadbod-completion = "vim-dadbod-completion"; } 7 | ]; 8 | } 9 | -------------------------------------------------------------------------------- /plugins/by-name/vim-dadbod-ui/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkVimPlugin { 3 | name = "vim-dadbod-ui"; 4 | maintainers = [ lib.maintainers.BoneyPatel ]; 5 | } 6 | -------------------------------------------------------------------------------- /plugins/by-name/vim-dadbod/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkVimPlugin { 3 | name = "vim-dadbod"; 4 | maintainers = [ lib.maintainers.BoneyPatel ]; 5 | } 6 | -------------------------------------------------------------------------------- /plugins/by-name/vim-surround/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | helpers, 4 | ... 5 | }: 6 | lib.nixvim.plugins.mkVimPlugin { 7 | name = "vim-surround"; 8 | packPathName = "surround.vim"; 9 | package = "vim-surround"; 10 | 11 | maintainers = [ lib.maintainers.GaetanLepage ]; 12 | } 13 | -------------------------------------------------------------------------------- /plugins/by-name/vim-test/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkVimPlugin { 3 | name = "vim-test"; 4 | globalPrefix = "test#"; 5 | 6 | maintainers = [ lib.maintainers.GaetanLepage ]; 7 | 8 | settingsExample = { 9 | preserve_screen = false; 10 | "javascript#jest#options" = "--reporters jest-vim-reporter"; 11 | strategy = { 12 | nearest = "vimux"; 13 | file = "vimux"; 14 | suite = "vimux"; 15 | }; 16 | "neovim#term_position" = "vert"; 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /plugins/by-name/vimade/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkNeovimPlugin { 3 | name = "vimade"; 4 | 5 | maintainers = [ lib.maintainers.GaetanLepage ]; 6 | 7 | settingsExample = { 8 | fadelevel = 0.7; 9 | recipe = [ 10 | "duo" 11 | { animate = true; } 12 | ]; 13 | tint = { 14 | bg = { 15 | rgb = [ 16 | 255 17 | 255 18 | 255 19 | ]; 20 | intensity = 0.1; 21 | }; 22 | fg = { 23 | rgb = [ 24 | 255 25 | 255 26 | 255 27 | ]; 28 | intensity = 0.1; 29 | }; 30 | }; 31 | }; 32 | } 33 | -------------------------------------------------------------------------------- /plugins/by-name/vimux/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkVimPlugin { 3 | name = "vimux"; 4 | globalPrefix = "Vimux"; 5 | 6 | maintainers = [ lib.maintainers.GaetanLepage ]; 7 | 8 | dependencies = [ "tmux" ]; 9 | 10 | imports = [ 11 | # TODO: added 2025-04-07, remove after 25.05 12 | (lib.nixvim.mkRemovedPackageOptionModule { 13 | plugin = "tmux"; 14 | packageName = "tmux"; 15 | }) 16 | ]; 17 | 18 | settingsOptions = import ./settings-options.nix lib; 19 | 20 | settingsExample = { 21 | Height = "25"; 22 | Orientation = "h"; 23 | UseNearest = 0; 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /plugins/by-name/vimwiki/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkVimPlugin { 3 | name = "vimwiki"; 4 | globalPrefix = "vimwiki_"; 5 | 6 | maintainers = [ lib.maintainers.GaetanLepage ]; 7 | 8 | settingsExample = { 9 | global_ext = 0; 10 | use_calendar = 1; 11 | hl_headers = 1; 12 | hl_cb_checked = 1; 13 | autowriteall = 0; 14 | listsym_rejected = "✗"; 15 | listsyms = "○◐●✓"; 16 | list = [ 17 | { 18 | path = "~/docs/notes/"; 19 | syntax = "markdown"; 20 | ext = ".md"; 21 | } 22 | ]; 23 | key_mappings = { 24 | all_maps = 1; 25 | global = 1; 26 | headers = 1; 27 | }; 28 | }; 29 | } 30 | -------------------------------------------------------------------------------- /plugins/by-name/visual-multi/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkVimPlugin { 3 | name = "visual-multi"; 4 | packPathName = "vim-visual-multi"; 5 | package = "vim-visual-multi"; 6 | globalPrefix = "VM_"; 7 | 8 | maintainers = [ lib.maintainers.GaetanLepage ]; 9 | 10 | settingsOptions = import ./settings-options.nix lib; 11 | 12 | settingsExample = { 13 | mouse_mappings = 1; 14 | silent_exit = 0; 15 | show_warnings = 1; 16 | default_mappings = 1; 17 | maps = { 18 | "Select All" = ""; 19 | "Add Cursor Down" = ""; 20 | "Add Cursor Up" = ""; 21 | "Mouse Cursor" = ""; 22 | "Mouse Word" = ""; 23 | }; 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /plugins/by-name/visual-whitespace/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkNeovimPlugin { 3 | name = "visual-whitespace"; 4 | packPathName = "visual-whitespace.nvim"; 5 | package = "visual-whitespace-nvim"; 6 | 7 | maintainers = [ lib.maintainers.khaneliman ]; 8 | 9 | settingsExample = { 10 | enabled = true; 11 | match_types = { 12 | space = true; 13 | tab = true; 14 | nbsp = true; 15 | lead = true; 16 | trail = true; 17 | }; 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /plugins/by-name/wakatime/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | helpers, 4 | ... 5 | }: 6 | with lib; 7 | lib.nixvim.plugins.mkVimPlugin { 8 | name = "wakatime"; 9 | packPathName = "vim-wakatime"; 10 | package = "vim-wakatime"; 11 | 12 | maintainers = [ maintainers.GaetanLepage ]; 13 | } 14 | -------------------------------------------------------------------------------- /plugins/by-name/wezterm/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | ... 4 | }: 5 | let 6 | inherit (lib.nixvim) defaultNullOpts; 7 | in 8 | lib.nixvim.plugins.neovim.mkNeovimPlugin { 9 | name = "wezterm"; 10 | packPathName = "wezterm.nvim"; 11 | package = "wezterm-nvim"; 12 | 13 | maintainers = [ lib.maintainers.khaneliman ]; 14 | 15 | dependencies = [ "wezterm" ]; 16 | 17 | imports = [ 18 | # TODO: added 2025-04-07, remove after 25.05 19 | (lib.nixvim.mkRemovedPackageOptionModule { 20 | plugin = "wezterm"; 21 | packageName = "wezterm"; 22 | }) 23 | ]; 24 | 25 | settingsOptions = { 26 | create_commands = defaultNullOpts.mkBool true '' 27 | Whether to create plugin commands. 28 | ''; 29 | }; 30 | 31 | settingsExample = { 32 | create_commands = false; 33 | }; 34 | } 35 | -------------------------------------------------------------------------------- /plugins/by-name/whitespace/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkNeovimPlugin { 3 | name = "whitespace"; 4 | packPathName = "whitespace.nvim"; 5 | moduleName = "whitespace-nvim"; 6 | package = "whitespace-nvim"; 7 | 8 | maintainers = [ lib.maintainers.khaneliman ]; 9 | 10 | settingsExample = { 11 | ignored_filetypes = [ 12 | "Avante" 13 | "AvanteInput" 14 | "TelescopePrompt" 15 | "Trouble" 16 | "blink-cmp-documentation" 17 | "blink-cmp-menu" 18 | "blink-cmp-signature" 19 | "checkhealth" 20 | "copilot-chat" 21 | "dashboard" 22 | "fzf" 23 | "help" 24 | "ministarter" 25 | "snacks_dashboard" 26 | ]; 27 | return_cursor = false; 28 | }; 29 | } 30 | -------------------------------------------------------------------------------- /plugins/by-name/windsurf-vim/deprecations.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | ... 4 | }: 5 | { 6 | imports = 7 | # TODO: introduced 2024-02-19: remove 2024-03-19 8 | lib.nixvim.deprecation.mkSettingsRenamedOptionModules [ "plugins" "codeium-vim" ] 9 | [ "plugins" "windsurf-vim" "settings" ] 10 | [ 11 | "bin" 12 | "filetypes" 13 | "manual" 14 | "noMapTab" 15 | "idleDelay" 16 | "render" 17 | "tabFallback" 18 | "disableBindings" 19 | ] 20 | # TODO: introduced 2025-04-19 21 | ++ 22 | lib.nixvim.deprecation.mkSettingsRenamedOptionModules [ "plugins" "codeium-vim" ] 23 | [ "plugins" "windsurf-vim" ] 24 | [ 25 | "package" 26 | "settings" 27 | "keymaps" 28 | { 29 | old = "extraConfig"; 30 | new = "settings"; 31 | } 32 | ]; 33 | } 34 | -------------------------------------------------------------------------------- /plugins/by-name/zellij-nav/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkNeovimPlugin { 3 | name = "zellij-nav"; 4 | packPathName = "zellij-nav.nvim"; 5 | package = "zellij-nav-nvim"; 6 | 7 | maintainers = [ lib.maintainers.GaetanLepage ]; 8 | } 9 | -------------------------------------------------------------------------------- /plugins/by-name/zig/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | helpers, 4 | ... 5 | }: 6 | with lib; 7 | with lib.nixvim.plugins; 8 | mkVimPlugin { 9 | name = "zig"; 10 | packPathName = "zig.vim"; 11 | package = "zig-vim"; 12 | globalPrefix = "zig_"; 13 | 14 | maintainers = [ maintainers.GaetanLepage ]; 15 | 16 | # TODO introduced 2024-03-02: remove 2024-05-02 17 | deprecateExtraConfig = true; 18 | optionsRenamedToSettings = [ 19 | { 20 | old = "formatOnSave"; 21 | new = "fmt_autosave"; 22 | } 23 | ]; 24 | 25 | settingsOptions = { 26 | fmt_autosave = helpers.defaultNullOpts.mkFlagInt 1 '' 27 | This plugin enables automatic code formatting on save by default using zig fmt. 28 | To disable it, you can set this option to `0`. 29 | ''; 30 | }; 31 | 32 | settingsExample = { 33 | fmt_autosave = 0; 34 | }; 35 | } 36 | -------------------------------------------------------------------------------- /plugins/cmp/sources/_mk-cmp-plugin.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | pkgs, 4 | ... 5 | }: 6 | { 7 | pluginName, 8 | sourceName, 9 | package ? lib.mkPackageOption pkgs [ 10 | "vimPlugins" 11 | pluginName 12 | ] { }, 13 | maintainers ? [ lib.maintainers.GaetanLepage ], 14 | imports ? [ ], 15 | ... 16 | }@args: 17 | lib.nixvim.plugins.mkVimPlugin ( 18 | builtins.removeAttrs args [ 19 | "pluginName" 20 | "sourceName" 21 | ] 22 | // { 23 | inherit package maintainers; 24 | name = pluginName; 25 | 26 | imports = imports ++ [ 27 | # Register the source -> plugin name association 28 | { cmpSourcePlugins.${sourceName} = pluginName; } 29 | ]; 30 | } 31 | ) 32 | -------------------------------------------------------------------------------- /plugins/colorschemes/dracula-nvim.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | lib.nixvim.plugins.mkNeovimPlugin { 3 | name = "dracula-nvim"; 4 | packPathName = "dracula.nvim "; 5 | moduleName = "dracula"; 6 | colorscheme = "dracula"; 7 | isColorscheme = true; 8 | 9 | maintainers = [ lib.maintainers.refaelsh ]; 10 | 11 | settingsExample = { 12 | italic_comment = true; 13 | colors.green = "#00FF00"; 14 | }; 15 | } 16 | -------------------------------------------------------------------------------- /plugins/colorschemes/github-theme.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | ... 4 | }: 5 | lib.nixvim.plugins.mkNeovimPlugin { 6 | name = "github-theme"; 7 | packPathName = "github-nvim-theme"; 8 | package = "github-nvim-theme"; 9 | isColorscheme = true; 10 | 11 | maintainers = [ lib.maintainers.GaetanLepage ]; 12 | 13 | settingsExample = { 14 | options = { 15 | transparent = true; 16 | dim_inactive = true; 17 | styles = { 18 | comments = "italic"; 19 | keywords = "bold"; 20 | }; 21 | }; 22 | }; 23 | } 24 | -------------------------------------------------------------------------------- /plugins/colorschemes/melange.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | ... 4 | }: 5 | lib.nixvim.plugins.mkVimPlugin { 6 | name = "melange"; 7 | isColorscheme = true; 8 | packPathName = "melange-nvim"; 9 | package = "melange-nvim"; 10 | 11 | maintainers = [ lib.maintainers.GaetanLepage ]; 12 | 13 | extraConfig = { 14 | opts.termguicolors = lib.mkDefault true; 15 | }; 16 | } 17 | -------------------------------------------------------------------------------- /plugins/colorschemes/one.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | ... 4 | }: 5 | lib.nixvim.plugins.mkVimPlugin { 6 | name = "one"; 7 | isColorscheme = true; 8 | packPathName = "vim-one"; 9 | package = "vim-one"; 10 | globalPrefix = "one_"; 11 | 12 | maintainers = [ lib.maintainers.GaetanLepage ]; 13 | 14 | settingsOptions = { 15 | allow_italics = lib.nixvim.defaultNullOpts.mkFlagInt 0 '' 16 | Whether to enable _italic_ (as long as your terminal supports it). 17 | ''; 18 | }; 19 | 20 | settingsExample = { 21 | allow_italics = true; 22 | }; 23 | 24 | extraConfig = { 25 | opts.termguicolors = lib.mkDefault true; 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /plugins/colorschemes/oxocarbon.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | ... 4 | }: 5 | lib.nixvim.plugins.mkVimPlugin { 6 | name = "oxocarbon"; 7 | isColorscheme = true; 8 | packPathName = "oxocarbon.nvim"; 9 | package = "oxocarbon-nvim"; 10 | 11 | maintainers = [ lib.maintainers.GaetanLepage ]; 12 | 13 | extraConfig = { 14 | opts.termguicolors = lib.mkDefault true; 15 | }; 16 | } 17 | -------------------------------------------------------------------------------- /templates/experimental-flake-parts/config/bufferline.nix: -------------------------------------------------------------------------------- 1 | { 2 | plugins = { 3 | bufferline.enable = true; 4 | web-devicons.enable = true; 5 | }; 6 | } 7 | -------------------------------------------------------------------------------- /templates/experimental-flake-parts/config/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | # Import all your configuration modules here 3 | imports = [ ./bufferline.nix ]; 4 | } 5 | -------------------------------------------------------------------------------- /templates/simple/README.md: -------------------------------------------------------------------------------- 1 | # Nixvim template 2 | 3 | This template gives you a good starting point for configuring nixvim standalone. 4 | 5 | ## Configuring 6 | 7 | To start configuring, just add or modify the nix files in `./config`. 8 | If you add a new configuration file, remember to add it to the 9 | [`config/default.nix`](./config/default.nix) file 10 | 11 | ## Testing your new configuration 12 | 13 | To test your configuration simply run the following command 14 | 15 | ``` 16 | nix run . 17 | ``` 18 | -------------------------------------------------------------------------------- /templates/simple/config/bufferline.nix: -------------------------------------------------------------------------------- 1 | { 2 | plugins = { 3 | bufferline.enable = true; 4 | web-devicons.enable = true; 5 | }; 6 | } 7 | -------------------------------------------------------------------------------- /templates/simple/config/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | # Import all your configuration modules here 3 | imports = [ ./bufferline.nix ]; 4 | } 5 | -------------------------------------------------------------------------------- /tests/extend.nix: -------------------------------------------------------------------------------- 1 | { 2 | makeNixvimWithModule, 3 | runCommandLocal, 4 | }: 5 | let 6 | firstStage = makeNixvimWithModule { 7 | module = { 8 | extraConfigLua = "-- first stage"; 9 | }; 10 | }; 11 | 12 | secondStage = firstStage.extend { extraConfigLua = "-- second stage"; }; 13 | 14 | generated = secondStage.extend { extraConfigLua = "-- third stage"; }; 15 | in 16 | runCommandLocal "extend-test" { printConfig = "${generated}/bin/nixvim-print-init"; } '' 17 | config=$($printConfig) 18 | for stage in "first" "second" "third"; do 19 | if ! "$printConfig" | grep -q -- "-- $stage stage"; then 20 | echo "Missing $stage stage in config" 21 | echo "$config" 22 | exit 1 23 | fi 24 | done 25 | 26 | touch $out 27 | '' 28 | -------------------------------------------------------------------------------- /tests/extra-files.nix: -------------------------------------------------------------------------------- 1 | { 2 | makeNixvimWithModule, 3 | runCommandLocal, 4 | }: 5 | let 6 | extraFiles = { 7 | "one".text = "one"; 8 | "two".text = "two"; 9 | "nested/in/dirs/file.txt".text = "nested"; 10 | "this/file/test.nix".source = ./extra-files.nix; 11 | }; 12 | build = makeNixvimWithModule { 13 | module = { 14 | inherit extraFiles; 15 | }; 16 | }; 17 | in 18 | runCommandLocal "extra-files-test" 19 | { 20 | root = build.config.build.extraFiles; 21 | files = builtins.attrNames extraFiles; 22 | } 23 | '' 24 | for file in $files; do 25 | path="$root"/"$file" 26 | if [[ -f "$path" ]]; then 27 | echo "File $path exists" 28 | else 29 | echo "File $path is missing" 30 | exit 1 31 | fi 32 | done 33 | 34 | touch $out 35 | '' 36 | -------------------------------------------------------------------------------- /tests/maintainers.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | nixpkgsLib, 4 | runCommandLocal, 5 | }: 6 | let 7 | inherit (lib) attrNames filter length; 8 | nixvimList = import ../lib/maintainers.nix; 9 | nixpkgsList = nixpkgsLib.maintainers; 10 | duplicates = filter (name: nixpkgsList ? ${name}) (attrNames nixvimList); 11 | count = length duplicates; 12 | in 13 | runCommandLocal "maintainers-test" { inherit count duplicates; } '' 14 | if [ $count -gt 0 ]; then 15 | echo "$count nixvim maintainers are also nixpkgs maintainers:" 16 | for name in $duplicates; do 17 | echo "- $name" 18 | done 19 | exit 1 20 | fi 21 | touch $out 22 | '' 23 | -------------------------------------------------------------------------------- /tests/nixpkgs-mock.nix: -------------------------------------------------------------------------------- 1 | # This mock nixpkgs can be used as `nixpkgs.source` in nixpkgs-module-test 2 | # if we want/need to avoid importing & instantiating a real nixpkgs 3 | { 4 | config ? { }, 5 | ... 6 | }: 7 | let 8 | pkgs = { 9 | _type = "pkgs"; 10 | __splicedPackages = pkgs; 11 | inherit config pkgs; 12 | mock = true; 13 | }; 14 | in 15 | pkgs 16 | -------------------------------------------------------------------------------- /tests/platforms/darwin.nix: -------------------------------------------------------------------------------- 1 | { 2 | self, 3 | system, 4 | }: 5 | self.inputs.nix-darwin.lib.darwinSystem { 6 | modules = [ 7 | { 8 | nixpkgs.hostPlatform = system; 9 | 10 | programs.nixvim = { 11 | enable = true; 12 | }; 13 | 14 | system.stateVersion = 5; 15 | } 16 | self.nixDarwinModules.nixvim 17 | ]; 18 | } 19 | -------------------------------------------------------------------------------- /tests/platforms/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | callTest, 3 | lib, 4 | stdenv, 5 | }: 6 | let 7 | inherit (stdenv.hostPlatform) 8 | isLinux 9 | isDarwin 10 | ; 11 | in 12 | { 13 | home-manager-module = (callTest ./hm.nix { }).activationPackage; 14 | home-manager-extra-files-byte-compiling = callTest ./hm-extra-files-byte-compiling.nix { }; 15 | home-manager-submodule-merge = callTest ./hm-submodule-merge.nix { }; 16 | } 17 | // lib.optionalAttrs isLinux { 18 | nixos-module = (callTest ./nixos.nix { }).config.system.build.toplevel; 19 | } 20 | // lib.optionalAttrs isDarwin { 21 | darwin-module = (callTest ./darwin.nix { }).system; 22 | } 23 | -------------------------------------------------------------------------------- /tests/platforms/hm.nix: -------------------------------------------------------------------------------- 1 | { 2 | self, 3 | pkgs, 4 | }: 5 | self.inputs.home-manager.lib.homeManagerConfiguration { 6 | inherit pkgs; 7 | 8 | modules = [ 9 | { 10 | home.username = "nixvim"; 11 | home.homeDirectory = "/invalid/dir"; 12 | 13 | home.stateVersion = "25.05"; 14 | 15 | programs.nixvim = { 16 | enable = true; 17 | }; 18 | 19 | programs.home-manager.enable = true; 20 | } 21 | self.homeModules.nixvim 22 | ]; 23 | } 24 | -------------------------------------------------------------------------------- /tests/platforms/nixos.nix: -------------------------------------------------------------------------------- 1 | { 2 | self, 3 | system, 4 | }: 5 | self.inputs.nixpkgs.lib.nixosSystem { 6 | inherit system; 7 | 8 | modules = [ 9 | { 10 | system.stateVersion = "25.05"; 11 | boot.loader.systemd-boot.enable = true; 12 | fileSystems."/" = { 13 | device = "/non/existent/device"; 14 | }; 15 | 16 | programs.nixvim = { 17 | enable = true; 18 | }; 19 | } 20 | self.nixosModules.nixvim 21 | ]; 22 | } 23 | -------------------------------------------------------------------------------- /tests/test-sources/examples.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | { 3 | plain = { }; 4 | 5 | python-packages = { 6 | extraPython3Packages = p: with p; [ numpy ]; 7 | }; 8 | 9 | simple-plugin = { 10 | extraPlugins = [ pkgs.vimPlugins.vim-surround ]; 11 | }; 12 | 13 | gruvbox-raw-method = { 14 | extraPlugins = [ pkgs.vimPlugins.gruvbox ]; 15 | colorscheme = "gruvbox"; 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /tests/test-sources/extended-lib.nix: -------------------------------------------------------------------------------- 1 | let 2 | module = 3 | { lib, helpers, ... }: 4 | { 5 | assertions = [ 6 | { 7 | assertion = lib ? nixvim; 8 | message = "lib.nixvim should be defined"; 9 | } 10 | { 11 | assertion = builtins.attrNames lib.nixvim == builtins.attrNames helpers; 12 | message = "lib.nixvim and helpers should be aliases"; 13 | } 14 | ]; 15 | }; 16 | in 17 | { 18 | top-level = module; 19 | 20 | files-module = { 21 | files."libtest.lua" = module; 22 | }; 23 | } 24 | -------------------------------------------------------------------------------- /tests/test-sources/modules/autocmd.nix: -------------------------------------------------------------------------------- 1 | { 2 | example = { 3 | autoCmd = [ 4 | { 5 | event = [ 6 | "BufEnter" 7 | "BufWinEnter" 8 | ]; 9 | pattern = [ 10 | "*.c" 11 | "*.h" 12 | ]; 13 | callback = { 14 | __raw = "function() print('This buffer enters') end"; 15 | }; 16 | } 17 | { 18 | event = "InsertEnter"; 19 | command = "norm zz"; 20 | } 21 | ]; 22 | }; 23 | } 24 | -------------------------------------------------------------------------------- /tests/test-sources/modules/clipboard.nix: -------------------------------------------------------------------------------- 1 | { 2 | example-with-str = { 3 | clipboard = { 4 | register = "unnamed"; 5 | 6 | providers.xclip.enable = true; 7 | }; 8 | }; 9 | 10 | example-with-package = { 11 | clipboard = { 12 | register = [ 13 | "unnamed" 14 | "unnamedplus" 15 | ]; 16 | 17 | providers.xsel.enable = true; 18 | }; 19 | }; 20 | 21 | example-with-raw-lua = { 22 | clipboard = { 23 | register.__raw = ''vim.env.SSH_TTY and "" or "unnamedplus"''; 24 | providers.wl-copy.enable = true; 25 | }; 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /tests/test-sources/modules/commands.nix: -------------------------------------------------------------------------------- 1 | { 2 | example = { 3 | userCommands = { 4 | "W" = { 5 | command = ":w"; 6 | desc = "Write file"; 7 | nargs = 0; 8 | }; 9 | "Z" = { 10 | command = ":echo fooo"; 11 | }; 12 | "InsertHere" = { 13 | command.__raw = '' 14 | function(opts) 15 | vim.api.nvim_put({opts.args}, 'c', true, true) 16 | end 17 | ''; 18 | nargs = 1; 19 | }; 20 | }; 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /tests/test-sources/modules/diagnostics.nix: -------------------------------------------------------------------------------- 1 | { 2 | example = { 3 | diagnostic.settings = { 4 | virtual_text = false; 5 | virtual_lines.current_line = true; 6 | }; 7 | }; 8 | } 9 | -------------------------------------------------------------------------------- /tests/test-sources/modules/editorconfig.nix: -------------------------------------------------------------------------------- 1 | { 2 | disable = { 3 | editorconfig.enable = false; 4 | }; 5 | 6 | example = { 7 | editorconfig.enable = true; 8 | editorconfig.properties.foo = '' 9 | function(bufnr, val, opts) 10 | if opts.charset and opts.charset ~= "utf-8" then 11 | error("foo can only be set when charset is utf-8", 0) 12 | end 13 | vim.b[bufnr].foo = val 14 | end 15 | ''; 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /tests/test-sources/modules/extra-files.nix: -------------------------------------------------------------------------------- 1 | { 2 | query = { 3 | extraFiles = { 4 | "testing/test-case.nix".source = ./extra-files.nix; 5 | "testing/123.txt".text = '' 6 | One 7 | Two 8 | Three 9 | ''; 10 | "queries/lua/injections.scm".text = '' 11 | ;; extends 12 | ''; 13 | }; 14 | }; 15 | } 16 | -------------------------------------------------------------------------------- /tests/test-sources/modules/files.nix: -------------------------------------------------------------------------------- 1 | { 2 | after = { 3 | files."after/ftplugin/python.lua" = { 4 | localOpts.conceallevel = 1; 5 | 6 | keymaps = [ 7 | { 8 | mode = "n"; 9 | key = ""; 10 | action = ":!python script.py"; 11 | options.silent = true; 12 | } 13 | ]; 14 | }; 15 | }; 16 | 17 | vim-type = { 18 | files."plugin/default_indent.vim".opts = { 19 | shiftwidth = 2; 20 | expandtab = true; 21 | }; 22 | 23 | extraConfigLuaPost = '' 24 | vim.cmd.runtime("plugin/default_indent.vim") 25 | assert(vim.o.shiftwidth == 2, "shiftwidth is not set") 26 | assert(vim.o.expandtab, "expandtab is not set") 27 | ''; 28 | }; 29 | } 30 | -------------------------------------------------------------------------------- /tests/test-sources/modules/highlight.nix: -------------------------------------------------------------------------------- 1 | { 2 | example = { 3 | opts.termguicolors = true; 4 | 5 | highlight = { 6 | MacchiatoRed.fg = "#ed8796"; 7 | }; 8 | 9 | highlightOverride = { 10 | Normal.fg = "#ff0000"; 11 | 12 | # With raw 13 | Normal.bg.__raw = "'#00ff00'"; 14 | }; 15 | }; 16 | } 17 | -------------------------------------------------------------------------------- /tests/test-sources/modules/lsp.nix: -------------------------------------------------------------------------------- 1 | { 2 | example = { 3 | lsp.servers = { 4 | "*".settings = { 5 | enable = true; 6 | root_markers = [ ".git" ]; 7 | capabilities.textDocument.semanticTokens = { 8 | multilineTokenSupport = true; 9 | }; 10 | }; 11 | luals.enable = true; 12 | clangd = { 13 | enable = true; 14 | settings = { 15 | cmd = [ 16 | "clangd" 17 | "--background-index" 18 | ]; 19 | root_markers = [ 20 | "compile_commands.json" 21 | "compile_flags.txt" 22 | ]; 23 | filetypes = [ 24 | "c" 25 | "cpp" 26 | ]; 27 | }; 28 | }; 29 | }; 30 | }; 31 | } 32 | -------------------------------------------------------------------------------- /tests/test-sources/modules/options.nix: -------------------------------------------------------------------------------- 1 | { 2 | options = { 3 | opts = { 4 | updatetime = 100; # Faster completion 5 | 6 | # Line numbers 7 | relativenumber = true; # Relative line numbers 8 | number = true; # Display the absolute line number of the current line 9 | hidden = true; # Keep closed buffer open in the background 10 | mouse = "a"; # Enable mouse control 11 | mousemodel = "extend"; # Mouse right-click extends the current selection 12 | }; 13 | 14 | localOpts = { 15 | textwidth = 80; 16 | sidescrolloff = 0; 17 | }; 18 | 19 | globalOpts = { 20 | textwidth = 110; 21 | sidescrolloff = 10; 22 | }; 23 | }; 24 | 25 | globals = { 26 | globals = { 27 | loaded_ruby_provider = 0; 28 | loaded_perl_provider = 0; 29 | loaded_python_provider = 0; 30 | }; 31 | }; 32 | } 33 | -------------------------------------------------------------------------------- /tests/test-sources/modules/performance/files/file.lua: -------------------------------------------------------------------------------- 1 | vim.g.extra_file_path = true 2 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/autosource/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.autosource.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.autosource = { 8 | enable = true; 9 | 10 | settings = { 11 | prompt_for_new_file = 1; 12 | prompt_for_changed_file = 1; 13 | }; 14 | }; 15 | }; 16 | } 17 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/bacon/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.bacon.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.bacon = { 8 | enable = true; 9 | settings = { 10 | quickfix = { 11 | enabled = true; 12 | event_trigger = true; 13 | }; 14 | }; 15 | }; 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/baleia/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.baleia.enable = true; 4 | }; 5 | 6 | example = { 7 | plugins.baleia = { 8 | enable = true; 9 | 10 | settings = { 11 | async = true; 12 | colors = "NR_8"; 13 | line_starts_at = 1; 14 | log = "INFO"; 15 | name = "BaleiaColors"; 16 | strip_ansi_codes = false; 17 | }; 18 | }; 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/blink-cmp-copilot/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.blink-cmp-copilot.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.blink-cmp-copilot = { 8 | enable = true; 9 | }; 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/blink-cmp-dictionary/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.blink-cmp-dictionary.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.blink-cmp-dictionary = { 8 | enable = true; 9 | }; 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/blink-cmp-git/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.blink-cmp-git.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.blink-cmp-git = { 8 | enable = true; 9 | }; 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/blink-cmp-spell/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.blink-cmp-spell.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.blink-cmp-spell = { 8 | enable = true; 9 | }; 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/blink-compat/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.blink-compat.enable = true; 4 | }; 5 | 6 | example = { 7 | plugins.blink-compat = { 8 | enable = true; 9 | settings = { 10 | impersonate_nvim_cmp = true; 11 | debug = false; 12 | }; 13 | }; 14 | }; 15 | 16 | default = { 17 | plugins.blink-compat = { 18 | enable = true; 19 | settings = { 20 | impersonate_nvim_cmp = false; 21 | debug = false; 22 | }; 23 | }; 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/blink-copilot/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.blink-copilot.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.blink-copilot = { 8 | enable = true; 9 | }; 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/blink-emoji/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.blink-emoji.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.blink-emoji = { 8 | enable = true; 9 | }; 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/blink-ripgrep/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.blink-ripgrep.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.blink-ripgrep = { 8 | enable = true; 9 | }; 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/bufdelete/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.bufdelete.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.bufdelete = { 8 | enable = true; 9 | settings.buf_filter = null; 10 | }; 11 | }; 12 | } 13 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/bullets/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.bullets.enable = true; 4 | }; 5 | 6 | example = { 7 | plugins.bullets = { 8 | enable = true; 9 | 10 | settings = { 11 | enabled_file_types = [ 12 | "markdown" 13 | "text" 14 | "gitcommit" 15 | "scratch" 16 | ]; 17 | nested_checkboxes = 0; 18 | enable_in_empty_buffers = 0; 19 | }; 20 | }; 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/cmp-tabby/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.cmp = { 4 | enable = true; 5 | settings.sources = [ { name = "cmp_tabby"; } ]; 6 | }; 7 | }; 8 | 9 | defaults = { 10 | plugins = { 11 | cmp = { 12 | enable = true; 13 | settings.sources = [ { name = "cmp_tabby"; } ]; 14 | }; 15 | cmp-tabby.settings = { 16 | host = "http://localhost:5000"; 17 | max_lines = 100; 18 | run_on_every_keystroke = true; 19 | stop = [ "\n" ]; 20 | }; 21 | }; 22 | }; 23 | } 24 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/commentary/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.commentary.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/committia/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.committia.enable = true; 4 | }; 5 | 6 | default = { 7 | plugins.committia = { 8 | enable = true; 9 | 10 | settings = { 11 | open_only_vim_starting = 1; 12 | use_singlecolumn = "always"; 13 | min_window_width = 160; 14 | status_window_opencmd = "belowright split"; 15 | diff_window_opencmd = "botright vsplit"; 16 | singlecolumn_diff_window_opencmd = "belowright split"; 17 | edit_window_width = 80; 18 | status_window_min_height = 0; 19 | }; 20 | }; 21 | }; 22 | 23 | no-packages = { 24 | plugins.committia.enable = true; 25 | 26 | dependencies.git.enable = false; 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/compiler/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.compiler.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/conjure/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.conjure.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/copilot-cmp/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.copilot-cmp.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.copilot-cmp = { 8 | enable = true; 9 | }; 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/copilot-vim/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.copilot-vim.enable = true; 4 | }; 5 | 6 | example = { 7 | plugins.copilot-vim = { 8 | enable = true; 9 | 10 | settings = { 11 | filetypes = { 12 | "*" = false; 13 | python = true; 14 | }; 15 | proxy = "localhost:3128"; 16 | proxy_strict_ssl = false; 17 | workspace_folders = [ "~/Projects/myproject" ]; 18 | }; 19 | }; 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/coq-nvim/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.coq-nvim.enable = true; 4 | }; 5 | 6 | nixvim-defaults = 7 | { pkgs, ... }: 8 | { 9 | plugins.coq-nvim = { 10 | # It seems that the plugin has issues being executed in the same derivation 11 | enable = !(pkgs.stdenv.isDarwin && pkgs.stdenv.isx86_64); 12 | 13 | settings = { 14 | xdg = true; 15 | auto_start = true; 16 | keymap.recommended = true; 17 | completion.always = true; 18 | }; 19 | }; 20 | }; 21 | 22 | artifacts = { 23 | plugins.coq-nvim = { 24 | enable = true; 25 | installArtifacts = true; 26 | }; 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/coq-thirdparty/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | # Empty configuration 3 | empty = { 4 | plugins.coq-thirdparty.enable = true; 5 | }; 6 | 7 | example = { 8 | plugins.coq-thirdparty = { 9 | enable = true; 10 | 11 | sources = [ 12 | { 13 | src = "nvimlua"; 14 | short_name = "nLUA"; 15 | } 16 | { 17 | src = "vimtex"; 18 | short_name = "vTEX"; 19 | } 20 | { src = "demo"; } 21 | ]; 22 | }; 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/cornelis/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.cornelis.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.cornelis = { 8 | enable = true; 9 | 10 | settings = { 11 | use_global_binary = 0; 12 | agda_prefix = ""; 13 | no_agda_input = 0; 14 | bind_input_hook = null; 15 | }; 16 | }; 17 | }; 18 | 19 | example = { 20 | plugins.cornelis = { 21 | enable = true; 22 | 23 | settings = { 24 | use_global_binary = 1; 25 | agda_prefix = ""; 26 | no_agda_input = 1; 27 | bind_input_hook = "MyCustomHook"; 28 | }; 29 | }; 30 | }; 31 | } 32 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/cursorline/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.cursorline.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.cursorline = { 8 | enable = true; 9 | 10 | settings = { 11 | cursorline = { 12 | enable = true; 13 | timeout = 1000; 14 | number = false; 15 | }; 16 | cursorword = { 17 | enable = true; 18 | min_length = 3; 19 | hl = { 20 | underline = true; 21 | }; 22 | }; 23 | }; 24 | }; 25 | }; 26 | } 27 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/dap-go/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.dap-go.enable = true; 4 | }; 5 | 6 | default = { 7 | plugins.dap-go = { 8 | enable = true; 9 | 10 | settings = { 11 | dap_configurations = [ 12 | { 13 | # Must be "go" or it will be ignored by the plugin 14 | type = "go"; 15 | name = "Attach remote"; 16 | mode = "remote"; 17 | request = "attach"; 18 | } 19 | ]; 20 | delve = { 21 | path = "dlv"; 22 | initialize_timeout_sec = 20; 23 | port = "$\{port}"; 24 | args = [ ]; 25 | build_flags = "-tags=unit"; 26 | }; 27 | }; 28 | }; 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/devdocs/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | # Tries to download metadata 4 | test.runNvim = false; 5 | 6 | plugins.devdocs.enable = true; 7 | }; 8 | 9 | defaults = { 10 | # Tries to download metadata 11 | test.runNvim = false; 12 | 13 | plugins.devdocs = { 14 | enable = true; 15 | 16 | settings = { 17 | ensure_installed = [ ]; 18 | }; 19 | }; 20 | }; 21 | 22 | example = { 23 | # Tries to download metadata 24 | test.runNvim = false; 25 | 26 | plugins.devdocs = { 27 | enable = true; 28 | 29 | settings = { 30 | ensure_installed = [ 31 | "go" 32 | "html" 33 | "http" 34 | "lua~5.1" 35 | ]; 36 | }; 37 | }; 38 | }; 39 | } 40 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/dial/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.dial.enable = true; 4 | }; 5 | 6 | example = { 7 | plugins.dial = { 8 | enable = true; 9 | 10 | luaConfig.content = '' 11 | local augend = require("dial.augend") 12 | require("dial.config").augends:register_group({ 13 | default = { 14 | augend.integer.alias.decimal, 15 | augend.integer.alias.hex, 16 | augend.date.alias["%Y/%m/%d"], 17 | augend.constant.alias.bool, 18 | augend.semver.alias.semver, 19 | augend.constant.new({ elements = { "let", "const" } }), 20 | }, 21 | }) 22 | ''; 23 | }; 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/direnv/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.direnv.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.direnv = { 8 | enable = true; 9 | 10 | settings = { 11 | direnv_auto = 0; 12 | direnv_edit_mode = "vsplit"; 13 | direnv_silent_load = 0; 14 | }; 15 | }; 16 | }; 17 | 18 | no-packages = { 19 | plugins.direnv.enable = true; 20 | 21 | dependencies.direnv.enable = false; 22 | }; 23 | } 24 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/dotnet/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.dotnet.enable = true; 4 | }; 5 | 6 | default = { 7 | plugins.dotnet = { 8 | enable = true; 9 | 10 | settings = { 11 | bootstrap = { 12 | auto_bootstrap = true; 13 | }; 14 | project_selection = { 15 | path_display = "filename_first"; 16 | }; 17 | }; 18 | }; 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/earthly/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.earthly.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/easyescape/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.easyescape.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.easyescape = { 8 | enable = true; 9 | 10 | settings = { 11 | chars = { 12 | j = 1; 13 | k = 1; 14 | }; 15 | timeout = 100; 16 | }; 17 | }; 18 | }; 19 | 20 | example = { 21 | plugins.easyescape = { 22 | enable = true; 23 | 24 | settings = { 25 | chars.j = 2; 26 | timeout = 2000; 27 | }; 28 | }; 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/endwise/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.endwise.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/faust/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.faust.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/flit/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.flit.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.flit = { 8 | enable = true; 9 | settings = { 10 | keys = { 11 | f = "f"; 12 | F = "F"; 13 | t = "t"; 14 | T = "T"; 15 | }; 16 | labeled_modes = "v"; 17 | clever_repeat = true; 18 | multiline = true; 19 | opts = { }; 20 | }; 21 | }; 22 | }; 23 | 24 | example = { 25 | plugins.flit = { 26 | enable = true; 27 | settings = { 28 | keys = { 29 | f = "f"; 30 | F = "F"; 31 | t = "t"; 32 | T = "T"; 33 | }; 34 | labeled_modes = "nv"; 35 | multiline = true; 36 | }; 37 | }; 38 | }; 39 | } 40 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/friendly-snippets/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins = { 4 | luasnip.enable = true; 5 | friendly-snippets.enable = true; 6 | }; 7 | }; 8 | } 9 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/fugit2/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.fugit2.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.fugit2 = { 8 | enable = true; 9 | 10 | settings = { 11 | width = 100; 12 | max_width = "80%"; 13 | min_width = 50; 14 | content_width = 60; 15 | height = "60%"; 16 | show_patch = false; 17 | libgit2_path = null; 18 | gpgme_path = "gpgme"; 19 | external_diffview = false; 20 | blame_priority = 1; 21 | blame_info_width = 60; 22 | blame_info_height = 10; 23 | colorscheme = null; 24 | }; 25 | }; 26 | }; 27 | 28 | example = { 29 | plugins.fugit2 = { 30 | enable = true; 31 | 32 | settings = { 33 | width = "62%"; 34 | height = "90%"; 35 | external_diffview = true; 36 | }; 37 | }; 38 | }; 39 | } 40 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/fugitive/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.fugitive.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/git-worktree/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.git-worktree.enable = true; 4 | }; 5 | 6 | telescopeEnabled = { 7 | plugins.telescope = { 8 | enable = true; 9 | }; 10 | 11 | plugins.git-worktree = { 12 | enable = true; 13 | 14 | enableTelescope = true; 15 | 16 | settings = { 17 | change_directory_command = "tcd"; 18 | update_on_change = true; 19 | update_on_change_command = "e ."; 20 | clear_jumps_on_change = true; 21 | }; 22 | }; 23 | 24 | plugins.web-devicons.enable = true; 25 | }; 26 | 27 | telescopeDisabled = { 28 | plugins.git-worktree = { 29 | enable = true; 30 | 31 | enableTelescope = false; 32 | }; 33 | }; 34 | 35 | no-packages = { 36 | dependencies.git.enable = false; 37 | 38 | plugins.git-worktree.enable = true; 39 | }; 40 | } 41 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/gitignore/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.gitignore.enable = true; 4 | }; 5 | 6 | example = { 7 | plugins.gitignore = { 8 | enable = true; 9 | 10 | keymap = "gi"; 11 | }; 12 | }; 13 | } 14 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/glow/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.glow.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.glow = { 8 | enable = true; 9 | 10 | settings = { 11 | glow_path.__raw = "vim.fn.exepath('glow')"; 12 | install_path = "~/.local/bin"; 13 | border = "shadow"; 14 | style = "dark"; 15 | pager = false; 16 | width = 80; 17 | height = 100; 18 | width_ratio = 0.7; 19 | height_ratio = 0.7; 20 | }; 21 | }; 22 | }; 23 | 24 | example = { 25 | plugins.glow = { 26 | enable = true; 27 | settings = { 28 | border = "single"; 29 | style = "/path/to/catppuccin.json"; 30 | }; 31 | }; 32 | }; 33 | } 34 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/godot/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | pkgs, 4 | ... 5 | }: 6 | let 7 | # Godot is only available on Linux 8 | enable = lib.meta.availableOn pkgs.stdenv.hostPlatform pkgs.godot_4; 9 | in 10 | lib.optionalAttrs enable { 11 | empty = { 12 | plugins.godot.enable = true; 13 | }; 14 | 15 | defaults = { 16 | plugins.godot = { 17 | enable = true; 18 | 19 | settings = { 20 | executable = "godot"; 21 | }; 22 | }; 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/goyo/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.goyo.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.goyo = { 8 | enable = true; 9 | 10 | settings = { 11 | width = 80; 12 | height = 85; 13 | linenr = 0; 14 | }; 15 | }; 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/helm/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.helm.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/helpview/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.helpview.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.helpview = { 8 | enable = true; 9 | 10 | settings = { 11 | buf_ignore = null; 12 | mode = [ 13 | "n" 14 | "c" 15 | ]; 16 | hybrid_modes = null; 17 | callback = { 18 | on_enable = null; 19 | on_disable = null; 20 | on_mode_change = null; 21 | }; 22 | }; 23 | }; 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/hmts/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins = { 4 | hmts.enable = true; 5 | treesitter.enable = true; 6 | }; 7 | }; 8 | } 9 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/idris2/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.idris2.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/illuminate/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.illuminate.enable = true; 4 | }; 5 | 6 | example = { 7 | plugins.illuminate = { 8 | enable = true; 9 | 10 | delay = 50; 11 | providers = [ "lsp" ]; 12 | modesDenylist = [ "n" ]; 13 | modesAllowlist = [ "v" ]; 14 | underCursor = false; 15 | largeFileCutoff = 10; 16 | minCountToHighlight = 2; 17 | filetypesDenylist = [ "csharp" ]; 18 | filetypesAllowlist = [ "python" ]; 19 | filetypeOverrides = { 20 | x = { 21 | delay = 10; 22 | providers = [ "treesitter" ]; 23 | }; 24 | }; 25 | largeFileOverrides = { 26 | delay = 20; 27 | underCursor = true; 28 | }; 29 | }; 30 | }; 31 | } 32 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/inc-rename/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.inc-rename.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.inc-rename = { 8 | enable = true; 9 | 10 | settings = { 11 | cmd_name = "IncRename"; 12 | hl_group = "Substitute"; 13 | preview_empty_name = false; 14 | show_message = true; 15 | save_in_cmdline_history = true; 16 | input_buffer_type = null; 17 | post_hook = null; 18 | }; 19 | }; 20 | }; 21 | 22 | example = { 23 | plugins.inc-rename = { 24 | enable = true; 25 | 26 | settings = { 27 | input_buffer_type = "dressing"; 28 | preview_empty_name = false; 29 | show_message.__raw = '' 30 | function(msg) 31 | vim.notify(msg, vim.log.levels.INFO, { title = "Rename" }) 32 | end 33 | ''; 34 | }; 35 | }; 36 | }; 37 | } 38 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/indent-o-matic/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.indent-o-matic.enable = true; 4 | }; 5 | 6 | example = { 7 | plugins.indent-o-matic = { 8 | enable = true; 9 | 10 | settings = { 11 | max_lines = 2048; 12 | skip_multiline = false; 13 | standard_widths = [ 14 | 2 15 | 4 16 | 8 17 | ]; 18 | }; 19 | }; 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/indent-tools/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.indent-tools.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.indent-tools = { 8 | enable = true; 9 | 10 | settings = { 11 | normal = { 12 | up = "[i"; 13 | down = "]i"; 14 | repeatable = true; 15 | }; 16 | textobj = { 17 | ii = "ii"; 18 | ai = "ai"; 19 | }; 20 | }; 21 | }; 22 | }; 23 | 24 | example = { 25 | plugins.indent-tools = { 26 | enable = true; 27 | 28 | settings = { 29 | textobj = { 30 | ii = "iI"; 31 | ai = "aI"; 32 | }; 33 | normal = { 34 | up = false; 35 | down = false; 36 | }; 37 | }; 38 | }; 39 | }; 40 | } 41 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/instant/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.instant.enable = true; 4 | }; 5 | 6 | example = { 7 | plugins.instant = { 8 | enable = true; 9 | 10 | settings = { 11 | username = "Joe"; 12 | onlyCwd = true; 13 | cursor_hl_group_user1 = "Cursor"; 14 | cursor_hl_group_user2 = "Cursor"; 15 | cursor_hl_group_user3 = "Cursor"; 16 | cursor_hl_group_user4 = "Cursor"; 17 | cursor_hl_group_default = "Cursor"; 18 | name_hl_group_user1 = "CursorLineNr"; 19 | name_hl_group_user2 = "CursorLineNr"; 20 | name_hl_group_user3 = "CursorLineNr"; 21 | name_hl_group_user4 = "CursorLineNr"; 22 | name_hl_group_default = "CursorLineNr"; 23 | }; 24 | }; 25 | }; 26 | } 27 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/intellitab/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.intellitab.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/julia-cell/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.julia-cell.enable = true; 4 | }; 5 | 6 | example = { 7 | plugins.julia-cell = { 8 | enable = true; 9 | 10 | settings = { 11 | delimit_cells_by = "marks"; 12 | tag = "##"; 13 | }; 14 | 15 | keymaps = { 16 | silent = true; 17 | 18 | executeCell = "a"; 19 | executeCellJump = "b"; 20 | run = "c"; 21 | clear = "d"; 22 | prevCell = "e"; 23 | nextCell = "f"; 24 | }; 25 | }; 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/jupytext/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.jupytext.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.jupytext = { 8 | enable = true; 9 | 10 | settings = { 11 | style = "hydrogen"; 12 | output_extension = "auto"; 13 | force_ft = null; 14 | custom_language_formatting = { }; 15 | }; 16 | }; 17 | }; 18 | 19 | example = { 20 | plugins.jupytext = { 21 | enable = true; 22 | 23 | settings = { 24 | style = "light"; 25 | output_extension = "auto"; 26 | force_ft = null; 27 | custom_language_formatting.python = { 28 | extension = "md"; 29 | style = "markdown"; 30 | force_ft = "markdown"; 31 | }; 32 | }; 33 | }; 34 | }; 35 | } 36 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/lastplace/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.lastplace.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.lastplace = { 8 | enable = true; 9 | 10 | settings = { 11 | lastplace_ignore_buftype = [ 12 | "quickfix" 13 | "nofix" 14 | "help" 15 | ]; 16 | lastplace_ignore_filetype = [ 17 | "gitcommit" 18 | "gitrebase" 19 | "svn" 20 | "hgcommit" 21 | ]; 22 | lastplace_open_folds = true; 23 | }; 24 | }; 25 | }; 26 | } 27 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/lazygit/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.lazygit.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.lazygit = { 8 | enable = true; 9 | 10 | settings = { 11 | floating_window_winblend = 0; 12 | floating_window_scaling_factor = 0.9; 13 | floating_window_border_chars = [ 14 | "╭" 15 | "─" 16 | "╮" 17 | "│" 18 | "╯" 19 | "─" 20 | "╰" 21 | "│" 22 | ]; 23 | floating_window_use_plenary = 0; 24 | use_neovim_remote = 1; 25 | use_custom_config_file_path = 0; 26 | config_file_path = [ ]; 27 | }; 28 | }; 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/lexima/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.lexima.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.lexima = { 8 | enable = true; 9 | 10 | settings = { 11 | no_default_rules = 0; 12 | map_escape = ""; 13 | enable_basic_rules = 1; 14 | enable_newline_rules = 1; 15 | enable_space_rules = 1; 16 | enable_endwise_rules = 1; 17 | accept_pum_with_enter = 1; 18 | ctrlh_as_backspace = 0; 19 | disable_on_nofile = 0; 20 | disable_abbrev_trigger = 0; 21 | }; 22 | }; 23 | }; 24 | 25 | example = { 26 | plugins.lexima = { 27 | enable = true; 28 | 29 | settings = { 30 | map_escape = ""; 31 | enable_space_rules = 0; 32 | enable_endwise_rules = 0; 33 | }; 34 | }; 35 | }; 36 | } 37 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/lsp-lines/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.lsp-lines.enable = true; 4 | }; 5 | 6 | example = { 7 | plugins.lsp-lines.enable = true; 8 | 9 | diagnostic.settings.virtual_lines = { 10 | only_current_line = true; 11 | highlight_whole_line = false; 12 | }; 13 | }; 14 | } 15 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/lsp-status/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins = { 4 | lsp.enable = true; 5 | lsp-status.enable = true; 6 | }; 7 | }; 8 | 9 | defaults = { 10 | plugins = { 11 | lsp.enable = true; 12 | lsp-status = { 13 | enable = true; 14 | 15 | settings = { 16 | kind_labels = { }; 17 | select_symbol = ""; 18 | current_function = true; 19 | show_filename = true; 20 | indicator_ok = "OK"; 21 | indicator_errors = "E"; 22 | indicator_warnings = "W"; 23 | indicator_info = "i"; 24 | indicator_hint = "?"; 25 | indicator_separator = " "; 26 | component_separator = " "; 27 | diagnostics = true; 28 | }; 29 | }; 30 | }; 31 | }; 32 | } 33 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/lspconfig/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.lspconfig.enable = true; 4 | }; 5 | 6 | # TODO: test integration with `vim.lsp.enable`, etc 7 | # TODO: test some examples of enabling/configuring specific LSP servers 8 | 9 | plugins-lsp-warning = { 10 | plugins.lsp.enable = true; 11 | plugins.lspconfig.enable = true; 12 | 13 | test.warnings = expect: [ 14 | (expect "count" 1) 15 | (expect "any" '' 16 | Nixvim (plugins.lspconfig): Both `plugins.lspconfig.enable' and `plugins.lsp.enable' configure the same plugin (nvim-lspconfig). 17 | '') 18 | (expect "any" "`plugins.lspconfig.enable' defined in `/nix/store/") 19 | (expect "any" "`plugins.lsp.enable' defined in `/nix/store/") 20 | ]; 21 | 22 | test.buildNixvim = false; 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/lspkind/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.lspkind.enable = true; 4 | }; 5 | 6 | example = { 7 | plugins = { 8 | lsp = { 9 | enable = true; 10 | servers.clangd.enable = true; 11 | }; 12 | cmp.enable = true; 13 | lspkind.enable = true; 14 | }; 15 | }; 16 | 17 | defaults = { 18 | plugins.lspkind = { 19 | enable = true; 20 | mode = "symbol_text"; 21 | preset = "codicons"; 22 | symbolMap = null; 23 | cmp = { 24 | enable = true; 25 | maxWidth = 50; 26 | ellipsisChar = "..."; 27 | menu = null; 28 | after = null; 29 | }; 30 | }; 31 | }; 32 | } 33 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/ltex-extra/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins = { 4 | lsp.enable = true; 5 | ltex-extra.enable = true; 6 | }; 7 | }; 8 | } 9 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/luasnip/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.luasnip.enable = true; 4 | }; 5 | 6 | example = { 7 | plugins.luasnip = { 8 | enable = true; 9 | 10 | settings = { 11 | history = true; 12 | updateevents = "TextChanged,TextChangedI"; 13 | enable_autosnippets = true; 14 | ext_opts = { 15 | "__rawKey__require('luasnip.util.types').choiceNode".active.virt_text = [ 16 | [ 17 | "●" 18 | "GruvboxOrange" 19 | ] 20 | ]; 21 | "__rawKey__require('luasnip.util.types').insertNode".active.virt_text = [ 22 | [ 23 | "●" 24 | "GruvboxBlue" 25 | ] 26 | ]; 27 | }; 28 | }; 29 | }; 30 | }; 31 | } 32 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/magma-nvim/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | { 3 | empty = { 4 | # NOTE: 2024-10-10 when marked as linux specific platform 5 | plugins.magma-nvim.enable = pkgs.stdenv.isLinux; 6 | }; 7 | 8 | defaults = { 9 | plugins.magma-nvim = { 10 | # NOTE: 2024-10-10 when marked as linux specific platform 11 | enable = pkgs.stdenv.isLinux; 12 | 13 | settings = { 14 | image_provider = "none"; 15 | automatically_open_output = true; 16 | wrap_output = true; 17 | output_window_borders = true; 18 | cell_highlight_group = "CursorLine"; 19 | save_path.__raw = "vim.fn.stdpath('data') .. '/magma'"; 20 | show_mimetype_debug = false; 21 | }; 22 | }; 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/mark-radar/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.mark-radar.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.mark-radar = { 8 | enable = true; 9 | 10 | settings = { 11 | set_default_mappings = true; 12 | highlight_group = "RadarMark"; 13 | background_highlight = true; 14 | background_highlight_group = "RadarBackground"; 15 | text_position = "overlay"; 16 | show_marks_at_jump_positions = true; 17 | show_off_screen_marks = true; 18 | }; 19 | }; 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/marks/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.marks.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.marks = { 8 | enable = true; 9 | 10 | builtinMarks = [ ]; 11 | defaultMappings = true; 12 | signs = true; 13 | cyclic = true; 14 | forceWriteShada = false; 15 | refreshInterval = 150; 16 | signPriority = 10; 17 | excludedFiletypes = [ ]; 18 | excludedBuftypes = [ ]; 19 | bookmarks = { }; 20 | mappings = { }; 21 | }; 22 | }; 23 | } 24 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/markview/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.markview.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.markview = { 8 | enable = true; 9 | 10 | settings = { 11 | preview = { 12 | enable = true; 13 | buf_ignore = [ ]; 14 | icon_provider = "internal"; 15 | filetypes = [ ]; 16 | hybrid_modes = [ ]; 17 | ignore_previews = [ ]; 18 | max_buf_lines = 1000; 19 | modes = [ ]; 20 | render_distance = [ 21 | 200 22 | 200 23 | ]; 24 | splitview_winopts = { }; 25 | }; 26 | }; 27 | }; 28 | }; 29 | } 30 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/nabla/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.nabla.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/neotest/dart.nix: -------------------------------------------------------------------------------- 1 | { 2 | example = { 3 | plugins = { 4 | treesitter.enable = true; 5 | neotest = { 6 | enable = true; 7 | 8 | adapters.dart = { 9 | enable = true; 10 | 11 | settings = { 12 | command = "flutter"; 13 | use_lsp = true; 14 | custom_test_method_names = [ ]; 15 | }; 16 | }; 17 | }; 18 | }; 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/neotest/dotnet.nix: -------------------------------------------------------------------------------- 1 | { 2 | example = { 3 | plugins = { 4 | treesitter.enable = true; 5 | neotest = { 6 | enable = true; 7 | 8 | adapters.dotnet = { 9 | enable = true; 10 | 11 | settings = { 12 | dap = { 13 | args = { 14 | justMyCode = false; 15 | }; 16 | adapter_name = "netcoredbg"; 17 | }; 18 | custom_attributes = { 19 | xunit = [ "MyCustomFactAttribute" ]; 20 | nunit = [ "MyCustomTestAttribute" ]; 21 | mstest = [ "MyCustomTestMethodAttribute" ]; 22 | }; 23 | dotnet_additional_args = [ "--verbosity detailed" ]; 24 | discovery_root = "project"; 25 | }; 26 | }; 27 | }; 28 | }; 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/neotest/elixir.nix: -------------------------------------------------------------------------------- 1 | { 2 | example = { 3 | plugins = { 4 | treesitter.enable = true; 5 | neotest = { 6 | enable = true; 7 | 8 | adapters.elixir = { 9 | enable = true; 10 | 11 | settings = { 12 | mix_task = [ "my_custom_task" ]; 13 | extra_formatters = [ 14 | "ExUnit.CLIFormatter" 15 | "ExUnitNotifier" 16 | ]; 17 | extra_block_identifiers = [ "test_with_mock" ]; 18 | args = [ "--trace" ]; 19 | post_process_command.__raw = '' 20 | function(cmd) 21 | return vim.tbl_flatten({{"env", "FOO=bar"}, cmd}) 22 | end 23 | ''; 24 | write_delay = 1000; 25 | }; 26 | }; 27 | }; 28 | }; 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/neotest/go.nix: -------------------------------------------------------------------------------- 1 | { 2 | example = { 3 | plugins = { 4 | treesitter.enable = true; 5 | neotest = { 6 | enable = true; 7 | 8 | adapters.go = { 9 | enable = true; 10 | 11 | settings = { 12 | experimental = { 13 | test_table = true; 14 | }; 15 | args = [ 16 | "-count=1" 17 | "-timeout=60s" 18 | ]; 19 | }; 20 | }; 21 | }; 22 | }; 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/neotest/golang.nix: -------------------------------------------------------------------------------- 1 | { 2 | example = { 3 | plugins = { 4 | treesitter.enable = true; 5 | neotest = { 6 | enable = true; 7 | 8 | adapters.golang = { 9 | enable = true; 10 | 11 | settings = { 12 | dap_go_enabled = true; 13 | testify_enabled = false; 14 | warn_test_name_dupes = true; 15 | warn_test_not_executed = true; 16 | args = [ 17 | "-v" 18 | "-race" 19 | "-count=1" 20 | ]; 21 | }; 22 | }; 23 | }; 24 | }; 25 | }; 26 | } 27 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/neotest/haskell.nix: -------------------------------------------------------------------------------- 1 | { 2 | example = { 3 | plugins = { 4 | treesitter.enable = true; 5 | neotest = { 6 | enable = true; 7 | 8 | adapters.haskell = { 9 | enable = true; 10 | 11 | settings = { 12 | build_tools = [ 13 | "stack" 14 | "cabal" 15 | ]; 16 | frameworks = [ 17 | "tasty" 18 | "hspec" 19 | "sydtest" 20 | ]; 21 | }; 22 | }; 23 | }; 24 | }; 25 | }; 26 | } 27 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/neotest/java.nix: -------------------------------------------------------------------------------- 1 | { 2 | example = { 3 | plugins = { 4 | treesitter.enable = true; 5 | neotest = { 6 | enable = true; 7 | 8 | adapters.java = { 9 | enable = true; 10 | 11 | settings = { 12 | ignore_wrapper = false; 13 | }; 14 | }; 15 | }; 16 | }; 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/neotest/jest.nix: -------------------------------------------------------------------------------- 1 | { 2 | example = { 3 | plugins = { 4 | treesitter.enable = true; 5 | neotest = { 6 | enable = true; 7 | 8 | adapters.jest = { 9 | enable = true; 10 | 11 | settings = { 12 | jestCommand = "npm test --"; 13 | jestConfigFile = "custom.jest.config.ts"; 14 | env = { 15 | CI = true; 16 | }; 17 | cwd.__raw = '' 18 | function(path) 19 | return vim.fn.getcwd() 20 | end 21 | ''; 22 | }; 23 | }; 24 | }; 25 | }; 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/neotest/minitest.nix: -------------------------------------------------------------------------------- 1 | { 2 | example = { 3 | plugins = { 4 | treesitter.enable = true; 5 | neotest = { 6 | enable = true; 7 | 8 | adapters.minitest = { 9 | enable = true; 10 | 11 | settings = { 12 | test_cmd.__raw = '' 13 | function() 14 | return vim.tbl_flatten({ 15 | "bundle", 16 | "exec", 17 | "rails", 18 | "test", 19 | }) 20 | end 21 | ''; 22 | }; 23 | }; 24 | }; 25 | }; 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/neotest/phpunit.nix: -------------------------------------------------------------------------------- 1 | { 2 | example = { 3 | plugins = { 4 | treesitter.enable = true; 5 | neotest = { 6 | enable = true; 7 | 8 | adapters.phpunit = { 9 | enable = true; 10 | 11 | settings = { 12 | phpunit_cmd.__raw = '' 13 | function() 14 | return "vendor/bin/phpunit" 15 | end 16 | ''; 17 | root_files = [ 18 | "composer.json" 19 | "phpunit.xml" 20 | ".gitignore" 21 | ]; 22 | filter_dirs = [ 23 | ".git" 24 | "node_modules" 25 | ]; 26 | env = { 27 | XDEBUG_CONFIG = "idekey=neotest"; 28 | }; 29 | dap = null; 30 | }; 31 | }; 32 | }; 33 | }; 34 | }; 35 | } 36 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/neotest/plenary.nix: -------------------------------------------------------------------------------- 1 | { 2 | example = { 3 | plugins = { 4 | treesitter.enable = true; 5 | neotest = { 6 | enable = true; 7 | 8 | adapters.plenary = { 9 | enable = true; 10 | 11 | settings = { 12 | min_init = "./path/to/test_init.lua"; 13 | }; 14 | }; 15 | }; 16 | }; 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/neotest/python.nix: -------------------------------------------------------------------------------- 1 | { 2 | example = { 3 | plugins = { 4 | treesitter.enable = true; 5 | neotest = { 6 | enable = true; 7 | 8 | adapters.python = { 9 | enable = true; 10 | 11 | settings = { 12 | dap.justMyCode = false; 13 | args = [ 14 | "--log-level" 15 | "DEBUG" 16 | ]; 17 | runner = "pytest"; 18 | python = ".venv/bin/python"; 19 | is_test_file.__raw = '' 20 | function(file_path) 21 | return true 22 | end 23 | ''; 24 | pytest_discover_instances = true; 25 | }; 26 | }; 27 | }; 28 | }; 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/neotest/rust.nix: -------------------------------------------------------------------------------- 1 | { 2 | example = { 3 | plugins = { 4 | treesitter.enable = true; 5 | neotest = { 6 | enable = true; 7 | 8 | adapters.rust = { 9 | enable = true; 10 | 11 | settings = { 12 | args = [ "--no-capture" ]; 13 | dap_adapter = "lldb"; 14 | }; 15 | }; 16 | }; 17 | }; 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/neotest/scala.nix: -------------------------------------------------------------------------------- 1 | { 2 | example = { 3 | plugins = { 4 | treesitter.enable = true; 5 | neotest = { 6 | enable = true; 7 | 8 | adapters.scala = { 9 | enable = true; 10 | 11 | settings = { 12 | args = [ "--no-color" ]; 13 | runner = "bloop"; 14 | framework = "utest"; 15 | }; 16 | }; 17 | }; 18 | }; 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/neotest/vitest.nix: -------------------------------------------------------------------------------- 1 | { 2 | example = { 3 | plugins = { 4 | treesitter.enable = true; 5 | neotest = { 6 | enable = true; 7 | 8 | adapters.vitest = { 9 | enable = true; 10 | 11 | settings = { 12 | filter_dir.__raw = '' 13 | function(name, rel_path, root) 14 | return name ~= "node_modules" 15 | end 16 | ''; 17 | }; 18 | }; 19 | }; 20 | }; 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/nerdy/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.nerdy.enable = true; 4 | }; 5 | 6 | with-telescope = { 7 | plugins = { 8 | telescope.enable = true; 9 | web-devicons.enable = true; 10 | 11 | nerdy = { 12 | enable = true; 13 | enableTelescope = true; 14 | }; 15 | }; 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/netman/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | # Fails on darwin with: 3 | # E5113: Error while calling lua chunk: ...ckages/start/netman.nvim/lua/netman/tools/utils/init.lua:52: Unable to open netman utils cache 4 | pkgs.lib.optionalAttrs (!pkgs.stdenv.isDarwin) { 5 | empty = { 6 | plugins.netman.enable = true; 7 | }; 8 | 9 | withNeotree = { 10 | plugins.neo-tree.enable = true; 11 | plugins.netman = { 12 | enable = true; 13 | neoTreeIntegration = true; 14 | }; 15 | plugins.web-devicons.enable = true; 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/nix-develop/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.nix-develop.enable = true; 4 | }; 5 | 6 | example = { 7 | plugins.nix-develop = { 8 | enable = true; 9 | ignoredVariables = { 10 | HOME = true; 11 | }; 12 | separatedVariables = { 13 | LUA_PATH = ":"; 14 | }; 15 | }; 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/nix/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.nix.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/notify/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.notify.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.notify = { 8 | enable = true; 9 | 10 | settings = { 11 | level = "info"; 12 | timeout = 5000; 13 | max_width = null; 14 | max_height = null; 15 | stages = "fade_in_slide_out"; 16 | background_colour = "NotifyBackground"; 17 | icons = { 18 | error = ""; 19 | warn = ""; 20 | info = ""; 21 | debug = ""; 22 | trace = "✎"; 23 | }; 24 | on_open = null; 25 | on_close = null; 26 | render = "default"; 27 | minimum_width = 50; 28 | fps = 30; 29 | top_down = true; 30 | }; 31 | }; 32 | }; 33 | } 34 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/nui/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.nui.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/numbertoggle/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.autosource.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/nvim-bqf/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.nvim-bqf.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/nvim-osc52/default.nix: -------------------------------------------------------------------------------- 1 | let 2 | # This plugin is deprecated 3 | warnings = expect: [ 4 | (expect "count" 1) 5 | (expect "any" "This plugin is obsolete and will be removed after 24.11.") 6 | ]; 7 | in 8 | { 9 | empty = { 10 | plugins.nvim-osc52.enable = true; 11 | 12 | test = { inherit warnings; }; 13 | }; 14 | 15 | defaults = { 16 | plugins.nvim-osc52 = { 17 | enable = true; 18 | 19 | maxLength = 0; 20 | silent = false; 21 | trim = false; 22 | 23 | keymaps = { 24 | silent = false; 25 | enable = true; 26 | }; 27 | }; 28 | 29 | test = { inherit warnings; }; 30 | }; 31 | } 32 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/orgmode/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.orgmode.enable = true; 4 | }; 5 | 6 | default = { 7 | plugins.orgmode = { 8 | enable = true; 9 | settings = { 10 | org_agenda_files = ""; 11 | org_default_notes_file = ""; 12 | }; 13 | }; 14 | }; 15 | 16 | example = { 17 | plugins.orgmode = { 18 | enable = true; 19 | 20 | settings = { 21 | org_agenda_files = "~/orgfiles/**/*"; 22 | org_default_notes_file = "~/orgfiles/refile.org"; 23 | }; 24 | }; 25 | }; 26 | } 27 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/parinfer-rust/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.parinfer-rust.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.parinfer-rust = { 8 | enable = true; 9 | 10 | settings = { 11 | mode = "smart"; 12 | enabled = true; 13 | force_balance = false; 14 | comment_char = ";"; 15 | string_delimiters = [ ''"'' ]; 16 | lisp_vline_symbols = false; 17 | lisp_block_comments = false; 18 | guile_block_comments = false; 19 | scheme_sexp_comments = false; 20 | janet_long_strings = false; 21 | }; 22 | }; 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/persistence/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.persistence.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.persistence = { 8 | enable = true; 9 | 10 | settings = { 11 | branch = true; 12 | dir.__raw = ''vim.fn.expand(vim.fn.stdpath("state") .. "/sessions/")''; 13 | need = 1; 14 | }; 15 | }; 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/plantuml-syntax/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.plantuml-syntax.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.plantuml-syntax = { 8 | enable = true; 9 | 10 | settings = { 11 | set_makeprg = 1; 12 | executable_script = "plantuml"; 13 | }; 14 | }; 15 | }; 16 | } 17 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/preview/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.preview.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/quickmath/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.quickmath.enable = true; 4 | }; 5 | 6 | example = { 7 | plugins.quickmath = { 8 | enable = true; 9 | 10 | keymap = { 11 | key = "q"; 12 | silent = true; 13 | }; 14 | }; 15 | }; 16 | } 17 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/repeat/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.repeat.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/sandwich/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.sandwich.enable = true; 4 | }; 5 | 6 | example = { 7 | plugins.sandwich = { 8 | enable = true; 9 | 10 | settings = { 11 | no_default_key_mappings = 1; 12 | no_tex_ftplugin = 1; 13 | no_vim_ftplugin = 1; 14 | }; 15 | }; 16 | 17 | globals."sandwich#magicchar#f#patterns" = [ 18 | { 19 | header.__raw = "[[\<\%(\h\k*\.\)*\h\k*]]"; 20 | bra = "("; 21 | ket = ")"; 22 | footer = ""; 23 | } 24 | ]; 25 | }; 26 | } 27 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/scope/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.scope.enable = true; 4 | }; 5 | defaults = { 6 | plugins.scope = { 7 | enable = true; 8 | 9 | settings.hooks = { 10 | pre_tab_enter = null; 11 | post_tab_enter = null; 12 | pre_tab_leave = null; 13 | post_tab_leave = null; 14 | pre_tab_close = null; 15 | post_tab_close = null; 16 | }; 17 | }; 18 | }; 19 | example = { 20 | plugins.scope = { 21 | enable = true; 22 | 23 | settings = { 24 | hooks = { 25 | pre_tab_enter.__raw = '' 26 | function() 27 | print("Example hook, about to enter tab") 28 | end 29 | ''; 30 | }; 31 | }; 32 | }; 33 | }; 34 | } 35 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/sleuth/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.sleuth.enable = true; 4 | }; 5 | 6 | example = { 7 | plugins.sleuth = { 8 | enable = true; 9 | 10 | settings = { 11 | heuristics = 1; 12 | gitcommit_heuristics = 0; 13 | no_filetype_indent_on = 1; 14 | }; 15 | }; 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/smart-splits/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.smart-splits.enable = true; 4 | }; 5 | 6 | example = { 7 | plugins.smart-splits = { 8 | enable = true; 9 | 10 | settings = { 11 | ignored_filetypes = [ 12 | "nofile" 13 | "quickfix" 14 | "prompt" 15 | ]; 16 | ignored_buftypes = [ "NvimTree" ]; 17 | default_amount = 3; 18 | move_cursor_same_row = true; 19 | cursor_follows_swapped_bufs = true; 20 | resize_mode = { 21 | quit_key = ""; 22 | resize_keys = [ 23 | "h" 24 | "j" 25 | "k" 26 | "l" 27 | ]; 28 | silent = true; 29 | }; 30 | }; 31 | }; 32 | }; 33 | } 34 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/spider/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.spider.enable = true; 4 | }; 5 | 6 | example = { 7 | plugins.spider = { 8 | enable = true; 9 | 10 | skipInsignificantPunctuation = true; 11 | keymaps = { 12 | silent = true; 13 | motions = { 14 | w = "w"; 15 | e = "e"; 16 | b = "b"; 17 | g = "ge"; 18 | }; 19 | }; 20 | }; 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/sqlite-lua/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.sqlite-lua.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/telekasten/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins = { 4 | telescope.enable = true; 5 | telekasten.enable = true; 6 | web-devicons.enable = false; 7 | }; 8 | }; 9 | 10 | example = { 11 | plugins = { 12 | telescope.enable = true; 13 | telekasten = { 14 | enable = true; 15 | settings = { 16 | home.__raw = ''vim.fn.expand("~/zettelkasten")''; 17 | }; 18 | }; 19 | web-devicons.enable = false; 20 | }; 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/telescope/fzf-native.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.telescope = { 4 | enable = true; 5 | extensions.fzf-native.enable = true; 6 | }; 7 | plugins.web-devicons.enable = true; 8 | }; 9 | 10 | defaults = { 11 | plugins.telescope = { 12 | enable = true; 13 | 14 | extensions.fzf-native = { 15 | enable = true; 16 | 17 | settings = { 18 | fuzzy = true; 19 | override_generic_sorter = true; 20 | override_file_sorter = true; 21 | case_mode = "smart_case"; 22 | }; 23 | }; 24 | }; 25 | plugins.web-devicons.enable = true; 26 | }; 27 | 28 | combine-plugins = { 29 | plugins.telescope = { 30 | enable = true; 31 | extensions.fzf-native.enable = true; 32 | }; 33 | plugins.web-devicons.enable = true; 34 | 35 | performance.combinePlugins.enable = true; 36 | }; 37 | } 38 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/telescope/fzy-native.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.telescope = { 4 | enable = true; 5 | extensions.fzy-native.enable = true; 6 | }; 7 | plugins.web-devicons.enable = true; 8 | }; 9 | 10 | example = { 11 | plugins.telescope = { 12 | enable = true; 13 | 14 | extensions.fzy-native = { 15 | enable = true; 16 | 17 | settings = { 18 | override_file_sorter = true; 19 | override_generic_sorter = false; 20 | }; 21 | }; 22 | }; 23 | plugins.web-devicons.enable = true; 24 | }; 25 | 26 | combine-plugins = { 27 | plugins.telescope = { 28 | enable = true; 29 | extensions.fzy-native.enable = true; 30 | }; 31 | 32 | plugins.web-devicons.enable = true; 33 | performance.combinePlugins.enable = true; 34 | }; 35 | } 36 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/telescope/ui-select.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.telescope = { 4 | enable = true; 5 | extensions.ui-select.enable = true; 6 | }; 7 | plugins.web-devicons.enable = true; 8 | }; 9 | 10 | example = { 11 | plugins.telescope = { 12 | enable = true; 13 | 14 | extensions.ui-select = { 15 | enable = true; 16 | 17 | settings = { 18 | specific_opts.codeactions = false; 19 | }; 20 | }; 21 | }; 22 | plugins.web-devicons.enable = true; 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/texpresso/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.texpresso.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/timerly/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.timerly.enable = true; 4 | }; 5 | 6 | example = { 7 | plugins = { 8 | timerly = { 9 | enable = true; 10 | 11 | settings = { 12 | on_start = null; 13 | on_finish.__raw = '' 14 | function() 15 | vim.notify "Time is up!" 16 | end 17 | ''; 18 | minutes = [ 19 | 30 20 | 10 21 | ]; 22 | mapping = null; 23 | position = "top-left"; 24 | }; 25 | }; 26 | }; 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/treesitter-context/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins = { 4 | treesitter.enable = true; 5 | treesitter-context.enable = true; 6 | }; 7 | }; 8 | 9 | default = { 10 | plugins = { 11 | treesitter.enable = true; 12 | treesitter-context = { 13 | enable = true; 14 | 15 | settings = { 16 | enable = true; 17 | max_lines = 0; 18 | min_window_height = 0; 19 | line_numbers = true; 20 | multiline_threshold = 20; 21 | trim_scope = "outer"; 22 | mode = "cursor"; 23 | separator = null; 24 | zindex = 20; 25 | on_attach = null; 26 | }; 27 | }; 28 | }; 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/treesitter-refactor/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins = { 4 | treesitter-refactor.enable = true; 5 | # Also needs treesitter, to avoid warnings 6 | treesitter.enable = true; 7 | }; 8 | }; 9 | } 10 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/trim/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.trim.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.trim = { 8 | enable = true; 9 | 10 | settings = { 11 | ft_blocklist = [ ]; 12 | patterns = [ ]; 13 | trim_on_write = true; 14 | trim_trailing = true; 15 | trim_last_line = true; 16 | trim_first_line = true; 17 | highlight = false; 18 | highlight_bg = "#ff0000"; 19 | highlight_ctermbg = "red"; 20 | }; 21 | }; 22 | }; 23 | 24 | example = { 25 | plugins.trim = { 26 | enable = true; 27 | 28 | settings = { 29 | ft_blocklist = [ "markdown" ]; 30 | patterns = [ "[[%s/\(\n\n\)\n\+/\1/]]" ]; 31 | trim_on_write = false; 32 | highlight = true; 33 | }; 34 | }; 35 | }; 36 | } 37 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/ts-context-commentstring/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins = { 4 | treesitter.enable = true; 5 | ts-context-commentstring.enable = true; 6 | }; 7 | }; 8 | 9 | # This plugin has no option 10 | } 11 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/twilight/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.twilight.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins = { 8 | treesitter.enable = true; 9 | twilight = { 10 | enable = true; 11 | 12 | settings = { 13 | dimming = { 14 | alpha = 0.25; 15 | color = [ 16 | "Normal" 17 | "#ffffff" 18 | ]; 19 | term_bg = "#000000"; 20 | inactive = false; 21 | }; 22 | context = 10; 23 | treesitter = true; 24 | expand = [ 25 | "function" 26 | "method" 27 | "table" 28 | "if_statement" 29 | ]; 30 | exclude = [ ]; 31 | }; 32 | }; 33 | }; 34 | }; 35 | } 36 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/typst-vim/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.typst-vim.enable = true; 4 | }; 5 | 6 | example = { 7 | plugins.typst-vim = { 8 | enable = true; 9 | 10 | settings = { 11 | cmd = "typst"; 12 | pdf_viewer = "zathura"; 13 | conceal_math = 0; 14 | auto_close_toc = 0; 15 | }; 16 | 17 | keymaps = { 18 | silent = true; 19 | watch = "w"; 20 | }; 21 | }; 22 | }; 23 | 24 | no-packages = { 25 | plugins.typst-vim.enable = true; 26 | dependencies.typst.enable = false; 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/vim-bbye/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.vim-bbye.enable = true; 4 | }; 5 | 6 | test = { 7 | plugins.vim-bbye = { 8 | enable = true; 9 | 10 | keymapsSilent = false; 11 | 12 | keymaps = { 13 | bdelete = ""; 14 | bwipeout = ""; 15 | }; 16 | }; 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/vim-be-good/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.vim-be-good.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/vim-colemak/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.vim-colemak.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/vim-css-color/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.vim-css-color.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/vim-dadbod-completion/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.vim-dadbod-completion.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/vim-dadbod-ui/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.vim-dadbod-ui.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/vim-dadbod/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.vim-dadbod.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/vim-slime/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.vim-slime.enable = true; 4 | }; 5 | 6 | example = { 7 | plugins.vim-slime = { 8 | enable = true; 9 | 10 | settings = { 11 | target = "screen"; 12 | vimterminal_cmd = null; 13 | no_mappings = 0; 14 | paste_file = "$HOME/.slime_paste"; 15 | preserve_curpos = 1; 16 | default_config = { 17 | socket_name = "default"; 18 | target_pane = "{last}"; 19 | }; 20 | dont_ask_default = 0; 21 | bracketed_paste = 0; 22 | }; 23 | }; 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/vim-suda/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.vim-suda.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.vim-suda = { 8 | enable = true; 9 | settings = { 10 | path = "sudo"; 11 | noninteractive = 0; 12 | prompt = "Password: "; 13 | smart_edit = 0; 14 | }; 15 | }; 16 | }; 17 | 18 | example = { 19 | plugins.vim-suda = { 20 | enable = true; 21 | settings = { 22 | path = "doas"; 23 | noninteractive = 1; 24 | prompt = "Pass: "; 25 | smart_edit = 1; 26 | }; 27 | }; 28 | }; 29 | } 30 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/vim-surround/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.vim-surround.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/vim-test/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.vim-test.enable = true; 4 | }; 5 | 6 | example = { 7 | plugins.vim-test = { 8 | enable = true; 9 | 10 | settings = { 11 | preserve_screen = false; 12 | "javascript#jest#options" = "--reporters jest-vim-reporter"; 13 | strategy = { 14 | nearest = "vimux"; 15 | file = "vimux"; 16 | suite = "vimux"; 17 | }; 18 | "neovim#term_position" = "vert"; 19 | }; 20 | }; 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/vimux/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.vimux.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.vimux = { 8 | enable = true; 9 | 10 | settings = { 11 | Height = "20%"; 12 | Orientation = "v"; 13 | UseNearest = 1; 14 | ResetSequence = "C-u"; 15 | PromptString = "Command? "; 16 | RunnerType = "pane"; 17 | RunnerName = ""; 18 | TmuxCommand = "tmux"; 19 | OpenExtraArgs = ""; 20 | ExpandCommand = 0; 21 | CloseOnExit = 0; 22 | CommandShell = 1; 23 | RunnerQuery = { }; 24 | Debug = false; 25 | }; 26 | }; 27 | }; 28 | 29 | example = { 30 | plugins.vimux = { 31 | enable = true; 32 | 33 | settings = { 34 | Height = "25"; 35 | Orientation = "h"; 36 | UseNearest = 0; 37 | }; 38 | }; 39 | }; 40 | } 41 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/wakatime/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.wakatime.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/wezterm/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.wezterm.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.wezterm = { 8 | enable = true; 9 | 10 | settings = { 11 | create_commands = true; 12 | }; 13 | }; 14 | }; 15 | } 16 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/whitespace/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.whitespace.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.whitespace = { 8 | enable = true; 9 | settings = { 10 | highlight = "DiffDelete"; 11 | ignored_filetypes = [ 12 | "TelescopePrompt" 13 | "Trouble" 14 | "help" 15 | "dashboard" 16 | ]; 17 | ignore_terminal = true; 18 | return_cursor = true; 19 | }; 20 | }; 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/wrapping/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.wrapping.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.wrapping = { 8 | enable = true; 9 | settings = { 10 | notify_on_switch = true; 11 | create_commands = true; 12 | create_keymaps = false; 13 | set_nvim_opt_default = true; 14 | }; 15 | }; 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/zellij-nav/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.zellij-nav.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/zellij/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.zellij.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.zellij = { 8 | enable = true; 9 | 10 | settings = { 11 | path = "zellij"; 12 | replaceVimWindowNavigationKeybinds = false; 13 | vimTmuxNavigatorKeybinds = false; 14 | debug = false; 15 | }; 16 | }; 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/zig/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.zig.enable = true; 4 | }; 5 | 6 | example = { 7 | plugins.zig = { 8 | enable = true; 9 | 10 | settings = { 11 | fmt_autosave = 0; 12 | }; 13 | }; 14 | }; 15 | } 16 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/zk/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.zk.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.zk = { 8 | enable = true; 9 | 10 | settings = { 11 | picker = "select"; 12 | lsp = { 13 | config = { 14 | cmd = [ 15 | "zk" 16 | "lsp" 17 | ]; 18 | name = "zk"; 19 | }; 20 | auto_attach = { 21 | enabled = true; 22 | filetypes = [ "markdown" ]; 23 | }; 24 | }; 25 | }; 26 | }; 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/by-name/zotcite/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | plugins.zotcite.enable = true; 4 | }; 5 | 6 | defaults = { 7 | plugins.zotcite = { 8 | enable = true; 9 | 10 | settings = { 11 | hl_cite_key = true; 12 | conceallevel = 2; 13 | wait_attachment = false; 14 | open_in_zotero = false; 15 | filetypes = [ 16 | "markdown" 17 | "pandoc" 18 | "rmd" 19 | "quarto" 20 | "vimwiki" 21 | ]; 22 | }; 23 | }; 24 | }; 25 | 26 | example = { 27 | plugins.zotcite = { 28 | enable = true; 29 | 30 | settings = { 31 | hl_cite_key = false; 32 | wait_attachment = true; 33 | open_in_zotero = true; 34 | filetypes = [ 35 | "markdown" 36 | "quarto" 37 | ]; 38 | }; 39 | }; 40 | }; 41 | } 42 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/cmp/cmp-async-path.nix: -------------------------------------------------------------------------------- 1 | { 2 | example = { 3 | plugins.cmp = { 4 | enable = true; 5 | settings.sources = [ 6 | { 7 | name = "async_path"; 8 | option = { 9 | trailing_slash = false; 10 | label_trailing_slash = true; 11 | }; 12 | } 13 | ]; 14 | }; 15 | }; 16 | } 17 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/colorschemes/ayu.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | colorschemes.ayu.enable = true; 4 | }; 5 | 6 | defaults = { 7 | colorschemes.ayu = { 8 | enable = true; 9 | 10 | settings = { 11 | mirage = false; 12 | overrides = { }; 13 | }; 14 | }; 15 | }; 16 | } 17 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/colorschemes/bamboo.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | colorschemes.bamboo.enable = true; 4 | }; 5 | 6 | defaults = { 7 | colorschemes.bamboo = { 8 | enable = true; 9 | 10 | settings = { 11 | style = "vulgaris"; 12 | }; 13 | }; 14 | }; 15 | } 16 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/colorschemes/dracula-nvim.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | colorschemes.dracula-nvim.enable = true; 4 | }; 5 | 6 | default = { 7 | colorschemes.dracula-nvim = { 8 | enable = true; 9 | }; 10 | }; 11 | 12 | example = { 13 | colorschemes.dracula-nvim = { 14 | enable = true; 15 | settings = { 16 | italic_comment = true; 17 | colors.green = "#00FF00"; 18 | }; 19 | }; 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/colorschemes/dracula.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | colorschemes.dracula.enable = true; 4 | }; 5 | 6 | defaults = { 7 | colorschemes.dracula = { 8 | enable = true; 9 | 10 | settings = { 11 | bold = true; 12 | italic = true; 13 | strikethrough = true; 14 | underline = true; 15 | undercurl = true; 16 | full_special_attrs_support = false; 17 | high_contrast_diff = false; 18 | inverse = true; 19 | colorterm = true; 20 | }; 21 | }; 22 | }; 23 | 24 | example = { 25 | colorschemes.dracula = { 26 | enable = true; 27 | 28 | settings = { 29 | italic = false; 30 | colorterm = false; 31 | }; 32 | }; 33 | }; 34 | } 35 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/colorschemes/gruvbox.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | colorschemes.gruvbox.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/colorschemes/melange.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | colorschemes.melange.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/colorschemes/modus.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | colorschemes.modus.enable = true; 4 | }; 5 | 6 | defaults = { 7 | colorschemes.modus = { 8 | enable = true; 9 | 10 | settings = { 11 | style = "modus_operandi"; 12 | variant = "default"; 13 | transparent = false; 14 | dim_inactive = false; 15 | hide_inactive_statusline = false; 16 | styles = { 17 | comments.italic = true; 18 | keywords.italic = true; 19 | functions = { }; 20 | variables = { }; 21 | }; 22 | on_colors = "function(colors) end"; 23 | on_highlights = "function(highlights, colors) end"; 24 | }; 25 | }; 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/colorschemes/nord.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | colorschemes.nord.enable = true; 4 | }; 5 | 6 | defaults = { 7 | colorschemes.nord = { 8 | enable = true; 9 | 10 | settings = { 11 | contrast = false; 12 | borders = false; 13 | disable_background = false; 14 | cursorline_transparent = false; 15 | enable_sidebar_background = false; 16 | italic = true; 17 | uniform_diff_background = false; 18 | }; 19 | }; 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/colorschemes/one.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | colorschemes.one.enable = true; 4 | }; 5 | 6 | defaults = { 7 | colorschemes.one = { 8 | enable = true; 9 | 10 | settings = { 11 | allow_italics = 0; 12 | }; 13 | }; 14 | }; 15 | } 16 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/colorschemes/oxocarbon.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | colorschemes.oxocarbon.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/colorschemes/vscode.nix: -------------------------------------------------------------------------------- 1 | { 2 | empty = { 3 | colorschemes.vscode.enable = true; 4 | }; 5 | 6 | defaults = { 7 | colorschemes.vscode = { 8 | enable = true; 9 | settings = { 10 | transparent = true; 11 | italic_comments = true; 12 | underline_links = true; 13 | }; 14 | }; 15 | }; 16 | } 17 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/lsp/jsonls.nix: -------------------------------------------------------------------------------- 1 | { 2 | example = { 3 | plugins.lsp = { 4 | enable = true; 5 | 6 | servers.jsonls = { 7 | enable = true; 8 | 9 | settings = { 10 | format = { 11 | enable = true; 12 | }; 13 | validate = { 14 | enable = true; 15 | }; 16 | }; 17 | }; 18 | }; 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/lsp/language-servers/dartls.nix: -------------------------------------------------------------------------------- 1 | { 2 | example = { 3 | plugins.lsp = { 4 | enable = true; 5 | 6 | servers.dartls = { 7 | enable = true; 8 | 9 | settings = { 10 | analysisExcludedFolders = [ 11 | "foo/bar" 12 | "./hello" 13 | "../bye/see/you/next/time" 14 | ]; 15 | enableSdkFormatter = false; 16 | lineLength = 100; 17 | completeFunctionCalls = true; 18 | showTodos = true; 19 | renameFilesWithClasses = "prompt"; 20 | enableSnippets = true; 21 | updateImportsOnRename = true; 22 | documentation = "full"; 23 | includeDependenciesInWorkspaceSymbols = true; 24 | }; 25 | }; 26 | }; 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/lsp/language-servers/jsonnet.nix: -------------------------------------------------------------------------------- 1 | { 2 | example = { 3 | plugins.lsp = { 4 | enable = true; 5 | 6 | servers.jsonnet_ls = { 7 | enable = true; 8 | 9 | settings = { 10 | Indent = 4; 11 | MaxBlankLines = 10; 12 | StringStyle = "single"; 13 | CommentStyle = "leave"; 14 | PrettyFieldNames = true; 15 | PadArrays = false; 16 | PadObjects = true; 17 | SortImports = false; 18 | UseImplicitPlus = true; 19 | StripEverything = false; 20 | StripComments = false; 21 | }; 22 | }; 23 | }; 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/lsp/language-servers/nil-ls.nix: -------------------------------------------------------------------------------- 1 | { 2 | example = { 3 | plugins.lsp = { 4 | enable = true; 5 | 6 | servers.nil_ls = { 7 | enable = true; 8 | 9 | settings = { 10 | diagnostics = { 11 | ignored = [ 12 | "unused_binding" 13 | "unused_with" 14 | ]; 15 | excludedFiles = [ "Cargo.nix" ]; 16 | }; 17 | formatting = { 18 | command = [ "nixfmt" ]; 19 | }; 20 | nix = { 21 | binary = "nix"; 22 | maxMemoryMB = 2048; 23 | flake = { 24 | autoArchive = true; 25 | autoEvalInputs = false; 26 | nixpkgsInputName = "nixpkgs"; 27 | }; 28 | }; 29 | }; 30 | }; 31 | }; 32 | }; 33 | } 34 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/lsp/language-servers/nixd.nix: -------------------------------------------------------------------------------- 1 | { 2 | example = { 3 | plugins.lsp = { 4 | enable = true; 5 | 6 | servers.nixd = { 7 | enable = true; 8 | 9 | settings = { 10 | nixpkgs.expr = '' 11 | import (builtins.getFlake "/home/lyc/workspace/CS/OS/NixOS/flakes").inputs.nixpkgs { } 12 | ''; 13 | 14 | formatting = { 15 | command = [ "nixpkgs-fmt" ]; 16 | }; 17 | 18 | options = { 19 | nixos.expr = '' 20 | (builtins.getFlake "/home/lyc/flakes").nixosConfigurations.adrastea.options 21 | ''; 22 | 23 | home-manager.expr = '' 24 | (builtins.getFlake "/home/lyc/flakes").homeConfigurations."lyc@adrastea".options 25 | ''; 26 | }; 27 | }; 28 | }; 29 | }; 30 | }; 31 | } 32 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/lsp/language-servers/vls.nix: -------------------------------------------------------------------------------- 1 | { 2 | default = { 3 | plugins.lsp = { 4 | enable = true; 5 | servers.vls.enable = true; 6 | }; 7 | 8 | extraConfigLuaPost = '' 9 | -- V files are recognized by default 10 | assert(vim.filetype.match({ filename = "test.v" }) == "vlang", "V filetype is not recognized") 11 | ''; 12 | }; 13 | 14 | extra-options = { 15 | plugins.lsp = { 16 | enable = true; 17 | 18 | servers.vls = { 19 | enable = true; 20 | autoSetFiletype = true; 21 | }; 22 | }; 23 | 24 | extraConfigLuaPost = '' 25 | -- autoSetFiletype 26 | assert(vim.filetype.match({ filename = "test.v" }) == "vlang", "V filetype is not recognized") 27 | ''; 28 | }; 29 | } 30 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/lsp/omnisharp.nix: -------------------------------------------------------------------------------- 1 | { 2 | defaults = { 3 | plugins.lsp = { 4 | enable = true; 5 | 6 | servers.omnisharp = { 7 | # Package ‘dotnet-core-combined’ is marked as insecure, refusing to evaluate. 8 | # Dotnet SDK 6.0.428 is EOL, please use 8.0 (LTS) or 9.0 (Current) 9 | # https://github.com/NixOS/nixpkgs/pull/358533 10 | enable = false; 11 | 12 | settings = { 13 | enableEditorConfigSupport = true; 14 | enableMsBuildLoadProjectsOnDemand = false; 15 | enableRoslynAnalyzers = false; 16 | organizeImportsOnFormat = false; 17 | enableImportCompletion = false; 18 | sdkIncludePrereleases = true; 19 | analyzeOpenDocumentsOnly = true; 20 | }; 21 | }; 22 | }; 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/lsp/yamlls.nix: -------------------------------------------------------------------------------- 1 | { 2 | example = { 3 | plugins.lsp = { 4 | enable = true; 5 | 6 | servers.yamlls = { 7 | enable = true; 8 | 9 | settings = { 10 | hover = true; 11 | completion = true; 12 | validate = true; 13 | schemaStore = { 14 | enable = true; 15 | url = "https://www.schemastore.org/api/json/catalog.json"; 16 | }; 17 | }; 18 | }; 19 | }; 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /tests/test-sources/plugins/lua-config.nix: -------------------------------------------------------------------------------- 1 | { 2 | lua-config-pre-post = { 3 | extraConfigLuaPre = '' 4 | list = {} 5 | ''; 6 | plugins.cmp = { 7 | enable = true; 8 | luaConfig = { 9 | pre = '' 10 | table.insert(list, "pre") 11 | ''; 12 | content = '' 13 | table.insert(list, "init") 14 | ''; 15 | post = '' 16 | table.insert(list, "post") 17 | ''; 18 | }; 19 | }; 20 | extraConfigLuaPost = '' 21 | if not vim.deep_equal(list, {"pre", "init", "post"}) then 22 | vim.print("Unexpected list: " .. vim.inspect(list)) 23 | end 24 | ''; 25 | }; 26 | } 27 | -------------------------------------------------------------------------------- /update-scripts/none-ls.nix: -------------------------------------------------------------------------------- 1 | { 2 | vimPlugins, 3 | lib, 4 | writeText, 5 | }: 6 | let 7 | builtinSources = lib.trivial.importJSON "${vimPlugins.none-ls-nvim.src}/doc/builtins.json"; 8 | builtinSourceNames = lib.mapAttrs (_: lib.attrNames) builtinSources; 9 | in 10 | writeText "none-ls-sources.nix" ( 11 | "# WARNING: DO NOT EDIT\n" 12 | + "# This file is generated with packages..none-ls-builtins, which is run automatically by CI\n" 13 | + (lib.generators.toPretty { } builtinSourceNames) 14 | ) 15 | -------------------------------------------------------------------------------- /update-scripts/nvim-lspconfig/clean-desc.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import json 4 | import os 5 | import subprocess 6 | import sys 7 | 8 | filter = os.environ.get("LUA_FILTER") 9 | if filter is None: 10 | filter = os.path.dirname(__file__) + "/desc-filter.lua" 11 | 12 | with open(sys.argv[1]) as f: 13 | data = json.load(f) 14 | for d in data: 15 | if "desc" in d: 16 | if "#" in d["desc"]: 17 | d["desc"] = subprocess.run( 18 | ["pandoc", "-t", "markdown", f"--lua-filter={filter}"], 19 | input=d["desc"], 20 | capture_output=True, 21 | text=True, 22 | ).stdout 23 | print(json.dumps(data, sort_keys=True)) 24 | -------------------------------------------------------------------------------- /update-scripts/nvim-lspconfig/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | vimPlugins, 4 | neovimUtils, 5 | wrapNeovimUnstable, 6 | neovim-unwrapped, 7 | runCommand, 8 | pandoc, 9 | python3, 10 | }: 11 | let 12 | nvimConfig = neovimUtils.makeNeovimConfig { 13 | plugins = [ 14 | { 15 | plugin = vimPlugins.nvim-lspconfig; 16 | config = null; 17 | optional = false; 18 | } 19 | ]; 20 | }; 21 | 22 | nvim = wrapNeovimUnstable neovim-unwrapped nvimConfig; 23 | in 24 | runCommand "lspconfig-servers" 25 | { 26 | lspconfig = "${vimPlugins.nvim-lspconfig}"; 27 | nativeBuildInputs = [ 28 | pandoc 29 | python3 30 | ]; 31 | } 32 | '' 33 | export HOME=$(realpath .) 34 | # Generates `lsp.json` 35 | ${lib.getExe nvim} -u NONE -E -R --headless +'luafile ${./lspconfig-servers.lua}' +q 36 | LUA_FILTER=${./desc-filter.lua} python3 ${./clean-desc.py} "lsp.json" >$out 37 | '' 38 | -------------------------------------------------------------------------------- /update-scripts/nvim-lspconfig/desc-filter.lua: -------------------------------------------------------------------------------- 1 | function Header(elem) 2 | return pandoc.Strong(elem.content) 3 | end 4 | -------------------------------------------------------------------------------- /update-scripts/rust-analyzer/heading_filter.lua: -------------------------------------------------------------------------------- 1 | function Header(elem) 2 | return pandoc.Strong(elem.content) 3 | end 4 | -------------------------------------------------------------------------------- /update-scripts/shell.nix: -------------------------------------------------------------------------------- 1 | let 2 | packages = import ./. { }; 3 | in 4 | packages.shell 5 | -------------------------------------------------------------------------------- /update-scripts/version-info/main.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | writers, 4 | }: 5 | let 6 | inherit (builtins) 7 | all 8 | match 9 | attrNames 10 | ; 11 | inherit (lib) 12 | importJSON 13 | ; 14 | 15 | lockFile = importJSON ../../flake.lock; 16 | nixpkgsLock = 17 | # Assert there is only one nixpkgs node 18 | assert all (node: match "nixpkgs_[0-9]+" node == null) (attrNames lockFile.nodes); 19 | lockFile.nodes.nixpkgs.original; 20 | 21 | info = { 22 | inherit (lib.trivial) release; 23 | nixpkgs_rev = lib.trivial.revisionWithDefault (throw "nixpkgs revision not available"); 24 | unstable = lib.strings.hasSuffix "-unstable" nixpkgsLock.ref; 25 | }; 26 | in 27 | writers.writeTOML "version-info.toml" info 28 | -------------------------------------------------------------------------------- /version-info.toml: -------------------------------------------------------------------------------- 1 | # DO NOT MODIFY! 2 | # This file was generated by update-scripts/version-info/default.nix 3 | nixpkgs_rev = "3d1f29646e4b57ed468d60f9d286cde23a8d1707" 4 | release = "25.11" 5 | unstable = true 6 | 7 | [versions."24.11"] 8 | branch = "nixos-24.11" 9 | channel = "nixos-24.11" 10 | status = "deprecated" 11 | 12 | [versions."25.05"] 13 | branch = "nixos-25.05" 14 | channel = "nixos-25.05" 15 | status = "stable" 16 | 17 | [versions."25.11"] 18 | branch = "main" 19 | channel = "nixpkgs-unstable" 20 | status = "rolling" 21 | -------------------------------------------------------------------------------- /wrappers/darwin.nix: -------------------------------------------------------------------------------- 1 | self: 2 | { 3 | config, 4 | lib, 5 | ... 6 | }: 7 | let 8 | inherit (lib) 9 | mkIf 10 | ; 11 | cfg = config.programs.nixvim; 12 | evalArgs = { 13 | extraSpecialArgs = { 14 | darwinConfig = config; 15 | }; 16 | modules = [ 17 | ./modules/darwin.nix 18 | ]; 19 | }; 20 | in 21 | { 22 | _file = ./darwin.nix; 23 | 24 | imports = [ (import ./_shared.nix { inherit self evalArgs; }) ]; 25 | 26 | config = mkIf cfg.enable { 27 | environment.systemPackages = [ 28 | cfg.build.package 29 | ]; 30 | }; 31 | } 32 | -------------------------------------------------------------------------------- /wrappers/modules/darwin.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ ./shared.nix ]; 3 | 4 | config = { 5 | meta.wrapper.name = "nix-darwin"; 6 | }; 7 | } 8 | -------------------------------------------------------------------------------- /wrappers/modules/hm.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | { 3 | options = { 4 | defaultEditor = lib.mkEnableOption "nixvim as the default editor"; 5 | 6 | vimdiffAlias = lib.mkOption { 7 | type = lib.types.bool; 8 | default = false; 9 | description = '' 10 | Alias `vimdiff` to `nvim -d`. 11 | ''; 12 | }; 13 | }; 14 | 15 | imports = [ ./shared.nix ]; 16 | 17 | config = { 18 | wrapRc = lib.mkOptionDefault false; 19 | impureRtp = lib.mkOptionDefault true; 20 | meta.wrapper.name = "home-manager"; 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /wrappers/modules/nixos.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | { 3 | options = { 4 | defaultEditor = lib.mkEnableOption "nixvim as the default editor"; 5 | }; 6 | 7 | imports = [ ./shared.nix ]; 8 | 9 | config = { 10 | meta.wrapper.name = "NixOS"; 11 | }; 12 | } 13 | -------------------------------------------------------------------------------- /wrappers/modules/shared.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | { 3 | options = { 4 | enable = lib.mkEnableOption "nixvim"; 5 | 6 | meta.wrapper = { 7 | name = lib.mkOption { 8 | type = lib.types.str; 9 | description = "The human-readable name of this nixvim wrapper. Used in documentation."; 10 | internal = true; 11 | }; 12 | }; 13 | }; 14 | 15 | imports = [ 16 | ./nixpkgs.nix 17 | ]; 18 | } 19 | --------------------------------------------------------------------------------