vide
vide copied to clipboard
Neovim custom configuration, oriented for DevOps role (bash, go, json, python, terraform, typescript, etc ...). not empty code :)
Welcome to my personalized Neovim configuration! This configuration is tailored primarily for DevOps tasks but can also be utilized by developers working with languages like Bash, Go, JSON, Python, Terraform, TypeScript, and more.
I've aimed to streamline the installation process by creating a installation
script based on flake.nix
scripts for your preferred distributions (you can even test it on Docker images).
- Features
- Plugins
- Language support
- Fully supported
- Partily supported
- keybinding
- Try
- Try on docker image
- Try on your distribution with nix
- 1) Select nix installation
- 2) Configure nix
- Installation
- Available commands
- TODO
- Credits

Features
- DevOps-Centric: This Neovim setup is optimized for DevOps workflows, enhancing your efficiency in tasks related to infrastructure, automation, and more.
- Developer-Friendly: Even if you're a developer working with various programming languages such as Bash, Deno, Go, JSON, Nix, Python, Terraform, TypeScript, etc., this configuration has you covered.
Plugins
- ⚙️ Core
- 🖥️ Appearance
- A clean, dark Neovim colorscheme tokyonight
- A vim-startify like dashboard
- Status line & tabline bufferline, lualine
- Easily create and manage predefined window layouts edgy
- 🪟 IDE
- Key bindings that stick which-key
- Git integration for buffers gitsigns, neogit
- Indent guides indent_blankline
- Github Copilot
- LSP, diagnostic, linting
- Keymap popup which-key
- tools
- Preview markdown result mardown-preview,
- Convert ascii to tree asciitree
- ⛏️ External
- Conventional commits cocogitto
Language support
To add or remove a language, you need to modify the following files:
flake.nixlua/config/options.lualua/plugins/code/conform.lualua/plugins/code/lspconfig.lualua/plugins/code/nvim-lint.lualua/plugins/code/treesitter.lualua/plugins/editor/filetype.lua
Language marketplace list:
The below table show the languages fully supporter (LSP, highlighting, format, lint/diagnostic, completion, action).
Fully supported
| Language | LSP | HL | FO | Lint | cmp | CA | Plugins |
|---|---|---|---|---|---|---|---|
| deno | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | lspconfig (denols) |
| javascript | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | lspconfig (denols) |
| dockerfile | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | lspconfig (dockerls) |
| lua | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | lspconfig (lua_ls) |
| markdown | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | lspconfig (marksman), nvim-lint(markdownlint), conform(deno_fmt) |
| nix | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | lspconfig (nixd, nil_ls) |
| openscad | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | lspconfig (openscad-lsp) |
| python | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | lspconfig (ruff_lsp) |
| scala | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | lspconfig (metals) |
| shell | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | lspconfig (bashls), conform(shellharden) |
| terraform | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | lspconfig(terraform, terraform-ls |
| tex/latex | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | vimtex, lspconfig(texlab) |
| typescript | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | lspconfig (denols) |
| yaml | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | lspconfig(yamlls) |
Partily supported
| Language | LSP | HL | FO | Lint | cmp | CA | Plugins |
|---|---|---|---|---|---|---|---|
| ansible | ✅ | ✅ | ❌ | ✅ | ❌ | 🔳 | ansiblels, ansible-lint |
| diagram | 🔳 | ❌ | ❌ | ❌ | 🔳 | 🔳 | venn |
| docker-compose | 🔳 | 🔳 | 🔳 | 🔳 | 🔳 | 🔳 | TODO |
| gnuplot | 🔳 | ✅ | 🔳 | 🔳 | 🔳 | 🔳 | Use filetype.nvim type detection |
| go | 🔳 | 🔳 | 🔳 | 🔳 | 🔳 | 🔳 | TODO |
| json | ✅ | ✅ | ✅ | ✅ | 🔳 | 🔳 | lspconfig(jsonls), efm(fixjson) |
| justfile | ❌ | ✅ | ✅ | ✅ | 🔳 | 🔳 | lspconfig(jsonls), efm(fixjson) |
| ledger | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | vim-just |
| lua | ✅ | ✅ | ✅ | ✅ | 🔳 | 🔳 | luacheck, selene, stylua |
| makefile | 🔳 | ✅ | ❌ | ✅ | ❌ | 🔳 | checkmake |
| vim | 🔳 | 🔳 | 🔳 | 🔳 | 🔳 | 🔳 | TODO |
Legend :
LSP-Language Server Protocol / HL-Highlight / FO-Format / CA-Code Action
keybinding
Main keybinding with <leader> key :
| Key | Category |
|---|---|
| c | Code |
| f | Find/File |
| g | Goto |
| m | Misc |
| s | Search |
| t | Table |
| u | User |
| ! | Terminal |
Try
You can use this configuration with neovim >= 0.8.0
If you need install some distribution dependencies use install/<distribname>
script
Supported distributions list:
- archlinux
- debian
- fedora
- nixos
- ubuntu
Try on docker image
git clone https://github.com/badele/vide.git ~/.config/vide
cd ~/.config/vide
make docker-run DISTRIB=<distribname>
make check
nvim
Try on your distribution with nix
Before installing vide in your distribution, you must install & configure nix.
1) Select nix installation
| Distribution | Installation command |
|---|---|
| archlinux | pacman -S git nix |
| debian | apt-get git nix |
| fedora | dnf install git xz && manual nix installation |
| nixos | no need installation |
| ubuntu | apt-get git nix |
Manual nix installation :
curl -L https://nixos.org/nix/install | sh -s -- --daemon --yes
2) Configure nix
echo "extra-experimental-features = nix-command flakes" >> /etc/nix/nix.conf
Preserve your current nvim configuration
git clone https://github.com/badele/vide.git ~/.config/vide
cd ~/.config/vide
nix develop
make check
make try-nvim
Installation
Warning: That replace your current nvim configuration, your current configuration is backuped
mv ~/.config/nvim ~/.config/nvim.bak-$(date +%s)
git clone https://github.com/badele/vide.git ~/.config/nvim
cd ~/.config/nvim
nix develop
make check
nvim
Available commands
check Check requirements installation
distrib-list List supported distribution
docker-build Build <DISTRIB> docker image
docker-run Run <DISTRIB> docker image
help This help
try-nvim Try nvim without update your current nvim configuration
TODO
- vide
- [ ] Define
lazy&eventoption for all plugins - [ ] Add markdown preview keybinding on
<leader>mmor<leader>mp
- [ ] Define
- search plugins for :
- [ ] todo or org alternative
- [ ] vim-sops
- try
- [ ] legendary.nvim
- [ ] neorg
- [ ] ALE
- [ ] vimwiki
- [ ] incline
Credits
Many snippets come from the following projects, thanks to the contributors of these projects