inputs: let inherit (inputs.nixcats) utils; in { pkgs, settings, categories, extra, name, mkPlugin, ... }@packageDef: { lspsAndRuntimeDeps = with pkgs; { general = [ fd ripgrep lsof # lldb ]; markdown = [ marksman harper ]; typst = [ tinymist ]; nix = [ nixd nil nixfmt ]; java = [ jdt-language-server google-java-format ]; lua = [ lua-language-server stylua ]; python = [ ruff zuban ]; zig = [ zls ]; toml = [ tombi ]; javascript = [ eslint prettierd typescript-language-server ]; }; startupPlugins = with pkgs.vimPlugins; { theme = [ pkgs.neovimPlugins.base46-nvim ]; ui = [ nvim-web-devicons ]; general = [ pkgs.neovimPlugins.lze pkgs.neovimPlugins.lzextras nvim-lspconfig ]; rust = [ rustaceanvim ]; extras = [ plenary-nvim ]; }; optionalPlugins = with pkgs.vimPlugins; { core = { general = [ oil-nvim guess-indent-nvim undotree nvim-surround conform-nvim nvim-lint lazydev-nvim trouble-nvim ]; picker = [ telescope-nvim telescope-fzf-native-nvim telescope-ui-select-nvim ]; git = [ pkgs.neovimPlugins.neogit gitsigns-nvim ]; completion = [ blink-cmp blink-ripgrep-nvim friendly-snippets ]; }; ui = [ hlchunk-nvim lualine-nvim ]; tsitter = [ nvim-treesitter.withAllGrammars nvim-treesitter-textobjects # (nvim-treesitter.withPlugins ( # plugins: # with plugins; [ # nix # lua # rust # cpp # c # go # yaml # python # javascript # typescript # toml # json # ] # )) ]; debug = [ nvim-dap nvim-dap-ui nvim-dap-virtual-text nvim-dap-go ]; misc = [ obsidian-nvim typst-preview-nvim ]; ai = [ pkgs.neovimPlugins.opencode-nvim ]; }; sharedLibraries = { general = with pkgs; [ # libgit2 ]; }; environmentVariables = { }; extraWrapperArgs = { }; extraLuaPackages = { test = [ (_: [ ]) ]; }; }