2025-04-30 15:52:20 -04:00

165 lines
4.9 KiB
Nix

{ config, lib, inputs, ... }: let
utils = inputs.nixCats.utils;
in {
imports = [
inputs.nixCats.homeModule
];
config = {
home.sessionVariables = {
EDITOR = "nvim";
};
nixCats = {
enable = true;
packageNames = [ "nvim" ];
luaPath = ./.;
# for useage of this section, refer to :h nixCats.flake.outputs.categories
categoryDefinitions.replace = ({ pkgs, settings, categories, extra, name, mkPlugin, ... }@packageDef: {
# lspsAndRuntimeDeps:
# this section is for dependencies that should be available
# at RUN TIME for plugins. Will be available to PATH within neovim terminal
# this includes LSPs
lspsAndRuntimeDeps = {
general = with pkgs; [
lazygit
ripgrep
fzf
];
lua = with pkgs; [
lua-language-server
stylua
];
nix = with pkgs; [
nixd
alejandra
];
go = with pkgs; [
gopls
delve
golint
golangci-lint
gotools
go-tools
go
];
typescript = with pkgs; [
typescript-language-server
vscode-langservers-extracted
vue-language-server
stylelint-lsp
];
};
# This is for plugins that will load at startup without using packadd:
startupPlugins = {
general = with pkgs.vimPlugins; [
# lazy loading isnt required with a config this small
# but as a demo, we do it anyway.
lze
lzextras
snacks-nvim
gruvbox-nvim
gruber-darker-nvim
vim-sleuth
oil-nvim
plenary-nvim
];
};
# not loaded automatically at startup.
# use with packadd and an autocommand in config to achieve lazy loading
optionalPlugins = {
go = with pkgs.vimPlugins; [
nvim-dap-go
];
lua = with pkgs.vimPlugins; [
lazydev-nvim
];
general = with pkgs.vimPlugins; [
mini-nvim
nvim-lspconfig
blink-cmp
nvim-treesitter.withAllGrammars
gitsigns-nvim
harpoon2
which-key-nvim
nvim-lint
conform-nvim
nvim-dap
nvim-dap-ui
nvim-dap-virtual-text
];
};
# shared libraries to be added to LD_LIBRARY_PATH
# variable available to nvim runtime
sharedLibraries = {
general = with pkgs; [ ];
};
# environmentVariables:
# this section is for environmentVariables that should be available
# at RUN TIME for plugins. Will be available to path within neovim terminal
environmentVariables = {
# test = {
# CATTESTVAR = "It worked!";
# };
};
# categories of the function you would have passed to withPackages
python3.libraries = {
# test = [ (_:[]) ];
};
# If you know what these are, you can provide custom ones by category here.
# If you dont, check this link out:
# https://github.com/NixOS/nixpkgs/blob/master/pkgs/build-support/setup-hooks/make-wrapper.sh
extraWrapperArgs = {
# test = [
# '' --set CATTESTVAR2 "It worked again!"''
# ];
};
});
# see :help nixCats.flake.outputs.packageDefinitions
packageDefinitions.replace = {
# These are the names of your packages
# you can include as many as you wish.
nvim = {pkgs, name, ... }: {
# they contain a settings set defined above
# see :help nixCats.flake.outputs.settings
settings = {
suffix-path = true;
suffix-LD = true;
wrapRc = true;
# unwrappedCfgPath = "/path/to/here";
# IMPORTANT:
# your alias may not conflict with your other packages.
aliases = [ "vim" "homeVim" ];
# neovim-unwrapped = inputs.neovim-nightly-overlay.packages.${pkgs.system}.neovim;
hosts.python3.enable = true;
hosts.node.enable = true;
};
# and a set of categories that you want
# (and other information to pass to lua)
# and a set of categories that you want
categories = {
general = true;
lua = true;
nix = true;
go = true;
typescript = true;
};
# anything else to pass and grab in lua with `nixCats.extra`
extra = {
nixdExtras.nixpkgs = ''import ${pkgs.path} {}'';
vueExtras.location = "${lib.getBin pkgs.vue-language-server}/lib/node_modules/@vue/language-server";
};
};
};
};
};
}