Files
lux-old/modules/nvf.nix
2026-02-28 14:18:57 +01:00

247 lines
6.9 KiB
Nix

{ inputs, ... }:
{
flake-file.inputs.nvf.url = "github:notashelf/nvf";
lux.nvf = {
homeManager =
{ pkgs, ... }:
{
imports = [ inputs.nvf.homeManagerModules.default ];
programs.nvf = {
enable = true;
settings.vim = {
# extraPlugins.kanagawa = {
# package = pkgs.vimPlugins.kanagawa-nvim;
# setup = ''vim.cmd("colorscheme kanagawa")'';
# };
augroups = [
{
clear = true;
name = "highlight-yank";
}
];
autocmds = [
{
desc = "Highlight when yanking text";
event = [ "TextYankPost" ];
group = "highlight-yank";
callback = inputs.nixpkgs.lib.generators.mkLuaInline /* lua */ ''
function()
vim.hl.on_yank()
end
'';
}
];
diagnostics = {
enable = true;
config = {
signs = true;
underline = true;
virtual_text = true;
};
};
options = {
cursorline = true;
cursorlineopt = "both";
splitright = true;
splitbelow = true;
scrolloff = 5;
number = true;
relativenumber = false;
signcolumn = "yes";
list = true;
listchars = "tab:» ,trail:·,nbsp:";
updatetime = 250;
timeoutlen = 300;
undofile = true;
confirm = true;
inccommand = "split";
ignorecase = true;
smartcase = true;
};
startPlugins = [ pkgs.vimPlugins.kanagawa-nvim ];
luaConfigRC.theme-config = inputs.nvf.lib.nvim.dag.entryBefore [ "pluginConfigs" ] /* lua */ ''
require('kanagawa').setup({
dimInactive = true,
})
vim.cmd("colorscheme kanagawa")
'';
extraPlugins.hmts = {
package = pkgs.vimPlugins.hmts-nvim;
};
languages = {
nix = {
enable = true;
format.enable = true;
treesitter.enable = true;
extraDiagnostics.enable = true;
lsp.enable = true;
lsp.servers = [ "nixd" ];
format.type = [ "nixfmt" ];
};
qml = {
enable = true;
format.enable = true;
lsp.enable = true;
treesitter.enable = true;
};
python = {
enable = true;
format.enable = true;
lsp.enable = true;
treesitter.enable = true;
};
};
formatter.conform-nvim.enable = true;
lsp = {
enable = true;
formatOnSave = true;
inlayHints.enable = true;
lspconfig.enable = true;
lspkind.enable = true;
trouble.enable = true;
servers.nixd.settings =
let
flake = ''(builtins.getFlake "/home/kiri/.config/nixos")'';
in
{
nixd = {
formatting.command = [ "nixfmt" ];
nixpkgs.expr = "import ${flake}.inputs.nixpkgs {}";
options = {
nixos.expr = "${flake}.nixosConfigurations.polaris.options";
home-manager.expr = "${flake}.nixosConfigurations.polaris.options.home-manager.users.type.getSubOptions []";
flake-parts.expr = "${flake}.debug.options";
};
};
};
};
projects.project-nvim = {
enable = true;
setupOpts = {
manual_mode = false;
};
};
utility.sleuth.enable = true;
telescope = {
enable = true;
setupOpts = {
defaults = {
color_devicons = true;
};
};
extensions = [
{
name = "fzf";
packages = [ pkgs.vimPlugins.telescope-fzf-native-nvim ];
setup = {
fzf = {
fuzzy = true;
};
};
}
];
};
mini = {
ai.enable = true;
surround.enable = true;
files.enable = true;
hipatterns = {
enable = true;
setupOpts = {
highlighters = {
fixme = {
pattern = "%f[%w]()FIXME()%f[%W]";
group = "MiniHipatternsFixme";
};
hack = {
pattern = "%f[%w]()HACK()%f[%W]";
group = "MiniHipatternsHack";
};
todo = {
pattern = "%f[%w]()TODO()%f[%W]";
group = "MiniHipatternsTodo";
};
note = {
pattern = "%f[%w]()NOTE()%f[%W]";
group = "MiniHipatternsNote";
};
hex_color =
inputs.nixpkgs.lib.mkLuaInline
/* lua */ "require('mini.hipatterns').gen_highlighter.hex_color()";
};
};
};
icons.enable = true;
indentscope.enable = true;
indentscope.setupOpts = {
symbol = "";
};
};
autopairs.nvim-autopairs.enable = true;
ui = {
colorful-menu-nvim.enable = true;
};
luaConfigRC.mini-icons-mock = inputs.nvf.lib.nvim.dag.entryAfter [ "pluginConfigs" ] /* lua */ ''
require('mini.icons').mock_nvim_web_devicons()
'';
statusline.lualine.enable = true;
binds.whichKey = {
enable = true;
};
autocomplete.blink-cmp = {
enable = true;
mappings = {
confirm = "<C-l>";
next = "<C-j>";
previous = "<C-k>";
};
setupOpts = {
cmdline.keymap.preset = "inherit";
cmdline.completion.menu.auto_show = true;
sources.default = [
"lsp"
"path"
"snippets"
];
signature.enabled = true;
};
};
};
};
};
};
}