My personal Neovim configuration with LSP support, AI integration, and customized keybindings.
- LSP Support: Full language server protocol integration for multiple languages
- Markdown Preview: Multiple preview options (browser and native webview)
- Completion: nvim-cmp with LSP sources (Tab completion disabled)
- Git Integration: Fugitive, Gitsigns, and Diffview
- File Navigation: Telescope fuzzy finder and Harpoon
- Debugging: DAP (Debug Adapter Protocol) support
<leader>tc- Toggle autocomplete on/off<C-n>/<C-p>- Navigate completion suggestions<C-y>- Accept completion<C-Space>- Trigger completion
<leader>mp- Toggle Markdown Preview (browser-based)<leader>pk- Open Peek preview (native webview)<leader>pc- Close Peek preview
<leader>pf- Find files<C-p>- Git files<leader>/- Live grep<leader>pb- Browse buffers
gd- Go to definitiongr- Go to referencesgi- Go to implementationK- Hover documentation<leader>rn- Rename symbol<leader>ca- Code actions
<leader>gs- Git status (Fugitive)<leader>gp- Preview git hunk<leader>gb- Git blame line
- Tab key inserts literal tabs (autocomplete acceptance disabled)
- Dark chalkboard color theme
- Custom status line with git integration
- Automatic formatting on save for supported languages
This configuration is available as a Nix flake for easy installation on NixOS and other Nix-based systems.
Add to your flake.nix inputs:
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
neovim-config.url = "github:kennethdsheridan/nvim";
};
outputs = { self, nixpkgs, neovim-config }: {
nixosConfigurations.your-hostname = nixpkgs.lib.nixosSystem {
# ... your config
modules = [
{
environment.systemPackages = [
neovim-config.packages.${system}.default
];
}
];
};
};
}# Run Neovim with this config
nix run github:kennethdsheridan/nvim
# Enter development shell with all tools
nix develop github:kennethdsheridan/nvim
# Install locally
nix profile install github:kennethdsheridan/nvim{
inputs.neovim-config.url = "github:kennethdsheridan/nvim";
# In your home.nix
home.packages = [
inputs.neovim-config.packages.${pkgs.system}.default
];
}The flake provides a development shell with all necessary tools:
- Language servers (lua-language-server, rust-analyzer, nil, nixd, etc.)
- Formatters (stylua, nixpkgs-fmt, rustfmt, prettier, black)
- Utilities (ripgrep, fd, fzf, lazygit)
# Clone and enter development environment
git clone https://github.com/kennethdsheridan/nvim ~/.config/nvim
cd ~/.config/nvim
nix develop
# Or with direnv (if .envrc is present)
direnv allow