Files
NixOS/modules/neovim/home.nix
Cookiez c6862c78db - Formatted everything using Alejandra
- Added 'ncli format' as a quick command to format everything
2026-03-11 16:03:16 +01:00

128 lines
3.2 KiB
Nix

{
inputs,
config,
lib,
pkgs,
...
}: {
imports = [
inputs.nixvim.homeModules.nixvim
];
programs.nixvim = {
enable = true;
waylandSupport = true;
# Basic options
opts = {
autoindent = true;
clipboard = "unnamedplus";
shiftwidth = 2;
mousescroll = "ver:0,hor:0";
expandtab = true; # Always insert spaces, never hard tab characters
tabstop = 2; # Make hard tabs display as 2 columns (matches shiftwidth)
softtabstop = 2; # Backspace deletes 2 spaces at a time
number = true;
relativenumber = true;
cursorline = true; # Highlights the entire current line
cursorlineopt = "both"; # Highlights both the line AND the line number
termguicolors = true;
};
colorschemes.catppuccin = {
enable = true;
settings = {
flavour = "mocha";
term_colors = true;
styles = {
booleans = ["bold" "italic"];
conditionals = ["bold"];
functions = ["bold"];
keywords = ["italic"];
};
};
};
keymaps = [
{
mode = "v";
key = ">";
action = ">gv";
options.desc = "Indent and keep selection";
}
{
mode = "v";
key = "<";
action = "<gv";
options.desc = "Unindent and keep selection";
}
];
plugins = {
# Statusline at the bottom of the screen
lualine.enable = true;
# Tab bar at the top of the screen
bufferline.enable = true;
# File type icons used by many UI plugins (Dependency)
web-devicons.enable = true;
# Replaces the default cmdline, messages, and popupmenu with a nicer UI
noice.enable = true;
# Popup notification manager
notify.enable = true;
treesitter = {
# Syntax parsing for accurate highlighting and code understanding
enable = true;
settings = {
highlight.enable = true;
indent.enable = true;
};
};
# Shows the current function/class context pinned at the top of the buffer
treesitter-context.enable = true;
# Text objects based on treesitter nodes (e.g. select a function body)
treesitter-textobjects.enable = true;
# Auto-closes and renames HTML/JSX tags using treesitter
ts-autotag.enable = true;
# Adds indentation guide lines to every indent level
indent-blankline = {
enable = true;
settings = {
indent = {
char = "";
tab_char = ""; # Explicitly define the tab indent guide character
};
scope = {
enabled = true;
};
whitespace = {
remove_blankline_trail = false;
};
};
};
# Highlights and searches TODO/FIXME/HACK comments
todo-comments.enable = true;
nvim-autopairs = {
enable = true;
settings = {
check_ts = true; # Use treesitter to avoid pairing inside strings/comments
};
};
};
extraPlugins = with pkgs.vimPlugins; [
];
# Additional Lua configuration
extraConfigLua = ''
-- Custom Lua config here
vim.opt.cpoptions:append('I')
'';
};
}