Compare commits
	
		
			9 Commits 
		
	
	
		
			b25fc9a2b8
			...
			318524004b
		
	
	| Author | SHA1 | Date | 
|---|---|---|
| 
							
							
								
									
								
								 | 
						318524004b | |
| 
							
							
								
									
								
								 | 
						799348ff91 | |
| 
							
							
								
									
								
								 | 
						52bf665774 | |
| 
							
							
								
									
								
								 | 
						4f011cf8ef | |
| 
							
							
								
									
								
								 | 
						1b57185b72 | |
| 
							
							
								
									
								
								 | 
						a3437b04e8 | |
| 
							
							
								
									
								
								 | 
						59e4821b4c | |
| 
							
							
								
									
								
								 | 
						9a4c8df398 | |
| 
							
							
								
									
								
								 | 
						7c36539033 | 
| 
						 | 
				
			
			@ -0,0 +1,6 @@
 | 
			
		|||
# Neovim configuration
 | 
			
		||||
 | 
			
		||||
My neovim configuration. Available as a Nix flake [^nixcats]. When installing manually,
 | 
			
		||||
`paq.nvim` is used as a fallback plugin manager.
 | 
			
		||||
 | 
			
		||||
[^nixcats] Based on [this nixCats `example` template](https://github.com/BirdeeHub/nixCats-nvim/tree/77dffad8235eb77684fcb7599487c8e9f23d5b8f/templates/example)
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,162 @@
 | 
			
		|||
{
 | 
			
		||||
  "nodes": {
 | 
			
		||||
    "nixCats": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1759730664,
 | 
			
		||||
        "narHash": "sha256-boRlBQ/c4CaHsK/z04QL6+t81mcar37Io94HBX2GflY=",
 | 
			
		||||
        "owner": "BirdeeHub",
 | 
			
		||||
        "repo": "nixCats-nvim",
 | 
			
		||||
        "rev": "77dffad8235eb77684fcb7599487c8e9f23d5b8f",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "BirdeeHub",
 | 
			
		||||
        "repo": "nixCats-nvim",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "nixpkgs": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1760256791,
 | 
			
		||||
        "narHash": "sha256-uTpzDHRASEDeFUuToWSQ46Re8beXyG9dx4W36FQa0/c=",
 | 
			
		||||
        "owner": "nixos",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "rev": "832e3b6db48508ae436c2c7bfc0cf914eac6938e",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "nixos",
 | 
			
		||||
        "ref": "nixpkgs-unstable",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "plugins-beancount-nvim": {
 | 
			
		||||
      "flake": false,
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1707748314,
 | 
			
		||||
        "narHash": "sha256-LuACGVB3kiaiJqoGtvFy6kbPNtqoGliKLDeR+Z7Wzbw=",
 | 
			
		||||
        "owner": "polarmutex",
 | 
			
		||||
        "repo": "beancount.nvim",
 | 
			
		||||
        "rev": "869564aba3087ee5df8f282aa37555e314aa2152",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "polarmutex",
 | 
			
		||||
        "repo": "beancount.nvim",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "plugins-crazy-node-movement": {
 | 
			
		||||
      "flake": false,
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1693654676,
 | 
			
		||||
        "narHash": "sha256-hQcQEp39zFN2zphMfcr97yRVcuHhBsSkzKO7XNloDpQ=",
 | 
			
		||||
        "owner": "theHamsta",
 | 
			
		||||
        "repo": "crazy-node-movement",
 | 
			
		||||
        "rev": "d5cf01cc44c5715501d3d6fe439af7c8b7fa5df2",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "theHamsta",
 | 
			
		||||
        "repo": "crazy-node-movement",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "plugins-helm-ls-nvim": {
 | 
			
		||||
      "flake": false,
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1757598429,
 | 
			
		||||
        "narHash": "sha256-nzuJxAAaEmuVYg9k0B8OKslxsihhg6RKlhz6E7xJTQU=",
 | 
			
		||||
        "owner": "qvalentin",
 | 
			
		||||
        "repo": "helm-ls.nvim",
 | 
			
		||||
        "rev": "f36ecbd3e7b0b2ac8358a9d6a3213888e29943db",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "qvalentin",
 | 
			
		||||
        "repo": "helm-ls.nvim",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "plugins-mcphub-nvim": {
 | 
			
		||||
      "flake": false,
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1759035242,
 | 
			
		||||
        "narHash": "sha256-I6EbgY/2sAdtrxtmH0qbAAQvMCHhOsfolJfblV0fXOk=",
 | 
			
		||||
        "owner": "ravitemer",
 | 
			
		||||
        "repo": "mcphub.nvim",
 | 
			
		||||
        "rev": "8ff40b5edc649959bb7e89d25ae18e055554859a",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "ravitemer",
 | 
			
		||||
        "repo": "mcphub.nvim",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "plugins-nvimkit-nvim": {
 | 
			
		||||
      "flake": false,
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1721393835,
 | 
			
		||||
        "narHash": "sha256-MdmrhLHMxrn6upu1chjKyitPZ5WkCQtpI465AKJXDOA=",
 | 
			
		||||
        "owner": "jamesblckwell",
 | 
			
		||||
        "repo": "nvimkit.nvim",
 | 
			
		||||
        "rev": "af363d22699760f66988e8d36539a5753039217a",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "jamesblckwell",
 | 
			
		||||
        "repo": "nvimkit.nvim",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "plugins-shipwright-nvim": {
 | 
			
		||||
      "flake": false,
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1711725275,
 | 
			
		||||
        "narHash": "sha256-xh/2m//Cno5gPucjOYih79wVZj3X1Di/U3/IQhKXjc0=",
 | 
			
		||||
        "owner": "rktjmp",
 | 
			
		||||
        "repo": "shipwright.nvim",
 | 
			
		||||
        "rev": "e596ab48328c31873f4f4d2e070243bf9de16ff3",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "rktjmp",
 | 
			
		||||
        "repo": "shipwright.nvim",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "plugins-tailwind-fold-nvim": {
 | 
			
		||||
      "flake": false,
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1752559116,
 | 
			
		||||
        "narHash": "sha256-8uefZIVsn9USEd6FyiO3m3TRKAS/vigU4t9Tk5ijd3c=",
 | 
			
		||||
        "owner": "razak17",
 | 
			
		||||
        "repo": "tailwind-fold.nvim",
 | 
			
		||||
        "rev": "d9e7ca11691d252b35795726dff087bf013b2ebf",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "razak17",
 | 
			
		||||
        "repo": "tailwind-fold.nvim",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "root": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "nixCats": "nixCats",
 | 
			
		||||
        "nixpkgs": "nixpkgs",
 | 
			
		||||
        "plugins-beancount-nvim": "plugins-beancount-nvim",
 | 
			
		||||
        "plugins-crazy-node-movement": "plugins-crazy-node-movement",
 | 
			
		||||
        "plugins-helm-ls-nvim": "plugins-helm-ls-nvim",
 | 
			
		||||
        "plugins-mcphub-nvim": "plugins-mcphub-nvim",
 | 
			
		||||
        "plugins-nvimkit-nvim": "plugins-nvimkit-nvim",
 | 
			
		||||
        "plugins-shipwright-nvim": "plugins-shipwright-nvim",
 | 
			
		||||
        "plugins-tailwind-fold-nvim": "plugins-tailwind-fold-nvim"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "root": "root",
 | 
			
		||||
  "version": 7
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,212 @@
 | 
			
		|||
{
 | 
			
		||||
  inputs = {
 | 
			
		||||
    nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
 | 
			
		||||
    nixCats.url = "github:BirdeeHub/nixCats-nvim";
 | 
			
		||||
 | 
			
		||||
    plugins-shipwright-nvim = {
 | 
			
		||||
      url = "github:rktjmp/shipwright.nvim";
 | 
			
		||||
      flake = false;
 | 
			
		||||
    };
 | 
			
		||||
    plugins-crazy-node-movement = {
 | 
			
		||||
      url = "github:theHamsta/crazy-node-movement";
 | 
			
		||||
      flake = false;
 | 
			
		||||
    };
 | 
			
		||||
    plugins-beancount-nvim = {
 | 
			
		||||
      url = "github:polarmutex/beancount.nvim";
 | 
			
		||||
      flake = false;
 | 
			
		||||
    };
 | 
			
		||||
    plugins-tailwind-fold-nvim = {
 | 
			
		||||
      url = "github:razak17/tailwind-fold.nvim";
 | 
			
		||||
      flake = false;
 | 
			
		||||
    };
 | 
			
		||||
    plugins-nvimkit-nvim = {
 | 
			
		||||
      url = "github:jamesblckwell/nvimkit.nvim";
 | 
			
		||||
      flake = false;
 | 
			
		||||
    };
 | 
			
		||||
    plugins-mcphub-nvim = {
 | 
			
		||||
      url = "github:ravitemer/mcphub.nvim";
 | 
			
		||||
      flake = false;
 | 
			
		||||
    };
 | 
			
		||||
    plugins-helm-ls-nvim = {
 | 
			
		||||
      url = "github:qvalentin/helm-ls.nvim";
 | 
			
		||||
      flake = false;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  outputs =
 | 
			
		||||
    {
 | 
			
		||||
      self,
 | 
			
		||||
      nixpkgs,
 | 
			
		||||
      nixCats,
 | 
			
		||||
      ...
 | 
			
		||||
    }@inputs:
 | 
			
		||||
    let
 | 
			
		||||
      inherit (nixCats) utils;
 | 
			
		||||
      luaPath = ./.;
 | 
			
		||||
      forEachSystem = utils.eachSystem nixpkgs.lib.platforms.all;
 | 
			
		||||
      extra_pkg_config = { };
 | 
			
		||||
 | 
			
		||||
      dependencyOverlays = [
 | 
			
		||||
        (utils.standardPluginOverlay inputs)
 | 
			
		||||
      ];
 | 
			
		||||
 | 
			
		||||
      categoryDefinitions =
 | 
			
		||||
        {
 | 
			
		||||
          pkgs,
 | 
			
		||||
          ...
 | 
			
		||||
        }:
 | 
			
		||||
        {
 | 
			
		||||
          lspsAndRuntimeDeps = with pkgs; {
 | 
			
		||||
            general = [
 | 
			
		||||
              tree-sitter
 | 
			
		||||
            ];
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          startupPlugins = {
 | 
			
		||||
            general = with pkgs.vimPlugins; [
 | 
			
		||||
              eyeliner-nvim
 | 
			
		||||
              fzf-lua
 | 
			
		||||
              ltex_extra-nvim
 | 
			
		||||
              nvim-lspconfig
 | 
			
		||||
              lsp_lines-nvim
 | 
			
		||||
              lsp-progress-nvim
 | 
			
		||||
              neodev-nvim
 | 
			
		||||
              SchemaStore-nvim
 | 
			
		||||
              nvim-lint
 | 
			
		||||
              conform-nvim
 | 
			
		||||
              luasnip
 | 
			
		||||
              cmp_luasnip
 | 
			
		||||
              nvim-cmp
 | 
			
		||||
              cmp-nvim-lsp
 | 
			
		||||
              cmp-buffer
 | 
			
		||||
              cmp-path
 | 
			
		||||
              plenary-nvim
 | 
			
		||||
              nui-nvim
 | 
			
		||||
              trouble-nvim
 | 
			
		||||
              pkgs.neovimPlugins.shipwright-nvim
 | 
			
		||||
              lush-nvim
 | 
			
		||||
              zenbones-nvim
 | 
			
		||||
              pkgs.neovimPlugins.crazy-node-movement
 | 
			
		||||
              nvim-treesitter.withAllGrammars
 | 
			
		||||
              nvim-treesitter-textobjects
 | 
			
		||||
              # nvim-treesitter-context
 | 
			
		||||
              nvim-ts-context-commentstring
 | 
			
		||||
              treesj
 | 
			
		||||
              sniprun
 | 
			
		||||
              gitsigns-nvim
 | 
			
		||||
              nvim-highlight-colors
 | 
			
		||||
              pkgs.neovimPlugins.tailwind-fold-nvim
 | 
			
		||||
              auto-session
 | 
			
		||||
              nvim-dbee
 | 
			
		||||
              image-nvim
 | 
			
		||||
              pkgs.neovimPlugins.beancount-nvim
 | 
			
		||||
              pkgs.neovimPlugins.nvimkit-nvim
 | 
			
		||||
              codecompanion-nvim
 | 
			
		||||
              pkgs.neovimPlugins.mcphub-nvim
 | 
			
		||||
              copilot-lua
 | 
			
		||||
              copilot-cmp
 | 
			
		||||
              pkgs.neovimPlugins.helm-ls-nvim
 | 
			
		||||
            ];
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          optionalPlugins = {
 | 
			
		||||
            general = with pkgs.vimPlugins; [
 | 
			
		||||
            ];
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          sharedLibraries = {
 | 
			
		||||
            general = [ ];
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          environmentVariables = { };
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
      packageDefinitions = {
 | 
			
		||||
        nvim =
 | 
			
		||||
          { ... }:
 | 
			
		||||
          {
 | 
			
		||||
            settings = {
 | 
			
		||||
              suffix-path = true;
 | 
			
		||||
              suffix-LD = true;
 | 
			
		||||
              wrapRc = true;
 | 
			
		||||
              aliases = [ "vim" ];
 | 
			
		||||
            };
 | 
			
		||||
            categories = {
 | 
			
		||||
              general = true;
 | 
			
		||||
            };
 | 
			
		||||
          };
 | 
			
		||||
      };
 | 
			
		||||
      defaultPackageName = "nvim";
 | 
			
		||||
    in
 | 
			
		||||
 | 
			
		||||
    forEachSystem (
 | 
			
		||||
      system:
 | 
			
		||||
      let
 | 
			
		||||
        nixCatsBuilder = utils.baseBuilder luaPath {
 | 
			
		||||
          inherit
 | 
			
		||||
            nixpkgs
 | 
			
		||||
            system
 | 
			
		||||
            dependencyOverlays
 | 
			
		||||
            extra_pkg_config
 | 
			
		||||
            ;
 | 
			
		||||
        } categoryDefinitions packageDefinitions;
 | 
			
		||||
        defaultPackage = nixCatsBuilder defaultPackageName;
 | 
			
		||||
        pkgs = import nixpkgs { inherit system; };
 | 
			
		||||
      in
 | 
			
		||||
      {
 | 
			
		||||
        packages = utils.mkAllWithDefault defaultPackage;
 | 
			
		||||
 | 
			
		||||
        devShells = {
 | 
			
		||||
          default = pkgs.mkShell {
 | 
			
		||||
            name = defaultPackageName;
 | 
			
		||||
            packages = [ defaultPackage ];
 | 
			
		||||
            inputsFrom = [ ];
 | 
			
		||||
            shellHook = '''';
 | 
			
		||||
          };
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
      }
 | 
			
		||||
    )
 | 
			
		||||
    // (
 | 
			
		||||
      let
 | 
			
		||||
        nixosModule = utils.mkNixosModules {
 | 
			
		||||
          moduleNamespace = [ defaultPackageName ];
 | 
			
		||||
          inherit
 | 
			
		||||
            defaultPackageName
 | 
			
		||||
            dependencyOverlays
 | 
			
		||||
            luaPath
 | 
			
		||||
            categoryDefinitions
 | 
			
		||||
            packageDefinitions
 | 
			
		||||
            extra_pkg_config
 | 
			
		||||
            nixpkgs
 | 
			
		||||
            ;
 | 
			
		||||
        };
 | 
			
		||||
        homeModule = utils.mkHomeModules {
 | 
			
		||||
          moduleNamespace = [ defaultPackageName ];
 | 
			
		||||
          inherit
 | 
			
		||||
            defaultPackageName
 | 
			
		||||
            dependencyOverlays
 | 
			
		||||
            luaPath
 | 
			
		||||
            categoryDefinitions
 | 
			
		||||
            packageDefinitions
 | 
			
		||||
            extra_pkg_config
 | 
			
		||||
            nixpkgs
 | 
			
		||||
            ;
 | 
			
		||||
        };
 | 
			
		||||
      in
 | 
			
		||||
      {
 | 
			
		||||
 | 
			
		||||
        overlays = utils.makeOverlays luaPath {
 | 
			
		||||
          inherit nixpkgs dependencyOverlays extra_pkg_config;
 | 
			
		||||
        } categoryDefinitions packageDefinitions defaultPackageName;
 | 
			
		||||
 | 
			
		||||
        nixosModules.default = nixosModule;
 | 
			
		||||
        homeModules.default = homeModule;
 | 
			
		||||
 | 
			
		||||
        inherit utils nixosModule homeModule;
 | 
			
		||||
        inherit (utils) templates;
 | 
			
		||||
      }
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,9 +1,12 @@
 | 
			
		|||
require("nixCatsUtils").setup({ non_nix_value = true }) -- https://github.com/BirdeeHub/nixCats-nvim/blob/77dffad8235eb77684fcb7599487c8e9f23d5b8f/templates/example/init.lua
 | 
			
		||||
 | 
			
		||||
require("vim")
 | 
			
		||||
require("ftdetect")
 | 
			
		||||
require("keymaps")
 | 
			
		||||
require("highlight")
 | 
			
		||||
require("paq-setup")
 | 
			
		||||
require("diagnostic")
 | 
			
		||||
 | 
			
		||||
require("paq-setup") -- when not on nixCats
 | 
			
		||||
 | 
			
		||||
-- vim.opt.background = "dark"
 | 
			
		||||
-- vim.opt.laststatus = 3
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,53 @@
 | 
			
		|||
-- Source: https://github.com/BirdeeHub/nixCats-nvim/blob/main/templates/example/lua/nixCatsUtils/catPacker.lua
 | 
			
		||||
--[[
 | 
			
		||||
  This directory is the luaUtils template.
 | 
			
		||||
  You can choose what things from it that you would like to use.
 | 
			
		||||
  And then delete the rest.
 | 
			
		||||
  Everything in this directory is optional.
 | 
			
		||||
--]]
 | 
			
		||||
 | 
			
		||||
local M = {}
 | 
			
		||||
-- NOTE: This function is for defining a paq.nvim fallback method of downloading plugins
 | 
			
		||||
-- when nixCats was not used to install your config.
 | 
			
		||||
-- If you only ever load your config using nixCats, you don't need this file.
 | 
			
		||||
 | 
			
		||||
-- it literally just only runs it when not on nixCats
 | 
			
		||||
-- all neovim package managers that use the regular plugin loading scheme
 | 
			
		||||
-- can be used this way, just do whatever the plugin manager needs to put it in the
 | 
			
		||||
-- opt directory for lazy loading, and add the build steps so that when theres no nix the steps are ran
 | 
			
		||||
function M.setup(v)
 | 
			
		||||
  if not vim.g[ [[nixCats-special-rtp-entry-nixCats]] ] then
 | 
			
		||||
    local function clone_paq()
 | 
			
		||||
      local path = vim.fn.stdpath("data") .. "/site/pack/paqs/start/paq-nvim"
 | 
			
		||||
      local is_installed = vim.fn.empty(vim.fn.glob(path)) == 0
 | 
			
		||||
      if not is_installed then
 | 
			
		||||
        vim.fn.system({ "git", "clone", "--depth=1", "https://github.com/savq/paq-nvim.git", path })
 | 
			
		||||
        return true
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
    local function bootstrap_paq(packages)
 | 
			
		||||
      local first_install = clone_paq()
 | 
			
		||||
      vim.cmd.packadd("paq-nvim")
 | 
			
		||||
      local paq = require("paq")
 | 
			
		||||
      if first_install then
 | 
			
		||||
        vim.notify("Installing plugins... If prompted, hit Enter to continue.")
 | 
			
		||||
      end
 | 
			
		||||
      paq(packages)
 | 
			
		||||
      paq.install()
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    vim.api.nvim_create_autocmd("VimEnter", {
 | 
			
		||||
      once = true,
 | 
			
		||||
      callback = function()
 | 
			
		||||
        local pkgs_count = #require("paq").query("to_install")
 | 
			
		||||
        if pkgs_count < 1 then
 | 
			
		||||
          return
 | 
			
		||||
        end
 | 
			
		||||
        vim.notify(string.format("There are %d to install", pkgs_count))
 | 
			
		||||
      end,
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    bootstrap_paq(vim.list_extend({ "savq/paq-nvim" }, v))
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
return M
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,136 @@
 | 
			
		|||
-- Source: https://github.com/BirdeeHub/nixCats-nvim/blob/main/templates/example/lua/nixCatsUtils/init.lua
 | 
			
		||||
--[[
 | 
			
		||||
  This directory is the luaUtils template.
 | 
			
		||||
  You can choose what things from it that you would like to use.
 | 
			
		||||
  And then delete the rest.
 | 
			
		||||
  Everything in this directory is optional.
 | 
			
		||||
--]]
 | 
			
		||||
 | 
			
		||||
local M = {}
 | 
			
		||||
 | 
			
		||||
--[[
 | 
			
		||||
  This file is for making your config still work WITHOUT nixCats.
 | 
			
		||||
  When you don't use nixCats to load your config,
 | 
			
		||||
  you wont have the nixCats plugin.
 | 
			
		||||
 | 
			
		||||
  The setup function defined here defines a mock nixCats plugin when nixCats wasnt used to load the config.
 | 
			
		||||
  This will help avoid indexing errors when the nixCats plugin doesnt exist.
 | 
			
		||||
 | 
			
		||||
  NOTE: If you only ever use nixCats to load your config, you don't need this file.
 | 
			
		||||
--]]
 | 
			
		||||
 | 
			
		||||
---@type boolean
 | 
			
		||||
M.isNixCats = vim.g[ [[nixCats-special-rtp-entry-nixCats]] ] ~= nil
 | 
			
		||||
 | 
			
		||||
---@class nixCatsSetupOpts
 | 
			
		||||
---@field non_nix_value boolean|nil
 | 
			
		||||
 | 
			
		||||
---This function will setup a mock nixCats plugin when not using nix
 | 
			
		||||
---It will help prevent you from running into indexing errors without a nixCats plugin from nix.
 | 
			
		||||
---If you loaded the config via nix, it does nothing
 | 
			
		||||
---non_nix_value defaults to true if not provided or is not a boolean.
 | 
			
		||||
---@param v nixCatsSetupOpts
 | 
			
		||||
function M.setup(v)
 | 
			
		||||
  if not M.isNixCats then
 | 
			
		||||
    local nixCats_default_value
 | 
			
		||||
    if type(v) == "table" and type(v.non_nix_value) == "boolean" then
 | 
			
		||||
      nixCats_default_value = v.non_nix_value
 | 
			
		||||
    else
 | 
			
		||||
      nixCats_default_value = true
 | 
			
		||||
    end
 | 
			
		||||
    local mk_with_meta = function(tbl)
 | 
			
		||||
      return setmetatable(tbl, {
 | 
			
		||||
        __call = function(_, attrpath)
 | 
			
		||||
          local strtable = {}
 | 
			
		||||
          if type(attrpath) == "table" then
 | 
			
		||||
            strtable = attrpath
 | 
			
		||||
          elseif type(attrpath) == "string" then
 | 
			
		||||
            for key in attrpath:gmatch("([^%.]+)") do
 | 
			
		||||
              table.insert(strtable, key)
 | 
			
		||||
            end
 | 
			
		||||
          else
 | 
			
		||||
            print("function requires a table of strings or a dot separated string")
 | 
			
		||||
            return
 | 
			
		||||
          end
 | 
			
		||||
          return vim.tbl_get(tbl, unpack(strtable))
 | 
			
		||||
        end,
 | 
			
		||||
      })
 | 
			
		||||
    end
 | 
			
		||||
    package.preload["nixCats"] = function()
 | 
			
		||||
      local ncsub = {
 | 
			
		||||
        get = function(_)
 | 
			
		||||
          return nixCats_default_value
 | 
			
		||||
        end,
 | 
			
		||||
        cats = mk_with_meta({
 | 
			
		||||
          nixCats_config_location = vim.fn.stdpath("config"),
 | 
			
		||||
          wrapRc = false,
 | 
			
		||||
        }),
 | 
			
		||||
        settings = mk_with_meta({
 | 
			
		||||
          nixCats_config_location = vim.fn.stdpath("config"),
 | 
			
		||||
          configDirName = os.getenv("NVIM_APPNAME") or "nvim",
 | 
			
		||||
          wrapRc = false,
 | 
			
		||||
        }),
 | 
			
		||||
        petShop = mk_with_meta({}),
 | 
			
		||||
        extra = mk_with_meta({}),
 | 
			
		||||
        pawsible = mk_with_meta({
 | 
			
		||||
          allPlugins = {
 | 
			
		||||
            start = {},
 | 
			
		||||
            opt = {},
 | 
			
		||||
          },
 | 
			
		||||
        }),
 | 
			
		||||
        configDir = vim.fn.stdpath("config"),
 | 
			
		||||
        packageBinPath = os.getenv("NVIM_WRAPPER_PATH_NIX") or vim.v.progpath,
 | 
			
		||||
      }
 | 
			
		||||
      return setmetatable(ncsub, {
 | 
			
		||||
        __call = function(_, cat)
 | 
			
		||||
          return ncsub.get(cat)
 | 
			
		||||
        end,
 | 
			
		||||
      })
 | 
			
		||||
    end
 | 
			
		||||
    _G.nixCats = require("nixCats")
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
---allows you to guarantee a boolean is returned, and also declare a different
 | 
			
		||||
---default value than specified in setup when not using nix to load the config
 | 
			
		||||
---@overload fun(v: string|string[]): boolean
 | 
			
		||||
---@overload fun(v: string|string[], default: boolean): boolean
 | 
			
		||||
function M.enableForCategory(v, default)
 | 
			
		||||
  if M.isNixCats or default == nil then
 | 
			
		||||
    if nixCats(v) then
 | 
			
		||||
      return true
 | 
			
		||||
    else
 | 
			
		||||
      return false
 | 
			
		||||
    end
 | 
			
		||||
  else
 | 
			
		||||
    return default
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
---if nix, return value of nixCats(v) else return default
 | 
			
		||||
---Exists to specify a different non_nix_value than the one in setup()
 | 
			
		||||
---@param v string|string[]
 | 
			
		||||
---@param default any
 | 
			
		||||
---@return any
 | 
			
		||||
function M.getCatOrDefault(v, default)
 | 
			
		||||
  if M.isNixCats then
 | 
			
		||||
    return nixCats(v)
 | 
			
		||||
  else
 | 
			
		||||
    return default
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
---for conditionally disabling build steps on nix, as they are done via nix
 | 
			
		||||
---I should probably have named it dontAddIfCats or something.
 | 
			
		||||
---@overload fun(v: any): any|nil
 | 
			
		||||
---Will return the second value if nix, otherwise the first
 | 
			
		||||
---@overload fun(v: any, o: any): any
 | 
			
		||||
function M.lazyAdd(v, o)
 | 
			
		||||
  if M.isNixCats then
 | 
			
		||||
    return o
 | 
			
		||||
  else
 | 
			
		||||
    return v
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
return M
 | 
			
		||||
| 
						 | 
				
			
			@ -1,38 +1,4 @@
 | 
			
		|||
-- Automate paq installation {{{
 | 
			
		||||
local function clone_paq()
 | 
			
		||||
  local path = vim.fn.stdpath("data") .. "/site/pack/paqs/start/paq-nvim"
 | 
			
		||||
  local is_installed = vim.fn.empty(vim.fn.glob(path)) == 0
 | 
			
		||||
  if not is_installed then
 | 
			
		||||
    vim.fn.system({ "git", "clone", "--depth=1", "https://github.com/savq/paq-nvim.git", path })
 | 
			
		||||
    return true
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
local function bootstrap_paq(packages)
 | 
			
		||||
  local first_install = clone_paq()
 | 
			
		||||
  vim.cmd.packadd("paq-nvim")
 | 
			
		||||
  local paq = require("paq")
 | 
			
		||||
  if first_install then
 | 
			
		||||
    vim.notify("Installing plugins... If prompted, hit Enter to continue.")
 | 
			
		||||
  end
 | 
			
		||||
  paq(packages)
 | 
			
		||||
  paq.install()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
vim.api.nvim_create_autocmd("VimEnter", {
 | 
			
		||||
  once = true,
 | 
			
		||||
  callback = function()
 | 
			
		||||
    local pkgs_count = #require("paq").query("to_install")
 | 
			
		||||
    if pkgs_count < 1 then
 | 
			
		||||
      return
 | 
			
		||||
    end
 | 
			
		||||
    vim.notify(string.format("There are %d to install", pkgs_count))
 | 
			
		||||
  end,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
-- }}}
 | 
			
		||||
 | 
			
		||||
-- Set up paq plugins {{{
 | 
			
		||||
bootstrap_paq({
 | 
			
		||||
require("nixCatsUtils.catPacker").setup({
 | 
			
		||||
  { "savq/paq-nvim" },
 | 
			
		||||
  { "jinh0/eyeliner.nvim" },
 | 
			
		||||
  { "ibhagwan/fzf-lua" },
 | 
			
		||||
| 
						 | 
				
			
			@ -77,4 +43,3 @@ bootstrap_paq({
 | 
			
		|||
  { "zbirenbaum/copilot-cmp" },
 | 
			
		||||
  { "qvalentin/helm-ls.nvim", ft = "helm" },
 | 
			
		||||
})
 | 
			
		||||
-- }}}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										160
									
								
								flake.lock
								
								
								
								
							
							
						
						
									
										160
									
								
								flake.lock
								
								
								
								
							| 
						 | 
				
			
			@ -42,13 +42,28 @@
 | 
			
		|||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "nixCats": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1759730664,
 | 
			
		||||
        "narHash": "sha256-boRlBQ/c4CaHsK/z04QL6+t81mcar37Io94HBX2GflY=",
 | 
			
		||||
        "owner": "BirdeeHub",
 | 
			
		||||
        "repo": "nixCats-nvim",
 | 
			
		||||
        "rev": "77dffad8235eb77684fcb7599487c8e9f23d5b8f",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "BirdeeHub",
 | 
			
		||||
        "repo": "nixCats-nvim",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "nixpkgs": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1759580034,
 | 
			
		||||
        "narHash": "sha256-YWo57PL7mGZU7D4WeKFMiW4ex/O6ZolUS6UNBHTZfkI=",
 | 
			
		||||
        "lastModified": 1760423683,
 | 
			
		||||
        "narHash": "sha256-Tb+NYuJhWZieDZUxN6PgglB16yuqBYQeMJyYBGCXlt8=",
 | 
			
		||||
        "owner": "nixos",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "rev": "3bcc93c5f7a4b30335d31f21e2f1281cba68c318",
 | 
			
		||||
        "rev": "a493e93b4a259cd9fea8073f89a7ed9b1c5a1da2",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
| 
						 | 
				
			
			@ -58,11 +73,148 @@
 | 
			
		|||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "nvim": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "nixCats": "nixCats",
 | 
			
		||||
        "nixpkgs": [
 | 
			
		||||
          "nixpkgs"
 | 
			
		||||
        ],
 | 
			
		||||
        "plugins-beancount-nvim": "plugins-beancount-nvim",
 | 
			
		||||
        "plugins-crazy-node-movement": "plugins-crazy-node-movement",
 | 
			
		||||
        "plugins-helm-ls-nvim": "plugins-helm-ls-nvim",
 | 
			
		||||
        "plugins-mcphub-nvim": "plugins-mcphub-nvim",
 | 
			
		||||
        "plugins-nvimkit-nvim": "plugins-nvimkit-nvim",
 | 
			
		||||
        "plugins-shipwright-nvim": "plugins-shipwright-nvim",
 | 
			
		||||
        "plugins-tailwind-fold-nvim": "plugins-tailwind-fold-nvim"
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "path": "./dots/.config/nvim",
 | 
			
		||||
        "type": "path"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "path": "./dots/.config/nvim",
 | 
			
		||||
        "type": "path"
 | 
			
		||||
      },
 | 
			
		||||
      "parent": []
 | 
			
		||||
    },
 | 
			
		||||
    "plugins-beancount-nvim": {
 | 
			
		||||
      "flake": false,
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1707748314,
 | 
			
		||||
        "narHash": "sha256-LuACGVB3kiaiJqoGtvFy6kbPNtqoGliKLDeR+Z7Wzbw=",
 | 
			
		||||
        "owner": "polarmutex",
 | 
			
		||||
        "repo": "beancount.nvim",
 | 
			
		||||
        "rev": "869564aba3087ee5df8f282aa37555e314aa2152",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "polarmutex",
 | 
			
		||||
        "repo": "beancount.nvim",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "plugins-crazy-node-movement": {
 | 
			
		||||
      "flake": false,
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1693654676,
 | 
			
		||||
        "narHash": "sha256-hQcQEp39zFN2zphMfcr97yRVcuHhBsSkzKO7XNloDpQ=",
 | 
			
		||||
        "owner": "theHamsta",
 | 
			
		||||
        "repo": "crazy-node-movement",
 | 
			
		||||
        "rev": "d5cf01cc44c5715501d3d6fe439af7c8b7fa5df2",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "theHamsta",
 | 
			
		||||
        "repo": "crazy-node-movement",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "plugins-helm-ls-nvim": {
 | 
			
		||||
      "flake": false,
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1757598429,
 | 
			
		||||
        "narHash": "sha256-nzuJxAAaEmuVYg9k0B8OKslxsihhg6RKlhz6E7xJTQU=",
 | 
			
		||||
        "owner": "qvalentin",
 | 
			
		||||
        "repo": "helm-ls.nvim",
 | 
			
		||||
        "rev": "f36ecbd3e7b0b2ac8358a9d6a3213888e29943db",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "qvalentin",
 | 
			
		||||
        "repo": "helm-ls.nvim",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "plugins-mcphub-nvim": {
 | 
			
		||||
      "flake": false,
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1759035242,
 | 
			
		||||
        "narHash": "sha256-I6EbgY/2sAdtrxtmH0qbAAQvMCHhOsfolJfblV0fXOk=",
 | 
			
		||||
        "owner": "ravitemer",
 | 
			
		||||
        "repo": "mcphub.nvim",
 | 
			
		||||
        "rev": "8ff40b5edc649959bb7e89d25ae18e055554859a",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "ravitemer",
 | 
			
		||||
        "repo": "mcphub.nvim",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "plugins-nvimkit-nvim": {
 | 
			
		||||
      "flake": false,
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1721393835,
 | 
			
		||||
        "narHash": "sha256-MdmrhLHMxrn6upu1chjKyitPZ5WkCQtpI465AKJXDOA=",
 | 
			
		||||
        "owner": "jamesblckwell",
 | 
			
		||||
        "repo": "nvimkit.nvim",
 | 
			
		||||
        "rev": "af363d22699760f66988e8d36539a5753039217a",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "jamesblckwell",
 | 
			
		||||
        "repo": "nvimkit.nvim",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "plugins-shipwright-nvim": {
 | 
			
		||||
      "flake": false,
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1711725275,
 | 
			
		||||
        "narHash": "sha256-xh/2m//Cno5gPucjOYih79wVZj3X1Di/U3/IQhKXjc0=",
 | 
			
		||||
        "owner": "rktjmp",
 | 
			
		||||
        "repo": "shipwright.nvim",
 | 
			
		||||
        "rev": "e596ab48328c31873f4f4d2e070243bf9de16ff3",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "rktjmp",
 | 
			
		||||
        "repo": "shipwright.nvim",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "plugins-tailwind-fold-nvim": {
 | 
			
		||||
      "flake": false,
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1752559116,
 | 
			
		||||
        "narHash": "sha256-8uefZIVsn9USEd6FyiO3m3TRKAS/vigU4t9Tk5ijd3c=",
 | 
			
		||||
        "owner": "razak17",
 | 
			
		||||
        "repo": "tailwind-fold.nvim",
 | 
			
		||||
        "rev": "d9e7ca11691d252b35795726dff087bf013b2ebf",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "razak17",
 | 
			
		||||
        "repo": "tailwind-fold.nvim",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "root": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "disko": "disko",
 | 
			
		||||
        "home-manager": "home-manager",
 | 
			
		||||
        "nixpkgs": "nixpkgs"
 | 
			
		||||
        "nixpkgs": "nixpkgs",
 | 
			
		||||
        "nvim": "nvim"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,6 +11,10 @@
 | 
			
		|||
      url = "github:nix-community/home-manager/release-25.05";
 | 
			
		||||
      inputs.nixpkgs.follows = "nixpkgs";
 | 
			
		||||
    };
 | 
			
		||||
    nvim = {
 | 
			
		||||
      url = "path:./dots/.config/nvim";
 | 
			
		||||
      inputs.nixpkgs.follows = "nixpkgs";
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  outputs =
 | 
			
		||||
| 
						 | 
				
			
			@ -19,6 +23,7 @@
 | 
			
		|||
      nixpkgs,
 | 
			
		||||
      disko,
 | 
			
		||||
      home-manager,
 | 
			
		||||
      nvim,
 | 
			
		||||
    }:
 | 
			
		||||
    {
 | 
			
		||||
      nixosConfigurations = {
 | 
			
		||||
| 
						 | 
				
			
			@ -28,6 +33,7 @@
 | 
			
		|||
            disko.nixosModules.disko
 | 
			
		||||
            home-manager.nixosModules.home-manager
 | 
			
		||||
            ./hosts/vm/configuration.nix
 | 
			
		||||
            { environment.systemPackages = [ nvim.packages.x86_64-linux.nvim ]; }
 | 
			
		||||
          ];
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -45,7 +45,7 @@
 | 
			
		|||
    keepassxc
 | 
			
		||||
    kitty
 | 
			
		||||
    lua-language-server
 | 
			
		||||
    neovim
 | 
			
		||||
    # neovim
 | 
			
		||||
    nmap
 | 
			
		||||
    nodejs_24
 | 
			
		||||
    nodePackages.ts-node
 | 
			
		||||
| 
						 | 
				
			
			@ -82,5 +82,10 @@
 | 
			
		|||
    ".inputrc".source = ../../dots/.inputrc;
 | 
			
		||||
    ".bashrc.d/prompt".source = ../../dots/.bashrc.d/prompt;
 | 
			
		||||
    ".bashrc.d/editor".source = ../../dots/.bashrc.d/editor;
 | 
			
		||||
    ".config/kitty/kitty.conf".source = ../../dots/.config/kitty/kitty.conf;
 | 
			
		||||
    ".config/kitty/themes/zenwritten_light.conf".source =
 | 
			
		||||
      ../../dots/.config/kitty/themes/zenwritten_light.conf;
 | 
			
		||||
    ".config/kitty/themes/zenwritten_dark.conf".source =
 | 
			
		||||
      ../../dots/.config/kitty/themes/zenwritten_dark.conf;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue