Skip to content
GDRPublic

About

❄️ Fast, opinionated Neovim setup via Nix. Zero host pollution with pre-configured LSPs, formatters, linters, Catppuccin theme & modern UI plugins.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

28 Commits

Folders and files

Repository files navigation

⚡ nvim.nix

Modular, Lua-first Neovim packaged with Nix magic

CI Nix Flake Neovim Lua License

An opinionated, fast, and feature-rich Neovim editor configuration with pre-configured LSPs, formatters, linters, and modern UI plugins — batteries included & zero host pollution.

Quick Start • Overview • Language Matrix • Plugins • Keymaps • Flake Integration


💡 Overview

nvim.nix provides an instant, IDE-grade Neovim environment completely packaged with Nix. Rather than relying on global system packages or manual plugin managers, all runtime binaries — including Language Servers (LSP), Formatters, Linters, and CLI Tools — are declaratively managed and injected directly into Neovim's isolated $PATH.

❄️ Zero Host Pollution

LSPs, formatters, and tools run in Nix wrapper isolation — leaving your operating system completely pristine.

⚡ Pure Lua Engine

Modular configuration files live in standard Lua under dotfiles/nvim/lua with live reloading on save.

🚀 Runnable Anywhere

Execute immediately on any Linux or macOS machine with standard Nix installed using a single nix run command.


🚀 Quick Start

Tip

No installation needed! Try out the full Neovim setup in an isolated environment without altering your system configuration.

🏃 One-Liner Tryout

nix run github:GDR/nvim.nix

📥 Install to Nix Profile

nix profile install github:GDR/nvim.nix

🧠 Language & Tooling Matrix

All language servers, code formatters, and static linters are pre-wired and automatically invoked on file load or save.

Language / Tech Language Server (LSP) Formatter (conform.nvim) Linter (nvim-lint)
🦀 Rust rust-analyzer rustfmt —
🐹 Go gopls gofumpt —
🐍 Python pyright black —
⚡ C / C++ clangd clang-format —
❄️ Nix nil nixpkgs-fmt —
🌐 TypeScript / JS typescript-language-server prettier —
🌙 Lua lua-language-server stylua —
🐚 Bash / Shell bash-language-server shfmt shellcheck
📦 Bazel / Starlark starpls buildifier buildifier

Bundled CLI Utilities: ripgrep (fast text search), fd (fast file discovery), git (gutter status & blame), tree-sitter (grammar parser generation).


🧩 Included Extensions & Plugins

nvim.nix features a curated collection of modern Neovim plugins configured for speed, visual beauty, and ergonomic editing.

🎨 UI & Aesthetics

Extension / Plugin Description
🌆 tokyonight.nvim / 🐱 catppuccin Sleek, vibrant dark & light color palettes
📊 lualine.nvim Ultra-fast statusline with git branch, LSP status & diagnostics
📑 bufferline.nvim VS Code-style buffer tabbar with icons and quick tab switching
💎 noice.nvim Complete UI overhaul for cmdline, search popups, and floating messages
🍿 snacks.nvim Feature-packed dashboard, indent guides, git browse, and input overlays
⌨️ which-key.nvim Interactive keybinding popup helper displaying available shortcuts
👗 dressing.nvim Enhanced modal dialogs for vim.ui.select and vim.ui.input
📝 render-markdown.nvim Beautiful inline markdown rendering inside Neovim buffers
🪟 smart-splits.nvim Multiplexer-aware split navigation (tmux / WezTerm / Kitty)
🔔 nvim-notify Smooth, animated notification manager

🛠️ Navigation & File Management

Extension / Plugin Description
🌲 neo-tree.nvim Sidebar file explorer with Git status indicators and file icons
🔍 telescope.nvim Modular fuzzy finder over files, buffers, git commits, and LSP symbols
⚡ telescope-fzf-native Native C-based fzf sorter for instant Telescope search results
🛢️ oil.nvim Edit directory layouts directly like a standard text buffer
⚡ flash.nvim Lightning-fast target labels for jumping across visible text
🔎 grug-far.nvim Project-wide search and replace interface with live previews
📑 outline-nvim Tree view sidebar displaying functions, classes, and variables
💾 persistence-nvim Automated session saving and workspace restoration
⚙️ direnv.vim Automatic project environment switcher via direnv

⚡ Coding & Editing Toolkit

Extension / Plugin Description
⚡ blink-cmp High-performance asynchronous autocompletion engine
🌳 nvim-treesitter Tree-sitter AST syntax parser with all language grammars pre-installed
📌 nvim-treesitter-context Sticky headers displaying current function/class context at buffer top
✂️ luasnip Snippet engine with code expansions and custom snippets
🧰 mini.nvim Essential modules: mini.surround (brackets/quotes), mini.ai, mini.pairs
🚜 refactoring.nvim Automated code refactoring (extract variable/function, inline)
🌙 lazydev.nvim Full Lua LSP completions for Neovim config & plugin development

🌿 Git & Build Tools

Extension / Plugin Description
🐙 gitsigns.nvim Git diff indicators in sign column, line blame, & hunk actions
👁️ diffview.nvim Dedicated tabbed Git diff and file revision history viewer
🏛️ neogit Magit-inspired full Git control panel inside Neovim
📦 vim-bazel Bazel target building and automated test runner

🤖 AI Coding Assistant

Extension / Plugin Description
🤖 avante.nvim Cursor-like AI code completion & side-by-side editing assistant

⌨️ Keybindings Cheat Sheet

Below are some essential keymaps configured out of the box (press <Space> for the which-key menu):

Shortcut Action
<C-h> / <C-j> / <C-k> / <C-l> Navigate between split windows
<Shift-h> / <Shift-l> Switch to previous / next buffer
<leader>bd Close current buffer
<leader>w Save current file
<leader>q Quit Neovim
<leader>fn Open new buffer
<leader>cd Open floating line diagnostics
[d / ]d Jump to previous / next diagnostic
<leader>ur Redraw screen & clear search highlights
<leader>R Soft restart Neovim runtime

📦 Flake Integration

Add nvim.nix as an input in your flake.nix to integrate it into your NixOS or Home Manager system setup:

{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    nvim.url = "github:GDR/nvim.nix";
  };

  outputs = { self, nixpkgs, nvim }: {
    # Access the wrapped Neovim package for your architecture:
    # nvim.packages.${system}.default
  };
}

📁 Repository Layout

nvim.nix/
├── flake.nix              # Flake outputs (packages, apps, checks)
├── dotfiles/
│   ├── package.nix        # nix-wrapper-modules package wrapper definition
│   ├── plugins.nix        # Plugin specs & runtime LSP environment
│   └── nvim/              # Modular Lua Neovim configuration files
│       ├── init.lua       # Main entry point
│       └── lua/
│           ├── config/    # Keymaps, options, and autocommands
│           └── plugins/   # Per-plugin Lua configurations
└── tests/                 # Automated flake health checks

📄 License

MIT © Damir Garifullin

About

❄️ Fast, opinionated Neovim setup via Nix. Zero host pollution with pre-configured LSPs, formatters, linters, Catppuccin theme & modern UI plugins.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages