Docker images with nvim, plugins and lsp preconfigured by fuzzah for fuzzah.
Anyway, if you use it:
- at least use cool-retro-term for better experience;
- you may want to customize keybindings and plugins;
- note, that changes will come from time to time just to break everything.
- uses opensuse/tumbleweed
- nvim 0.10+ with vim-plug and plugins:
- vim-airline
- nvim-lspconfig
- nvim-treesitter
- plenary.nvim
- telescope.nvim
- vim-crystal
- zig.vim
- git
- strace
- npm
- ripgrep & fd utils
- tmux with mouse mode enabled
- non-root user to not mess access rights of your source code (can use sudo)
- fish shell with abbreviations (aliases) defined in base.fish:
- git (gs, ga, gas, gc, gm, gk, ...)
- find (ff, fff, fd, ffd)
- edit configs (nvim: cfv, fish: cff, bashrc: cfb)
- workdir is /src
(installable with --build-arg crystal=true
)
- crystal 0.13 with
shards
package manager - crystalline lsp
(installable with --build-arg csharp=true
)
- dotnet-sdk-8.0
- csharp-ls
(installable with --build-arg cxx=true
)
- clang (includes clangd lsp), llvm
- gcc, gcc-c++
- cmake
- ninja
- lcov
- gdb
- ltrace
(installable with --build-arg go=true
)
- go1.22 from repos
- gopls lsp
(installable with --build-arg python=true
)
- python3.12 + pip from repos
- pyright lsp
(installable with --build-arg rust=true
)
- rustup
- rustc & cargo 1.79.0
- rust-analyzer lsp
- gdb
- ltrace
(installable with --build-arg typescript=true
)
- typescript
- eslint
- typescript-language-server
(installable with --build-arg zig=true
)
- zig 0.13 from repos
- the zls language server
- gdb
- ltrace
- nvim bindings defined in bindings.nvim.init
git clone https://github.com/fuzzah/nvim-ide
cd nvim-ide
You can use docker build arguments:
user
is user name in docker
uid
and gid
are user id and group id for user in docker
crystal
, csharp
, cxx
, go
, python
, rust
, typescript
: set to true
if you need this language support in nvim.
Example:
DOCKER_BUILDKIT=1 docker build \
--build-arg user=$USER \
--build-arg uid=$(id -u) --build-arg gid=$(id -g) \
--build-arg cxx=true --build-arg python=true -t fuzzah-nvim-ide .
Note: without buildkit image building may fail.
If you run docker build
as root, you may want to use specific values for uid and gid:
DOCKER_BUILDKIT=1 docker build \
--build-arg user=dev \
--build-arg uid=1000 --build-arg gid=1000 \
--build-arg cxx=true --build-arg python=true -t fuzzah-nvim-ide .
docker run --pull=never --rm -v /your/sources:/src -it fuzzah-nvim-ide
Note, that nvim is symlinked to vim.
Start bash with --norc
option to skip loading of bashrc file:
bash --norc
Tumbleweed provides recent versions of python, clang, gcc and most importantly neovim.
Alpine would cause problems with python wheels and also with C/C++ as it's built with musl.