My personal neovim config for Nix
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.
Usage
To utilize this configuration, clone the repo and run the following command from the directory:
nix run .#
or
nix run github:gako358/neovim#.
Plugin Updates
nix flake update
nix flake lock --update-input 'Name-of-input'
Repository Structure
|-[modules] -- Contains modules which are used to configure neovim
|-flake.nix -- Flake file
|-README.md -- This file
Language Support
Most languages use nvim-lspconfig to set up language server. Additionally some languages also (or exclusively) use null-ls to extend capabilities.
C/C++
LSP Server: ccls
HTML
Plugins
- nvim-ts-autotag for autoclosing and renaming html tags. Works with html, tsx, vue, svelte, and php
Dhall
LSP Server: dhall-lsp-server
Haskell
LSP Server: haskell-language-server
Formatting: cabal-fmt
Java
** LSP Server**: jdtls
Formatting: java-google-formater
Nix
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
Python
LSP Server: pyright
Formatting:
Using black through null-ls
Rust
LSP Server: rust-analyzer
Formatting
Rust analyzer provides builtin formatting with rustfmt
Plugins
Scala
LSP Server: metals
Typescript
LSP Server: typescript-language-server
Linting
Using eslint through null-ls.
Formatting
Disabled lsp server formatting, using prettier through null-ls.
Plugins
LSP Plugins
- 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.
LSP Tools
Debugging
Telescope
Autocompletion
Snippets
- vim-vsnip: Snippet plugin for vim/nvim that supports LSP/VSCode's snippet format.
Copilot
Markdown
Git
Visuals
- 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.
Key Binding Help
- which-key.nvim: Neovim plugin that shows a popup with possible keybindings of the command you started typing.
Utility
- plenary.nvim: All the lua functions you don't want to write twice.
License
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.