No description
Find a file
2026-05-15 07:40:07 -05:00
config Update command 2026-05-15 07:40:07 -05:00
.gitignore Intitial Commit 2026-04-06 14:10:36 -05:00
flake.lock update LSP languages 2026-04-24 07:30:34 -05:00
flake.nix switch inputs to public sources 2026-04-16 23:08:29 -05:00
NEOVIM_GUIDE.md Update NEOVIM_GUIDE.md to match config defaults and plugin bindings 2026-04-11 21:44:40 -05:00
README.md Intitial Commit 2026-04-06 14:10:36 -05:00

nvf-config

A reproducible Neovim configuration built as a Nix flake using nvf.

What's included

The flake produces a single Neovim package (packages.x86_64-linux.default) with the following configured out of the box:

  • Gruvbox dark theme, lualine statusline
  • Telescope (find files, live grep, buffers, help)
  • nvim-tree file explorer
  • Treesitter and LSP for Nix, Python, Lua, Bash, Markdown, HTML, CSS, TypeScript, and Rust
  • nvim-cmp completion
  • Git integration (gitsigns, lazygit via toggleterm)
  • UI extras: illuminate, breadcrumbs, noice
  • Utility: surround, icon-picker, comment-nvim, autopairs

Using this flake

Important: The flake.nix inputs currently point to private Forgejo mirrors. Before you can build, you need to update them to the public upstream sources. In flake.nix, replace the inputs block with:

inputs = {
  nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
  nvf.url = "github:notashelf/nvf";
};

Then run nix flake update to regenerate the lock file.

Prerequisites

  • Nix with flakes enabled

Build and run

nix build .#default
./result/bin/nvim

# or run directly
nix run .#default

Layout

Path Purpose
flake.nix Flake inputs and package output
flake.lock Pinned dependency versions
config/default.nix nvf module (all editor settings)

Key bindings

Leader is Space.

Binding Action
Space ff Find files
Space fg Live grep
Space fb List buffers
Space fh Help tags
Space e Toggle file tree
Space gg Open lazygit
Shift-l/h Next/previous buffer
Ctrl-hjkl Window navigation
Esc Clear search highlight