feat: add kickstart nixcats
This commit is contained in:
119
kickstart/lua/nixCatsUtils/lazyCat.lua
Normal file
119
kickstart/lua/nixCatsUtils/lazyCat.lua
Normal file
@@ -0,0 +1,119 @@
|
||||
--[[
|
||||
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: If you don't use lazy.nvim, you don't need this file.
|
||||
|
||||
---lazy.nvim wrapper
|
||||
---@overload fun(nixLazyPath: string|nil, lazySpec: any, opts: table)
|
||||
---@overload fun(nixLazyPath: string|nil, opts: table)
|
||||
function M.setup(nixLazyPath, lazySpec, opts)
|
||||
local lazySpecs = nil
|
||||
local lazyCFG = nil
|
||||
if opts == nil and type(lazySpec) == "table" and lazySpec.spec then
|
||||
lazyCFG = lazySpec
|
||||
else
|
||||
lazySpecs = lazySpec
|
||||
lazyCFG = opts
|
||||
end
|
||||
|
||||
local function regularLazyDownload()
|
||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not vim.loop.fs_stat(lazypath) then
|
||||
vim.fn.system {
|
||||
'git',
|
||||
'clone',
|
||||
'--filter=blob:none',
|
||||
'https://github.com/folke/lazy.nvim.git',
|
||||
'--branch=stable', -- latest stable release
|
||||
lazypath,
|
||||
}
|
||||
end
|
||||
return lazypath
|
||||
end
|
||||
|
||||
local isNixCats = vim.g[ [[nixCats-special-rtp-entry-nixCats]] ] ~= nil
|
||||
local lazypath
|
||||
if not isNixCats then
|
||||
-- No nixCats? Not nix. Do it normally
|
||||
lazypath = regularLazyDownload()
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
else
|
||||
local nixCats = require('nixCats')
|
||||
-- Else, its nix, so we wrap lazy with a few extra config options
|
||||
lazypath = nixLazyPath
|
||||
-- and also we probably dont have to download lazy either
|
||||
if lazypath == nil then
|
||||
lazypath = regularLazyDownload()
|
||||
end
|
||||
|
||||
local oldPath
|
||||
local lazypatterns
|
||||
local fallback
|
||||
if type(lazyCFG) == "table" and type(lazyCFG.dev) == "table" then
|
||||
lazypatterns = lazyCFG.dev.patterns
|
||||
fallback = lazyCFG.dev.fallback
|
||||
oldPath = lazyCFG.dev.path
|
||||
end
|
||||
|
||||
local myNeovimPackages = nixCats.vimPackDir .. "/pack/myNeovimPackages"
|
||||
|
||||
local newLazyOpts = {
|
||||
performance = {
|
||||
rtp = {
|
||||
reset = false,
|
||||
},
|
||||
},
|
||||
dev = {
|
||||
path = function(plugin)
|
||||
local path = nil
|
||||
if type(oldPath) == "string" and vim.fn.isdirectory(oldPath .. "/" .. plugin.name) == 1 then
|
||||
path = oldPath .. "/" .. plugin.name
|
||||
elseif type(oldPath) == "function" then
|
||||
path = oldPath(plugin)
|
||||
if type(path) ~= "string" then
|
||||
path = nil
|
||||
end
|
||||
end
|
||||
if path == nil then
|
||||
if vim.fn.isdirectory(myNeovimPackages .. "/start/" .. plugin.name) == 1 then
|
||||
path = myNeovimPackages .. "/start/" .. plugin.name
|
||||
elseif vim.fn.isdirectory(myNeovimPackages .. "/opt/" .. plugin.name) == 1 then
|
||||
path = myNeovimPackages .. "/opt/" .. plugin.name
|
||||
else
|
||||
path = "~/projects/" .. plugin.name
|
||||
end
|
||||
end
|
||||
return path
|
||||
end,
|
||||
patterns = lazypatterns or { "" },
|
||||
fallback = fallback == nil and true or fallback,
|
||||
}
|
||||
}
|
||||
lazyCFG = vim.tbl_deep_extend("force", lazyCFG or {}, newLazyOpts)
|
||||
-- do the reset we disabled without removing important stuff
|
||||
local cfgdir = nixCats.configDir
|
||||
vim.opt.rtp = {
|
||||
cfgdir,
|
||||
nixCats.nixCatsPath,
|
||||
nixCats.pawsible.allPlugins.ts_grammar_path,
|
||||
vim.fn.stdpath("data") .. "/site",
|
||||
lazypath,
|
||||
vim.env.VIMRUNTIME,
|
||||
vim.fn.fnamemodify(vim.v.progpath, ":p:h:h") .. "/lib/nvim",
|
||||
cfgdir .. "/after",
|
||||
}
|
||||
end
|
||||
|
||||
if lazySpecs then
|
||||
require('lazy').setup(lazySpecs, lazyCFG)
|
||||
else
|
||||
require('lazy').setup(lazyCFG)
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
||||
Reference in New Issue
Block a user