119 lines
3.5 KiB
Lua
119 lines
3.5 KiB
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: 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
|