193 lines
4.1 KiB
Nix
193 lines
4.1 KiB
Nix
{
|
|
inputs,
|
|
lib,
|
|
config,
|
|
...
|
|
}:
|
|
let
|
|
inherit (inputs.nixCats) utils;
|
|
luaPath = ./.;
|
|
|
|
themeConfig =
|
|
config.theme.neovim or {
|
|
plugin = null;
|
|
setup = "";
|
|
};
|
|
|
|
categoryDefinitions =
|
|
{ pkgs, ... }:
|
|
{
|
|
# to define and use a new category, simply add a new list to a set here,
|
|
# and later, you will include categoryname = true; in the set you
|
|
# provide when you build the package using this builder function.
|
|
# see :help nixCats.flake.outputs.packageDefinitions for info on that section.
|
|
|
|
# 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; [
|
|
universal-ctags
|
|
stdenv.cc.cc
|
|
ripgrep
|
|
fd
|
|
|
|
stylua
|
|
lua-language-server
|
|
|
|
nixd
|
|
nix-doc
|
|
nixfmt
|
|
|
|
dafny
|
|
|
|
typescript
|
|
typescript-language-server
|
|
|
|
rustc
|
|
rust-analyzer
|
|
rustfmt
|
|
|
|
markdownlint-cli2
|
|
|
|
basedpyright
|
|
black
|
|
isort
|
|
|
|
astro-language-server
|
|
|
|
tinymist
|
|
typstyle
|
|
|
|
ltex-ls-plus
|
|
|
|
harper
|
|
];
|
|
};
|
|
|
|
startupPlugins = {
|
|
general =
|
|
with pkgs.vimPlugins;
|
|
[
|
|
lz-n
|
|
plenary-nvim
|
|
]
|
|
++ (lib.optional (themeConfig.plugin != null) themeConfig.plugin);
|
|
};
|
|
|
|
optionalPlugins = {
|
|
general = with pkgs.vimPlugins; [
|
|
nvim-treesitter.withAllGrammars
|
|
nvim-treesitter-textobjects
|
|
nvim-treesitter-context
|
|
trouble-nvim
|
|
|
|
guess-indent-nvim
|
|
gitsigns-nvim
|
|
which-key-nvim
|
|
|
|
telescope-nvim
|
|
telescope-fzf-native-nvim
|
|
telescope-ui-select-nvim
|
|
|
|
conform-nvim
|
|
blink-cmp
|
|
luasnip
|
|
friendly-snippets
|
|
|
|
todo-comments-nvim
|
|
mini-nvim
|
|
|
|
nvim-lspconfig
|
|
lazydev-nvim
|
|
nvim-autopairs
|
|
indent-blankline-nvim
|
|
nvim-lint
|
|
|
|
render-markdown-nvim
|
|
|
|
colorful-menu-nvim
|
|
|
|
lualine-nvim
|
|
bufferline-nvim
|
|
|
|
zen-mode-nvim
|
|
];
|
|
|
|
};
|
|
|
|
sharedLibraries = {
|
|
general = with pkgs; [ ];
|
|
};
|
|
|
|
environmentVariables = { };
|
|
extraWrapperArgs = { };
|
|
python3.libraries = {
|
|
test = (_: [ ]);
|
|
};
|
|
extraLuaPackages = {
|
|
general = [ (_: [ ]) ];
|
|
};
|
|
extraCats = { };
|
|
};
|
|
|
|
packageDefinitions = {
|
|
nixCats =
|
|
{ pkgs, ... }:
|
|
{
|
|
settings = {
|
|
suffix-path = true;
|
|
suffix-LD = true;
|
|
aliases = [
|
|
"nvim"
|
|
"vim"
|
|
"vi"
|
|
];
|
|
wrapRc = true;
|
|
configDirName = "nixCats";
|
|
hosts.python3.enable = true;
|
|
hosts.node.enable = true;
|
|
};
|
|
|
|
categories = {
|
|
general = true;
|
|
};
|
|
|
|
extra = {
|
|
nixdExtras = {
|
|
nixpkgs = ''import ${pkgs.path} {}'';
|
|
nixos_options = ''(builtins.getFlake "path://${config.var.configDirectory}").nixosConfigurations.${toString config.var.hostname}.options'';
|
|
home_manager_options = ''(builtins.getFlake "path://${config.var.configDirectory}").nixosConfigurations.${toString config.var.hostname}.options.home-manager.users.type.getSubOptions []'';
|
|
};
|
|
|
|
themeSetup = themeConfig.setup;
|
|
|
|
# Pass only base00-base0F to neovim
|
|
stylixColors = lib.filterAttrs (
|
|
k: v: builtins.match "base0[0-9A-F]" k != null
|
|
) config.lib.stylix.colors.withHashtag;
|
|
};
|
|
};
|
|
|
|
};
|
|
|
|
defaultPackageName = "nixCats";
|
|
in
|
|
{
|
|
imports = [
|
|
(utils.mkHomeModules {
|
|
inherit
|
|
defaultPackageName
|
|
luaPath
|
|
categoryDefinitions
|
|
packageDefinitions
|
|
;
|
|
inherit (inputs) nixpkgs;
|
|
dependencyOverlays = [ (utils.standardPluginOverlay inputs) ];
|
|
})
|
|
];
|
|
|
|
nixCats.enable = true;
|
|
}
|