https://github.com/visrust/dustnvim
visrust/DustNvim : ๐ฆ A no-nonsense Neovim distribution for developers who value speed over complexity. Sub-400ms startup, Rust-first LSP, Termux-native, and 105 themesโall in 105KB. Your new daily driver.
https://github.com/visrust/dustnvim
astronvim dust-nvim dustnvim godot-nvim lazyvim nv nvim nvim-configs nvim-distro rust rustacean vim vis-rust visrust
Last synced: 4 months ago
JSON representation
visrust/DustNvim : ๐ฆ A no-nonsense Neovim distribution for developers who value speed over complexity. Sub-400ms startup, Rust-first LSP, Termux-native, and 105 themesโall in 105KB. Your new daily driver.
- Host: GitHub
- URL: https://github.com/visrust/dustnvim
- Owner: visrust
- License: mit
- Created: 2025-11-11T11:58:56.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2026-02-05T10:32:46.000Z (4 months ago)
- Last Synced: 2026-02-05T22:05:40.463Z (4 months ago)
- Topics: astronvim, dust-nvim, dustnvim, godot-nvim, lazyvim, nv, nvim, nvim-configs, nvim-distro, rust, rustacean, vim, vis-rust, visrust
- Language: Lua
- Homepage: https://visrust.github.io/DustNvim/
- Size: 264 KB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Audit: auditor/INDEX.md
Awesome Lists containing this project
README
# DustNvim
**๐ฆ A blazing-fast Neovim distribution built for speed and simplicity.**
**Sub-400ms startup โข 63 plugins โข 20 LSP servers โข 5 theme collections โข Zero bloat.**
[](LICENSE)
[](https://neovim.io)
[]()
[Features](#-features) โข [Installation](#-installation) โข [Screenshots](#-screenshots) โข [Structure](#-architecture) โข [Contributing](#-contributing)
---
## ๐ฏ Philosophy
DustNvim is a **production-ready IDE** that respects your time. No configuration sprawl. No endless tweaking. Just a carefully curated setup that works out of the boxโfrom desktop workstations to mobile devices.
### Why DustNvim?
| Feature | DustNvim | Typical Configs |
|---------|----------|-----------------|
| **Startup** | <400ms (std/fs.rs on Termux) | 2-5 seconds |
| **Mobile** | Built & tested on Termux | Often broken |
| **Themes** | 5 curated collections | Scattered individual themes |
| **Plugins** | 63 carefully selected | 100+ bloat |
| **Rust** | Pre-configured rust-analyzer | Manual setup |
| **LSP** | Manual control, no Mason | Auto-installed dependencies |
| **Philosophy** | Opinionated, ready to use | Configure everything |
**Perfect for:**
- ๐ Developers who want to code, not configure
- ๐ฑ Mobile development in Termux
- ๐ฆ Rustaceans seeking first-class tooling
- โก Anyone who values speed over complexity
- ๐จ Theme enthusiasts
---
## โจ Features
### **โก Performance Note**
> **Termux (Mobile):** ~300ms for std/fs.rs file loading. Some lag expected due to mobile CPU constraints.
> **Desktop:** Blazing fast startup (<100ms on modern CPUs). All features run smoothly.
DustNvim is optimized for both, but desktop will always be faster. Termux configs include specific optimizations (disabled proc macros, reduced cargo features, etc.).
### **๐ฅ Core Strengths**
- **โก Blazing Fast** โ Sub-400ms startup on desktop; ~300ms for std/fs.rs on Termux
- **๐ฆ Rust Excellence** โ Termux-optimized rust-analyzer with instant diagnostics
- **๐ฑ Termux Native** โ Tested and optimized for mobile development
- **๐จ Curated Themes** โ 5 popular collections (Catppuccin, Rose Pine, Tokyo Night, Nightfox, Gruvbox)
- **๐ ๏ธ LSP Ready** โ 20 pre-configured language servers across 6 categories (manual binary management)
- **๐ก Smart Completion** โ Blink.cmp with snippet support
- **๐ Dual File Navigation** โ Oil.nvim (buffer-style) + Yazi (visual manager)
### **๐ป Developer Experience**
| Feature | Tool | Keybinding |
|---------|------|------------|
| **Fuzzy Finding** | fzf-lua | `f` + sequence |
| **File Explorer** | Oil.nvim | `-` (open) / `` (close) |
| **Visual Manager** | Yazi | `yo` + sequence |
| **Precision Jumps** | Leap.nvim | `m`/`M` + 2 chars |
| **Buffer Switching** | Snipe | `sb` |
| **LSP Actions** | Native LSP | `gp` + sequence |
| **LSP Hover** | Native LSP | `K` |
| **Code Preview** | goto-preview | `gpd`/`gpr`/`gpi` |
| **Diagnostics** | Trouble.nvim | Auto + `ut` |
| **Undo History** | Undotree | `ut` |
| **Terminal** | Built-in + Lazygit | `` / `gl` |
| **Sessions** | auto-session | `ss/sl/si` |
| **Run Code** | Custom module | `zz` |
| **Which-Key** | which-key.nvim | `` |
### **๐จ UI Polish**
- **Tokyo Night Default** โ Beautiful Tokyo Night theme out of the box
- **5 Theme Collections** โ Catppuccin, Rose Pine, Tokyo Night, Nightfox, Gruvbox variants
- **Smart Statusline** โ File info, LSP status, git branch (lualine)
- **Buffer Tabline** โ Visual buffer management (cokeline)
- **Indent Guides** โ Rainbow indentation (indent-blankline)
- **Icon Support** โ Beautiful file icons (mini.icons + web-devicons)
- **Clean Notifications** โ Non-intrusive popups (mini.notify)
### **๐ง Language Support**
**20 pre-configured LSP servers:**
๐ฉ Low-Level (5 servers)
- Rust (`rust-analyzer`)
- C/C++ (`clangd`)
- Zig (`zls`)
- Assembly (`asm-lsp`)
- CMake (`cmake`)
๐ High-Level (2 servers)
- Python (`pyright`)
- Lua (`lua-ls`)
๐ Web Development (5 servers)
- TypeScript/JavaScript (`ts_ls`)
- Go (`gopls`)
- HTML (`html`)
- CSS (`css_ls`)
- PHP (`phpactor`)
๐ฎ Game Development (1 server)
- GDScript (`godot_ls`)
๐ Productivity (4 servers)
- Markdown (`marksman`)
- Bash (`bash_ls`)
- Vim (`vimls`)
- Vale (prose linting)
๐ง Utilities (3 servers)
- Docker (`dockerls`)
- JSON (`jsonls`)
- YAML (`yamlls`)
---
## ๐ธ Screenshots
### Coding Interface with LSP Diagnostics

### File Navigation & Buffer Management

### Fuzzy Finding with fzf.lua

๐ท View More Screenshots
### Live Diagnostics & Error Highlighting

### LSP Features & Code Actions

### Integrated Terminal & Git

---
## ๐ Installation
### Recommended: Stable Release (v1.0.0)
```bash
# Clone stable version
mkdir -p ~/.config/dusn && cd ~/.config/dusn
git clone --branch v1.5 --depth=1 https://github.com/visrust/dustnvim.git .
# First launch (auto-installs plugins)
NVIM_APPNAME=dusn nvim
```
**First Launch:** Lazy.nvim auto-installs all plugins (1-2 minutes). Restart Neovim after completion.
### Unstable (Not Recommended)
> โ ๏ธ **Deprecated:** Continuous updates may cause breaking changes. Only use if you need bleeding-edge features.
```bash
# Clone main branch (unstable)
mkdir -p ~/.config/dusn && cd ~/.config/dusn
git clone --depth=1 https://github.com/visrust/DustNvim.git .
# Launch
NVIM_APPNAME=dusn nvim
```
### Add Alias
```bash
# Bash
echo "alias dusn='NVIM_APPNAME=dusn nvim'" >> ~/.bashrc && source ~/.bashrc
# Zsh
echo "alias dusn='NVIM_APPNAME=dusn nvim'" >> ~/.zshrc && source ~/.zshrc
# Fish
echo "alias dusn='NVIM_APPNAME=dusn nvim'" >> ~/.config/fish/config.fish && source ~/.config/fish/config.fish
```
**Launch:** Type `dusn` in your terminal
### Uninstall
```bash
rm -rf ~/.config/dusn/ ~/.local/share/dusn/ ~/.local/state/dusn/ ~/.cache/dusn/
```
---
## ๐ฆ Dependencies
### **Essential (Core Features)**
```bash
fzf ripgrep fd yazi lazygit git
```
**Install:**
```bash
# Termux
pkg install fzf ripgrep fd yazi lazygit git
# Debian/Ubuntu
sudo apt install fzf ripgrep fd-find yazi lazygit git
# Arch Linux
sudo pacman -S fzf ripgrep fd yazi lazygit git
# macOS
brew install fzf ripgrep fd yazi lazygit git
```
### **Recommended (Enhanced Experience)**
```bash
bat git-delta nodejs python3 gcc/clang
```
**Install:**
```bash
# Termux
pkg install bat git-delta nodejs python clang
# Debian/Ubuntu
sudo apt install bat git-delta nodejs python3 build-essential
# Arch Linux
sudo pacman -S bat git-delta nodejs python gcc
# macOS
brew install bat git-delta node python
```
### **Language Tools**
LSP servers are configured via nvim-lspconfig. **You install the binaries yourself** (no Mason):
```bash
# Rust (via rustup - recommended)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup component add rust-analyzer rustfmt clippy
# C/C++
# Install clangd from your package manager
# Python
pip install pyright black isort
# Go
go install golang.org/x/tools/gopls@latest
# Web (TypeScript/JavaScript)
npm install -g typescript typescript-language-server
# Lua
# Install lua-language-server from your package manager
# Others
# Install LSP binaries manually as needed
```
**Example rust-analyzer config** (Termux-optimized):
```lua
-- lua/user/config/server/LowLevel/rust_analyzer.lua
local lspconfig = require("lspconfig")
lspconfig.rust_analyzer.setup({
flags = {
debounce_text_changes = 300,
},
settings = {
["rust-analyzer"] = {
checkOnSave = {
enable = true,
command = "clippy",
},
cargo = {
allFeatures = false,
buildScripts = { enable = false },
},
procMacro = { enable = false }, -- Termux optimization
diagnostics = { enable = true },
},
},
})
```
**You control your toolchain.** Install binaries when you need them.
---
## ๐จ Customization
### Theme Switching
**5 theme collections with multiple variants:**
```vim
:SGT catppuccin-mocha " Catppuccin variants
:SGT rose-pine " Rose Pine
:SGT tokyonight-night " Tokyo Night variants
:SGT nightfox " Nightfox family
:SGT gruvbox " Gruvbox
```
**Available collections:**
- **Catppuccin** โ Mocha, Latte, Frappรฉ, Macchiato
- **Nightfox** โ Nightfox, Dawnfox, Dayfox, Duskfox, Nordfox, Terafox, Carbonfox
- **Rose Pine** โ Main, Moon, Dawn
- **Tokyo Night** โ Night, Storm, Day, Moon
- **Gruvbox** โ Dark, Light variants
**Browse:** `:SGT ` to cycle through available themes
### Keybindings Reference
**Press `` (leader key) to activate Which-Key and see all mappings!**
> **Total:** 39 keybindings across normal, visual, and terminal modes
#### **Core Navigation**
| Key | Mode | Description |
|-----|------|-------------|
| `m` + 2 chars | `n` | Leap forward to location |
| `M` + 2 chars | `n` | Leap backward |
| `gm` + 2 chars | `n` | Leap from window (cross-window jump) |
| `` | `n` | Next buffer |
| `-` | `n` | Open Oil.nvim file explorer |
| `yo` + seq | `n` | Yazi visual file manager |
| `sb` | `n` | Snipe buffers (visual picker) |
#### **LSP & Code Preview**
| Key | Mode | Description |
|-----|------|-------------|
| `K` | `n` | LSP hover documentation |
| `gpd` | `n` | Preview definition |
| `gpt` | `n` | Preview type definition |
| `gpi` | `n` | Preview implementation |
| `gpD` | `n` | Preview declaration |
| `gpr` | `n` | Preview references |
| `gP` | `n` | Close all preview windows |
#### **Fuzzy Finding & Search**
| Key | Mode | Description |
|-----|------|-------------|
| `f` + seq | `n` | FzfLua file finder |
| `hf` | `n` | Help tags (FzfLua) |
#### **Editing & Text Manipulation**
| Key | Mode | Description |
|-----|------|-------------|
| `rs` | `n` | Range substitute |
| `rs` | `v` | Replace in selection |
| `ra` | `n` | Replace in whole file |
| `rm` | `n` | Replace in matching lines |
| `m` | `v` | Move block to line |
| `s` | `n` | Spelling suggestions |
#### **Advanced Replace Operations**
| Key | Mode | Description |
|-----|------|-------------|
| `rrc` | `n` | Replace operation (custom) |
| `rrf` | `n` | Replace operation (custom) |
| `rrb` | `n` | Replace operation (custom) |
| `rrl` | `n` | Replace operation (custom) |
| `rsl` | `n` | Replace operation (custom) |
| `rsv` | `v` | Replace operation (custom) |
| `rsr` | `n` | Replace operation (custom) |
| `rsm` | `n` | Replace operation (custom) |
| `rsa` | `n` | Replace operation (custom) |
#### **LSP Management**
| Key | Mode | Description |
|-----|------|-------------|
| `llp` | `n` | LSP operation (custom) |
| `llu` | `n` | LSP operation (custom) |
| `lls` | `n` | LSP operation (custom) |
| `lsi` | `n` | LSP operation (custom) |
| `lsl` | `n` | LSP operation (custom) |
| `lsr` | `n` | LSP operation (custom) |
#### **Diagnostics**
| Key | Mode | Description |
|-----|------|-------------|
| `dr` | `n` | Force diagnostic refresh |
| `dd` | `n` | Show diagnostic debug info |
#### **Tools & Utilities**
| Key | Mode | Description |
|-----|------|-------------|
| `zz` | `n` | Run code (execute current file) |
| `gl` | `n` | Lazygit UI |
| `` | `n` | Toggle terminal |
| `` | `t` | Enter terminal normal mode |
| `ut` | `n` | Toggle Undotree (visual undo) |
| `cr` | `n` | Check file changes / reload |
#### **Sessions**
| Key | Mode | Description |
|-----|------|-------------|
| `ss` | `n` | Save session |
| `sl` | `n` | Load session |
| `si` | `n` | Session info |
> **Note:** Many bindings in `lua/user/other/keymaps/general.lua` are custom workflow helpers. Explore with Which-Key (``) or check the source files for details.
### Adding LSP Servers
Create a file in the appropriate category:
```lua
-- File: lua/user/config/server/Web/svelte_ls.lua
return {
cmd = { "svelteserver", "--stdio" },
filetypes = { "svelte" },
root_dir = require("lspconfig.util").root_pattern("package.json"),
settings = {
svelte = {
plugin = {
html = { completions = { enable = true } }
}
}
}
}
```
Auto-loads on restart!
---
## ๐ Architecture
DustNvim uses **staged loading** for optimal performance:
```
dusn/
โโโ init.lua # Entry point
โโโ lazy-lock.json # Plugin versions (63 plugins)
โโโ lua/user/
โโโ stages/ # ๐ Sequential loading (01โ07)
โ โโโ 01_sys.lua # Core (options, mappings)
โ โโโ 02_uiCore.lua # UI foundation
โ โโโ 03_mini.lua # Mini.nvim ecosystem
โ โโโ 04_server.lua # LSP (20 servers)
โ โโโ 05_tools.lua # Completion, formatting
โ โโโ 06_dap.lua # Debug adapters
โ โโโ 07_ide.lua # IDE features
โ
โโโ sys/ # ๐ง Core system
โ โโโ options.lua # Vim options
โ โโโ mappings.lua # Global keybindings
โ โโโ plugins.lua # Lazy.nvim setup
โ โโโ inbuilt/ # Built-in enhancements
โ
โโโ config/
โ โโโ server/ # ๐ก LSP by category
โ โ โโโ LowLevel/ # Rust, C/C++, Zig, ASM, CMake
โ โ โโโ HighLevel/ # Python, Lua
โ โ โโโ Web/ # Go, TS, HTML, CSS, PHP
โ โ โโโ GameDev/ # Godot
โ โ โโโ Productive/ # Bash, Markdown, Vim, Vale
โ โ โโโ Utilities/ # Docker, JSON, YAML
โ โ
โ โโโ tools/ # ๐ ๏ธ LSP tooling
โ โ โโโ blink.lua # Completion
โ โ โโโ lsp.lua # LSP config
โ โ โโโ formatter.lua # Formatting
โ โ โโโ goto_preview.lua# Code preview
โ โ
โ โโโ dap/ # ๐ Debugging
โ โ โโโ langs/rust.lua # Rust debugger (codelldb)
โ โ
โ โโโ ide/ # ๐ก IDE features
โ โโโ file/ # fzf, oil, leap, snipe
โ โโโ ide/ # sessions, undotree, treesitter
โ
โโโ ui/core/ # ๐จ UI components
โ โโโ statusline.lua # Lualine
โ โโโ cokeline.lua # Buffer tabs
โ โโโ sgt.lua # Theme switcher
โ โโโ dashboard.lua # Startup screen
โ
โโโ mini/ # ๐ท Mini.nvim
โ โโโ mini_icons.lua
โ โโโ mini_notify.lua
โ โโโ mini_pairs.lua
โ
โโโ snippets/ # โ๏ธ Code snippets (JSON)
โโโ rust.json
โโโ lua.json
โโโ ...
```
### Design Principles
1. **Staged Loading** โ Plugins load sequentially (01โ07) for speed
2. **Category-Based LSP** โ Servers grouped by language family
3. **Modular Design** โ Each feature is self-contained
4. **Clean Separation** โ UI, tools, and IDE features isolated
5. **Performance First** โ Lazy loading, minimal dependencies
**Audit Stats:**
- **63 unique plugins** (76 total references)
- **20 LSP servers** across 6 categories
- **39 keybindings** with no duplicates
- **57 functions** (3 intentional duplicates for compatibility)
---
## ๐ค Contributing
Contributions welcome! Fix bugs, add servers, improve docsโall help appreciated.
### How to Contribute
1. **Fork & Clone**
```bash
git clone https://github.com/YOUR_USERNAME/DustNvim.git
```
2. **Create Branch**
```bash
git checkout -b feature/add-rust-snippets
```
3. **Test Changes**
- Test on desktop and Termux if possible
- Run `:checkhealth` to verify
- Profile with `nvim --startuptime startup.log`
4. **Submit PR**
- Describe changes clearly
- Reference related issues
- Update docs if needed
### Contribution Ideas
- ๐ Add LSP servers in `config/server//`
- ๐จ Enhance UI components
- ๐ Improve documentation
- ๐ Fix bugs and optimize performance
- โ๏ธ Add language snippets
- ๐ฑ Improve Termux compatibility
### Guidelines
- **Keep it minimal** โ Speed over features
- **Test thoroughly** โ Especially on Termux
- **Follow architecture** โ Staged loading pattern
- **One feature per PR** โ Easier to review
---
## ๐ Resources
### Built-in Docs
- **`Books/basics.md`** โ Neovim fundamentals
- **`Books/lesson_1.md`** โ DustNvim workflows
- **`Books/_dustTerm.md`** โ Terminal integration
### Useful Commands
```vim
:checkhealth " Diagnose issues
:Lazy " Manage plugins
:SGT " Switch colorscheme
:help " Built-in help
```
### External Links
- [Neovim Docs](https://neovim.io/doc/)
- [LSP Configuration](https://github.com/neovim/nvim-lspconfig)
- [Lua Guide](https://github.com/nanotee/nvim-lua-guide)
- [Treesitter](https://github.com/nvim-treesitter/nvim-treesitter)
---
## ๐ Credits
Built with incredible open-source tools:
- [lazy.nvim](https://github.com/folke/lazy.nvim) โ Plugin manager
- [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig) โ LSP configs
- [blink.cmp](https://github.com/Saghen/blink.cmp) โ Completion
- [fzf-lua](https://github.com/ibhagwan/fzf-lua) โ Fuzzy finder
- [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter) โ Syntax
- **60+ other plugins** โ See `lazy-lock.json`
Special thanks to theme creators: Catppuccin, Rose Pine, Tokyo Night, Nightfox, and Gruvbox teams.
---
## ๐ License
MIT License โ Free to use, modify, distribute. No warranty.
See [LICENSE](LICENSE) for details.
---
## ๐ฌ Support
- ๐ **Report Bugs:** [GitHub Issues](https://github.com/visrust/DustNvim/issues)
- ๐ก **Discussions:** [GitHub Discussions](https://github.com/visrust/DustNvim/discussions)
- โญ **Star the Repo:** Show support!
---
**Built with โค๏ธ by developers, for developers**
*Stop configuring. Start coding.*
[โฌ Back to Top](#dustnvim)