This is a devpod for neovim Proof of Concept. It's using the open source DevPod development environment running on Docker. There are other provider options for running DevPod, such as using Kubernetes, or cloud providers but I'm using Docker for this PoC.
This is a great way to try Neovim without having to install it on your local machine. And it even reuses your local credentials, which makes development smooth!
I can definitely see the value of having a standard development environment that is portable. This would also be great for use in training courses or for onboarding new developers, no matter which IDE you use.
You can read more about the approach I took to create this devpod here, or just get started building it by following the instructions below.
You can see the demo of the devpod-neovim in action by clicking on the image below:
I'm testing using the same dotfiles that I use on my local machine. I didn't make any changes since this is a PoC but, for a real use case I would have dotfiles for the specific environment needed.
For example, this devpod is using a go
image, but in my neovim configration files I load Python
and Node LSPs. This results in a (non-fatal) error message when running neovim on this devpod.
Expand to see list of plugins
[ "Comment.nvim", "FTerm.nvim", "LuaSnip", "cmp-nvim-lsp", "cmp_luasnip", "copilot.vim", "fidget.nvim", "gen.nvim", "git-worktree.nvim", "gitsigns.nvim", "go.nvim", "goto-preview", "guihua.lua", "harpoon", "indent-blankline.nvim", "lazy.nvim", "lazygit.nvim", "lspkind.nvim", "lua-utils.nvim", "lualine.nvim", "markdown-preview.nvim", "mason-lspconfig.nvim", "mason.nvim", "neorg", "noice.nvim", "nui.nvim", "nvim", "nvim-cmp", "nvim-dap", "nvim-dap-go", "nvim-dap-ui", "nvim-dap-virtual-text", "nvim-lspconfig", "nvim-nio", "nvim-notify", "nvim-transparent", "nvim-tree.lua", "nvim-treesitter", "nvim-web-devicons", "obsidian.nvim", "onedark.nvim", "pathlib.nvim", "plenary.nvim", "snacks.nvim", "telescope-fzf-native.nvim", "telescope-symbols.nvim", "telescope.nvim", "twilight.nvim", "vim-fugitive", "vim-pencil", "vim-sleuth", "vim-surround", "zen-mode.nvim" ]You can try out the same configuration that I have by following the instructions below (assumes you have docker
installed):
- Optional if you want a GUI: Install DevPod for your environment
- Install the DevPod CLI
- Set your devpod provider to docker:
devpod provider use docker
Verify your provider setting:
devpod provider list
- Start Docker
- In the terminal, run the following command to build the devpod:
devpod up https://github.com/beckitrue/devpod-neovim --provider docker --dotfiles https://github.com/beckitrue/dotfiles ide use none
Login to the devpod (no password needed):
ssh devpod-neovim.devpod
- Run
nvim
to start neovim. The first run will install the plugins, so it may take a minute. - From the main menu select
Lazy
or typeL
Update
to update the plugins- 'q' to quit
Lazy
and return to the main menu - 'c' to view the list of config files. You can scroll through the list with the arrow keys and select one to open by pressing enter.
- You can checkhealth by running
:checkhealth
- Logout by typing
exit
- Stop the devpod after logging out by running:
devpod stop devpod-neovim
After you've built the devpod once, you can start it again and reconnect to it without having to rebuild it.
devpod start devpod-neovim
ssh devpod-neovim.devpod
You can copy and change the .devcontainer.json
file to add or remove packages. Run
devpod up <path to .devcontainer> devpod-neovim --recreate
after making changes to the devcontainer.json
file.
Here's a lab that walks you through creating your own devpod: Create a DevPod Lab