Neovim configuration and examples for TheAltF4Stream.
These language servers provide support for various programming languages, offering features like auto-completion, go-to definition, and real-time diagnostics.
Dependency Name | Dependency URL |
---|---|
bash-language-server |
bash-language-server |
cuelsp |
cuelsp |
dhall-lsp-server |
dhall-lsp-server |
diagnostic-languageserver |
diagnostic-languageserver |
dockerfile-language-server-nodejs |
dockerfile-language-server-nodejs |
dune |
dune |
gleam |
gleam |
gopls |
gopls |
haskell-language-server |
haskell-language-server |
jsonnet-language-server |
jsonnet-language-server |
lua-language-server |
lua-language-server |
nil |
nil |
nls |
nls |
ocaml-lsp |
ocaml-lsp |
ocamlformat |
ocamlformat |
omnisharp-roslyn |
omnisharp-roslyn |
postgres-lsp |
postgres-lsp |
pyright |
pyright |
rust-analyzer |
rust-analyzer |
sourcekit-lsp |
sourcekit-lsp |
terraform-ls |
terraform-ls |
typescript-language-server |
typescript-language-server |
typescript |
typescript |
vscode-langservers-extracted |
vscode-langservers-extracted |
yaml-language-server |
yaml-language-server |
zls |
zls |
These formatters ensure code consistency and style compliance by automatically formatting source code according to defined rules.
Dependency Name | Dependency URL |
---|---|
alejandra |
alejandra |
black |
black |
gofumpt |
gofumpt |
golines |
golines |
rustfmt |
rustfmt |
terraform |
terraform |
Environment plugin (this repo) which provides an "out-of-the-box" solution configuring all dependencies and plugins mentioned below.
Important
This plugin must be loaded last after all others in your configuration (see install section).
Plugin Name | Plugin URL |
---|---|
thealtf4stream.nvim |
thealtf4stream.nvim |
Language plugins that provide enhancements such as syntax highlighting, LSP configurations, and additional tools for programming languages.
Plugin Name | Plugin URL |
---|---|
nvim-lspconfig |
nvim-lspconfig |
nvim-treesitter.withAllGrammars |
nvim-treesitter |
rust-tools-nvim |
rust-tools.nvim |
vim-just |
vim-just |
vim-nickel |
vim-nickel |
zig-vim |
zig.vim |
Navigation plugins provide an interactive, highly extendable fuzzy finder for Neovim.
Plugin Name | Plugin URL |
---|---|
plenary-nvim |
plenary.nvim |
telescope-nvim |
telescope.nvim |
Theme plugins enhance the visual appearance of the editor with different color schemes.
Plugin Name | Plugin URL |
---|---|
tokyonight-nvim |
tokyonight.nvim |
Terminal plugins provide floating terminal windows within the editor.
Plugin Name | Plugin URL |
---|---|
vim-floaterm |
vim-floaterm |
Completion plugins that provide LLM driven support for various languages and situations.
Plugin Name | Plugin URL |
---|---|
CopilotChat-nvim |
CopilotChat.nvim |
Extra plugins that provide functionalities such as Git integration, status lines, notifications, commenting, and more.
Plugin Name | Plugin URL |
---|---|
comment-nvim |
comment.nvim |
copilot-lua |
copilot.lua |
gitsigns-nvim |
gitsigns.nvim |
lualine-nvim |
lualine.nvim |
noice-nvim |
noice.nvim |
nui-nvim |
nui.nvim |
nvim-colorizer-lua |
nvim-colorizer.lua |
nvim-notify |
nvim-notify |
nvim-treesitter-context |
nvim-treesitter-context |
nvim-web-devicons |
nvim-web-devicons |
omnisharp-extended-lsp-nvim |
omnisharp-extended-lsp.nvim |
rainbow-delimiters-nvim |
rainbow-delimiters.nvim |
trouble-nvim |
trouble.nvim |
There are two methods for setting up the development environment in Neovim:
- pure Lua implementation
- reproducible Nix implementation
Example of how to setup Neovim with Lua based solutions like Packer, etc.
-- init.lua or plugins.lua
-- Ensure packer is installed
local ensure_packer = function()
local fn = vim.fn
local install_path = fn.stdpath('data')..'/site/pack/packer/start/packer.nvim'
if fn.empty(fn.glob(install_path)) > 0 then
fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path})
vim.cmd [[packadd packer.nvim]]
end
end
ensure_packer()
return require('packer').startup(function(use)
use 'wbthomason/packer.nvim' -- Package manager
-- Environment
use 'ALT-F4-LLC/thealtf4stream.nvim'
-- Languages
use 'neovim/nvim-lspconfig' -- Configurations for Nvim LSP
use {'nvim-treesitter/nvim-treesitter', run = ':TSUpdate'}
use 'simrat39/rust-tools.nvim'
use 'NoahTheDuke/vim-just'
use 'nickel-lang/vim-nickel'
use 'ziglang/zig.vim'
-- Navigation
use 'nvim-lua/plenary.nvim'
use 'nvim-telescope/telescope.nvim'
-- Theme
use 'folke/tokyonight.nvim'
-- Terminal
use 'voldikss/vim-floaterm'
-- Completion
use 'github/copilot.vim'
-- Extras
use 'numToStr/Comment.nvim'
use 'zbirenbaum/copilot.lua'
use 'lewis6991/gitsigns.nvim'
use 'nvim-lualine/lualine.nvim'
use 'folke/noice.nvim'
use 'MunifTanjim/nui.nvim'
use 'norcalli/nvim-colorizer.lua'
use 'rcarriga/nvim-notify'
use 'nvim-treesitter/nvim-treesitter-context'
use 'kyazdani42/nvim-web-devicons'
use 'Hoffs/omnisharp-extended-lsp.nvim'
use 'HiPhish/rainbow-delimiters.nvim'
use 'folke/trouble.nvim'
-- Automatically set up your configuration after cloning packer.nvim
-- Put this at the end after all plugins
if packer_bootstrap then
require('packer').sync()
end
end)
This repo provides a neovim
derivation that can be used as a packge on any Nix supported system. This is a "wrapped" variant of Neovim which includes configuration and dependencies (language servers, formatters, etc).
Note
The neovim
derivation provides an identical editor expierence on any nix
supported host.
- Run
neovim
directly with:
$ nix run github:ALT-F4-LLC/thealtf4stream.nvim#neovim
- Run
neovim
in new shell with:
$ nix shell github:ALT-F4-LLC/thealtf4stream.nvim#neovim
$ neovim
- Add to
flake.nix
as an input:
inputs = {
thealtf4stream-nvim.url = "github:ALT-F4-LLC/thealtf4stream.nvim";
};
- (option a): Add to
environment.systemPackages
configuration:
environment.systemPackages = [
inputs.thealtf4stream-nvim.packages.${pkgs.system}.neovim
];
- (option b): Add to
home-manager
configuration:
programs.neovim = inputs.thealtf4stream-nvim.lib.mkHomeManager {
system = pkgs.system;
};