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.
This configuration includes a variety of plugins designed to enhance your Neovim experience, from LSP and Autopairs, to Completions, Git, Themes, and more. For a complete list and description of all plugins:
- fidget-nvim Standalone UI for nvim-lsp progress. Eye candy for the impatient.
- nvim-lightbulb shows a lightbulb in the sign column whenever a codeAction is available.
- lsp-signature Show function signature when you type.
- nvim-lspconfig common configurations for built-in language server
- lspkind-nvim This tiny plugin adds vscode-like pictograms to neovim built-in lsp.
- lspsaga.nvim Neovim lsp enhance plugin.
- null-ls.nvim neovim as a language server to inject LSP diagnostics, code actions, etc.
- nvim-code-action-menu provides a handy pop-up menu for code actions
- trouble.nvim pretty list of lsp data
- nvim-autopairs an autopair plugin for neovim
- ChatGPT.nvim a plugin for generating text with GPT-3.5 Turbo
- nvim-cmp a completion engine that utilizes sources (replaces nvim-compe)
- cmp-buffer a source for buffer words
- cmp-nvim-lsp a source for builtin LSP client
- cmp-vsnip a source for vim-vsnip autocomplete
- cmp-path a source for path autocomplete
- crates.nvim autocompletion of rust crate versions in
cargo.toml
- nvim-tree-lua a file explorer tree written in lua. Using
- gitsigns.nvim a variety of git decorations
- vim-vsnip a snippet plugin that supports LSP/VSCode's snippet format
- lualine.nvim statusline written in lua.
- toggleterm.nvim a neovim plugin to persist and toggle multiple terminals during an editing session
- borealis a dark colorscheme with multiple options
- Nix installation of treesitter
- nvim-treesitter-context a context bar using tree-sitter
- nvim-ts-autotag uses treesitter to autoclose/rename html tags
- telescope an extendable fuzzy finder of lists. Working ripgrep and fd
- which-key a popup that displays possible keybindings of command being typed
- indent-blankline for indentation guides
- nvim-web-devicons Plugins and colors for icons. Requires patched font
- plenary which is a dependency of some plugins, installed automatically if needed
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.