An open API service indexing awesome lists of open source software.

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.

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://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
[![Neovim](https://img.shields.io/badge/neovim-0.10+-green.svg)](https://neovim.io)
[![Platform](https://img.shields.io/badge/platform-Linux%20|%20macOS%20|%20Termux-lightgrey.svg)]()

[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
![Main Interface](https://github.com/user-attachments/assets/f0cafcf7-5e85-426e-b689-8b0e13a1b101)

### File Navigation & Buffer Management
![File Navigation](https://github.com/user-attachments/assets/448f5763-c4c7-4157-9d70-48baae2b0dad)

### Fuzzy Finding with fzf.lua
![Fuzzy Finder](https://github.com/user-attachments/assets/2a345bc7-32eb-4692-ae71-45f6cfc0938b)

๐Ÿ“ท View More Screenshots


### Live Diagnostics & Error Highlighting
![Diagnostics](https://github.com/user-attachments/assets/13fa7537-bb8a-4add-bcdb-25d652a417ad)

### LSP Features & Code Actions
![LSP Features](https://github.com/user-attachments/assets/e045b264-80f2-4ff7-b4da-77f487e748d4)

### Integrated Terminal & Git
![Terminal](https://github.com/user-attachments/assets/cd27e86e-707d-46ab-95a3-5f11da96dcee)

---

## ๐Ÿš€ 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)