Changed Neovim to use Nixvim instead of Lazyvim.

Moved Neovim into its own directory
This commit is contained in:
2026-02-19 11:53:22 +01:00
parent 69aaea8526
commit 66ef4b89af
6 changed files with 192 additions and 101 deletions

View File

@ -0,0 +1,20 @@
{ inputs, config, lib, pkgs, ... }:
{
environment.systemPackages = with pkgs;
[
neovim
vimPlugins.LazyVim
vimPlugins.lazygit-nvim
wl-clipboard
xclip
];
home-manager.sharedModules = [
./home.nix
];
# programs.neovim = {
# enable = true;
#};
}

122
modules/neovim/home.nix Normal file
View File

@ -0,0 +1,122 @@
{ 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')
'';
};
}