Skip to content

charliie-dev/nvimdots.lua

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

2,151 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Neovim Config

Lua Neovim

Stars Issues Contributors Code size

R.I.P. Kentaro Miura sensei ๐Ÿฅ€

๐ŸŽ Intro

  • โšกBLAZINGLY FAST startup time in ~40ms. (Tested on M3 Pro MacBooks)
  • Well structured in Lua.
  • Easy to customize.
  • Use lazy.nvim as plugin manager.
  • Aligned icons across every plugin!

๐Ÿงฑ Structure

${HOME}/.config/nvim

โ”œโ”€โ”€ Applications/                  macOS application shortcuts
โ”œโ”€โ”€ after/
โ”‚   โ”œโ”€โ”€ ftplugin/                  filetype-based rules (c, cpp, dockerfile, go, json,
โ”‚   โ”‚                              jsonc, make, markdown, nix, python, rust)
โ”‚   โ”œโ”€โ”€ plugin/
โ”‚   โ”‚   โ””โ”€โ”€ mise.lua               mise integration (after plugin)
โ”‚   โ””โ”€โ”€ queries/                   custom treesitter queries
โ”‚       โ”œโ”€โ”€ bash/injections.scm    bash injection queries
โ”‚       โ””โ”€โ”€ toml/injections.scm    toml injection queries
โ”œโ”€โ”€ nixos/                         NixOS/home-manager integration
โ”œโ”€โ”€ scripts/
โ”‚   โ””โ”€โ”€ update_lockfile.sh         script for updating lazy-lock.json
โ”œโ”€โ”€ snips/
โ”‚   โ”œโ”€โ”€ package.json               how LuaSnip reads snippets, vscode-style
โ”‚   โ””โ”€โ”€ snippets/                  snippet definitions (c, cpp, global, go, lua,
โ”‚                                  markdown, python/, rust)
โ”œโ”€โ”€ spell/                         custom spelling correction
โ”œโ”€โ”€ flake.nix                      Nix flake for reproducible environment
โ”œโ”€โ”€ flake.lock                     Nix flake lock file
โ”œโ”€โ”€ lazy-lock.json                 lazy.nvim plugin lock file
โ”œโ”€โ”€ mise.toml                      mise task runner config
โ”œโ”€โ”€ stylua.toml                    stylua settings
โ”œโ”€โ”€ tombi.toml                     TOML LSP settings
โ”œโ”€โ”€ init.lua
โ””โ”€โ”€ lua/
    โ”œโ”€โ”€ core/
    โ”‚   โ”œโ”€โ”€ event.lua              event-based autocommands
    โ”‚   โ”œโ”€โ”€ global.lua             global/platform variables
    โ”‚   โ”œโ”€โ”€ init.lua               bootstrap sequence
    โ”‚   โ”œโ”€โ”€ options.lua            neovim options
    โ”‚   โ”œโ”€โ”€ pack.lua               lazy.nvim bootstrap & plugin loader
    โ”‚   โ””โ”€โ”€ settings.lua           user-customizable settings
    โ”œโ”€โ”€ hm-generated.lua           home-manager generated config (NixOS)
    โ”œโ”€โ”€ keymap/                    keymaps organized by category
    โ”‚   โ”œโ”€โ”€ init.lua               package keymaps + requires all categories
    โ”‚   โ”œโ”€โ”€ viewport.lua           buffer, window, tab keymaps
    โ”‚   โ”œโ”€โ”€ edit.lua               editing, motion, text objects, session
    โ”‚   โ”œโ”€โ”€ lsp.lua                LSP, trouble, formatter keymaps
    โ”‚   โ”œโ”€โ”€ git.lua                gitsigns, diffview, git picker
    โ”‚   โ”œโ”€โ”€ fuzzy.lua              snacks.nvim picker keymaps
    โ”‚   โ”œโ”€โ”€ debug.lua              DAP keymaps
    โ”‚   โ”œโ”€โ”€ terminal.lua           terminal, TUI tools (lazygit, btop, yazi)
    โ”‚   โ”œโ”€โ”€ tool.lua               overseer, sniprun, sidebar, markview
    โ”‚   โ””โ”€โ”€ helpers.lua            keymap helper functions
    โ””โ”€โ”€ modules/
        โ”œโ”€โ”€ plugins/               lazy.nvim plugin specs
        โ”‚   โ”œโ”€โ”€ completion.lua     LSP, completion, formatting, linting
        โ”‚   โ”œโ”€โ”€ editor.lua         editing enhancements
        โ”‚   โ”œโ”€โ”€ lang.lua           language-specific plugins
        โ”‚   โ”œโ”€โ”€ tool.lua           tools (DAP, search, file explorer, etc.)
        โ”‚   โ””โ”€โ”€ ui.lua             UI & appearance
        โ”œโ”€โ”€ configs/               plugin configurations
        โ”‚   โ”œโ”€โ”€ completion/        LSP, blink.cmp, conform, nvim-lint configs
        โ”‚   โ”‚   โ”œโ”€โ”€ formatters/    per-formatter configurations
        โ”‚   โ”‚   โ””โ”€โ”€ servers/       per-LSP server configurations
        โ”‚   โ”œโ”€โ”€ editor/            editor plugin configs
        โ”‚   โ”œโ”€โ”€ lang/              language plugin configs
        โ”‚   โ”œโ”€โ”€ tool/              tool configs
        โ”‚   โ”‚   โ””โ”€โ”€ dap/           DAP settings & per-language debug clients
        โ”‚   โ””โ”€โ”€ ui/                UI plugin configs
        โ””โ”€โ”€ utils/                 utility functions
            โ”œโ”€โ”€ init.lua           general utilities
            โ”œโ”€โ”€ icons.lua          icon definitions
            โ”œโ”€โ”€ keymap.lua         keymap utilities (amend/replace)
            โ””โ”€โ”€ dap.lua            DAP utilities

โš™๏ธ Installation

Native (git clone)

# Back up existing config (if any)
mv ~/.config/nvim ~/.config/nvim.backup

# Clone the repository
git clone https://github.com/charliie-dev/nvimdots.lua.git ~/.config/nvim

# Launch Neovim โ€” plugins will be installed automatically on first run
nvim

For prerequisites and dependencies, see Wiki: Prerequisite.

Nix (via home-manager)

This config ships with a flake.nix for reproducible setup. Add it to your home-manager configuration:

{
  inputs.nvimdots.url = "github:charliie-dev/nvimdots.lua";

  # In your home-manager module:
  programs.neovim = {
    enable = true;
    package = inputs.nvimdots.packages.${system}.default;
  };
}

See nixos/ and flake.nix for details.

โš™๏ธ Configuration & Usage

๐Ÿชจ Materials

Docs

YouTube channels

Awesomes

Trendy neovim news

๐ŸŽ‰ Acknowledgment

โšก