{ config, lib, inputs, upkgs, ... }: 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 = [ "auroranvim" ]; 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 ]; nix = [ nil nix-doc ]; rust = with pkgs; [ cargo rust-analyzer ]; zig = with pkgs; [ upkgs.zls # FIX: using upkgs version as zls is broken rn ;-; ]; elixir = with pkgs; [ elixir-ls ]; gleam = with pkgs; [ gleam ]; java = with pkgs; [ jdt-language-server javaPackages.compiler.openjdk17 javaPackages.compiler.openjdk21 ]; }; }; startupPlugins = { general = with pkgs.vimPlugins; [ lze plenary-nvim nvim-notify nvim-web-devicons base16-nvim mini-nvim ]; treesitter = with pkgs.vimPlugins; [ nvim-treesitter-textobjects nvim-treesitter.withAllGrammars ]; }; optionalPlugins = { general = with pkgs.vimPlugins; [ ]; ui = with pkgs.vimPlugins; [ dressing-nvim ]; qol = with pkgs.vimPlugins; [ undotree mini-hipatterns ]; telescope = with pkgs.vimPlugins; [ telescope-nvim telescope-fzf-native-nvim telescope-ui-select-nvim ]; fyler = with pkgs.vimPlugins; [ fyler-nvim ]; lsp = with pkgs.vimPlugins; [ nvim-lspconfig ]; completion = with pkgs.vimPlugins; [ 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 ]; lang = with pkgs.vimPlugins; { java = [ nvim-jdtls ]; }; discord = with pkgs.vimPlugins; [ neocord # discord presence plugin :3 ]; }; # 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"; }; elixir = { ELIXIR_LS_CMD = "${pkgs.elixir-ls}/scripts/language_server.sh"; }; java = { JAVA_HOME = "${pkgs.javaPackages.compiler.openjdk17}"; OPENJDK_17 = "${pkgs.javaPackages.compiler.openjdk17}"; OPENJDK_21 = "${pkgs.javaPackages.compiler.openjdk21}"; }; }; }; extraWrapperArgs = { test = [ '' --set CATTESTVAR2 "It worked again!"'' ]; }; # lists of the functions you would have passed to # python.withPackages or lua.withPackages # get the path to this python environment # in your lua config via # vim.g.python3_host_prog # or run from nvim terminal via :!-python3 extraPython3Packages = { test = (_:[]); }; # populates $LUA_PATH and $LUA_CPATH extraLuaPackages = { test = [ (_:[]) ]; }; }); # see :help nixCats.flake.outputs.packageDefinitions packageDefinitions.replace = { # these are the names of your packages # you can include as many as you wish. auroranvim = {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 = [ "auroravim" "auravim" "foxyvim" "avix" "fvix" "auim" ]; }; # 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; treesitter = true; discord = false; lang = { lua = true; nix = true; rust = true; zig = true; elixir = true; gleam = true; java = true; }; }; }; }; }; }; }