Welcome to my Neovim configuration crafted for Nix. Feel free to use it as is or extract pieces to help construct your own unique setup.
To utilize this configuration, clone the repo and run the following command from the directory:
nix run .#
or
nix run github:gako358/neovim#.
nix flake update
nix flake lock --update-input 'Name-of-input'
|-[modules] -- Contains modules which are used to configure neovim
|-flake.nix -- Flake file
|-README.md -- This file
Most languages use nvim-lspconfig to set up language server. Additionally some languages also (or exclusively) use null-ls to extend capabilities.
LSP Server: ccls
Plugins
- nvim-ts-autotag for autoclosing and renaming html tags. Works with html, tsx, vue, svelte, and php
LSP Server: dhall-lsp-server
LSP Server: haskell-language-server
Formatting: cabal-fmt
** LSP Server**: jdtls
Formatting: java-google-formater
LSP Server: rnix-lsp
Formatting
rnix provides builtin formatting with nixpkgs-fmt but it is disabled and I am instead using null-ls with alejandra
LSP Server: pyright
Formatting:
Using black through null-ls
LSP Server: rust-analyzer
Formatting
Rust analyzer provides builtin formatting with rustfmt
Plugins
LSP Server: metals
LSP Server: typescript-language-server
Linting
Using eslint through null-ls.
Formatting
Disabled lsp server formatting, using prettier through null-ls.
- fidget.nvim: Standalone UI for nvim-lsp progress.
- nvim-lightbulb: VSCode-like code actions.
- nvim-lspconfig: Quickstart configurations for the Nvim LSP client.
- lspkind-nvim: VSCode-like pictograms for neovim lsp completion items.
- null-ls.nvim: Use Neovim as a language server to inject LSP diagnostics, code actions, and more.
- lsp_signature.nvim: LSP signature hint as you type.
- trouble.nvim: A pretty diagnostics, references, telescope results, quickfix and location list.
- crates.nvim: Rust dependency management.
- nvim-jdtls: Java LSP support.
- nvim-metals: Scala LSP support.
- rust-tools.nvim: Tools for better development in Rust using Neovim's builtin LSP.
- sqls.nvim: SQL language server support.
- nvim-dap: Debug Adapter Protocol client implementation for Neovim.
- nvim-dap-ui: A UI for nvim-dap.
- nvim-dap-virtual-text: Virtual text support for nvim-dap.
- nvim-nio: Neovim IO library.
- telescope.nvim: Highly extendable fuzzy finder over lists.
- nvim-cmp: A completion plugin for neovim coded in Lua.
- cmp-buffer: nvim-cmp source for buffer words.
- cmp-nvim-lsp: nvim-cmp source for neovim's built-in LSP.
- cmp-vsnip: nvim-cmp source for vim-vsnip.
- cmp-path: nvim-cmp source for filesystem paths.
- cmp-treesitter: nvim-cmp source for treesitter.
- cmp-dap: nvim-cmp source for nvim-dap.
- vim-vsnip: Snippet plugin for vim/nvim that supports LSP/VSCode's snippet format.
- copilot.lua: Lua plugin for GitHub Copilot.
- CopilotChat.nvim: Chat interface for GitHub Copilot.
- glow.nvim: Markdown preview using glow.
- gitsigns.nvim: Git integration for buffers.
- lazygit.nvim: Plugin for calling lazygit from within neovim.
- undotree: Undo tree visualizer for Neovim.
- nvim-autopairs: A super powerful autopair plugin for Neovim.
- indent-blankline.nvim: Indent guides for Neovim.
- lualine.nvim: A blazing fast and easy to configure Neovim statusline written in Lua.
- nvim-web-devicons: Lua fork of vim-web-devicons for neovim.
- noice.nvim: Highly experimental plugin that completely replaces the UI for messages, cmdline and the popupmenu.
- nui.nvim: UI Component Library for Neovim.
- nvim-notify: A fancy, configurable, notification manager for NeoVim.
- ranger.nvim: Ranger integration for Neovim.
- theme: A soft dark, fully customizable Neovim theme.
- which-key.nvim: Neovim plugin that shows a popup with possible keybindings of the command you started typing.
- plenary.nvim: All the lua functions you don't want to write twice.
The files and scripts in this repository are licensed under the MIT License, which is a very permissive license allowing you to use, modify, copy, distribute, sell, give away, etc. the software. In other words, do what you want with it. The only requirement with the MIT License is that the license and copyright notice must be provided with the software.