{ config, lib, inputs, pkgs, ... }: let utils = inputs.nixcats.utils; in { imports = [ inputs.nixcats.homeModule ]; config = { # this value, nixCats is the defaultPackageName you pass to mkNixosModules # it will be the namespace for your options. nixCats = { enable = true; nixpkgs_version = inputs.nixpkgs; # this will add the overlays from ./overlays and also, # add any plugins in inputs named "plugins-pluginName" to pkgs.neovimPlugins # It will not apply to overall system, just nixCats. addOverlays = # (import ./overlays inputs) ++ [ (utils.standardPluginOverlay inputs) ]; # see the packageDefinitions below. # This says which of those to install. packageNames = [ "deavim" ]; luaPath = "${./.}"; # the .replace vs .merge options are for modules based on existing configurations, # they refer to how multiple categoryDefinitions get merged together by the module. # for useage of this section, refer to :h nixCats.flake.outputs.categories categoryDefinitions.replace = ( { pkgs, settings, categories, extra, name, mkNvimPlugin, ... }@packageDef: { lspsAndRuntimeDeps = { general = with pkgs; [ ripgrep fd ]; treesitter = with pkgs; [ tree-sitter ]; lang = with pkgs; { lua = [ lua-language-server stylua ]; nix = [ nil nix-doc nixfmt ]; rust = with pkgs; [ cargo rust-analyzer rustfmt ]; haskell = with pkgs; [ haskell-language-server ormolu ]; }; }; startupPlugins = { general = with pkgs.vimPlugins; [ lze plenary-nvim nvim-notify nvim-web-devicons base16-nvim mini-nvim calendar-vim (pkgs.vimUtils.buildVimPlugin { pname = "candyland-nvim"; version = "1.0"; src = pkgs.fetchFromGitHub { owner = "AmberLehmann"; repo = "candyland.nvim"; rev = "neovim-colorscheme"; hash = "sha256-KEHMnpyJOhdF8ZPWuKF3uP7UX5fnzE31LMe+XxHK+i8="; }; }) ]; treesitter = with pkgs.vimPlugins; [ nvim-treesitter-textobjects nvim-treesitter.withAllGrammars ]; }; optionalPlugins = with pkgs.vimPlugins; { general = [ orgmode ]; ui = [ dressing-nvim ]; qol = [ undotree mini-hipatterns ]; telescope = [ telescope-nvim telescope-fzf-native-nvim telescope-ui-select-nvim ]; fyler = [ fyler-nvim ]; lsp = [ nvim-lspconfig ]; completion = [ blink-cmp nvim-cmp luasnip friendly-snippets cmp_luasnip cmp-buffer cmp-path cmp-nvim-lua cmp-nvim-lsp cmp-cmdline cmp-nvim-lsp-signature-help cmp-cmdline-history lspkind-nvim ]; format = [ conform-nvim ]; comment = [ comment-nvim ]; lang = { }; }; # shared libraries to be added to LD_LIBRARY_PATH # variable available to nvim runtime sharedLibraries = { general = with pkgs; [ # libgit2 ]; }; environmentVariables = { lang = { rust = { # it literally won't see the rust-analyzer provided to it # if you don't use an envrionment variable to tell it RUST_ANALYZER_CMD = "${pkgs.rust-analyzer}/bin/rust-analyzer"; }; }; }; } ); # see :help nixCats.flake.outputs.packageDefinitions packageDefinitions.replace = { # these are the names of your packages # you can include as many as you wish. deavim = { pkgs, ... }: { # they contain a settings set defined above # see :help nixCats.flake.outputs.settings settings = { wrapRc = true; # IMPORTANT: # your alias may not conflict with your other packages. aliases = [ "dvim" ]; }; # and a set of categories that you want # (and other information to pass to lua) categories = { general = true; ui = true; qol = true; telescope = true; fyler = true; lsp = true; completion = true; format = true; comment = true; treesitter = true; lang = { lua = true; nix = true; rust = true; haskell = true; }; }; }; }; }; }; }