Skip to content

Neovim configuration for TheAltF4Stream as a plugin.

License

Notifications You must be signed in to change notification settings

ALT-F4-LLC/thealtf4stream.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

thealtf4stream.nvim

Neovim configuration and examples for TheAltF4Stream.

Test flake

Preview

Contents

Dependencies

Language Servers

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

Formatters

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

Plugins

Environment

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(s)

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

Navigation plugins provide an interactive, highly extendable fuzzy finder for Neovim.

Plugin Name Plugin URL
plenary-nvim plenary.nvim
telescope-nvim telescope.nvim

Theme

Theme plugins enhance the visual appearance of the editor with different color schemes.

Plugin Name Plugin URL
tokyonight-nvim tokyonight.nvim

Terminal

Terminal plugins provide floating terminal windows within the editor.

Plugin Name Plugin URL
vim-floaterm vim-floaterm

Completion

Completion plugins that provide LLM driven support for various languages and situations.

Plugin Name Plugin URL
CopilotChat-nvim CopilotChat.nvim

Extras

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

Setup

There are two methods for setting up the development environment in Neovim:

  • pure Lua implementation
  • reproducible Nix implementation

Lua

Example of how to setup Neovim with Lua based solutions like Packer, etc.

Example

-- 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)

Nix

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 in shell

  • 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

  • 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;
};

About

Neovim configuration for TheAltF4Stream as a plugin.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages