2024-07-03 07:51:13 +02:00
|
|
|
local pick_chezmoi = function()
|
|
|
|
if LazyVim.pick.picker.name == "telescope" then
|
|
|
|
require("telescope").extensions.chezmoi.find_files()
|
|
|
|
elseif LazyVim.pick.picker.name == "fzf" then
|
|
|
|
local fzf_lua = require("fzf-lua")
|
2025-02-21 08:28:05 -05:00
|
|
|
local actions = {
|
|
|
|
["enter"] = function(selected)
|
|
|
|
fzf_lua.actions.vimcmd_entry("ChezmoiEdit", selected, { cwd = os.getenv("HOME") })
|
|
|
|
end,
|
2024-07-03 07:51:13 +02:00
|
|
|
}
|
2025-02-21 08:28:05 -05:00
|
|
|
fzf_lua.files({ cmd = "chezmoi managed --include=files,symlinks", actions = actions })
|
2025-01-18 14:52:25 +01:00
|
|
|
elseif LazyVim.pick.picker.name == "snacks" then
|
|
|
|
local results = require("chezmoi.commands").list({
|
|
|
|
args = {
|
|
|
|
"--path-style",
|
|
|
|
"absolute",
|
|
|
|
"--include",
|
|
|
|
"files",
|
|
|
|
"--exclude",
|
|
|
|
"externals",
|
|
|
|
},
|
|
|
|
})
|
|
|
|
local items = {}
|
|
|
|
|
|
|
|
for _, czFile in ipairs(results) do
|
|
|
|
table.insert(items, {
|
|
|
|
text = czFile,
|
|
|
|
file = czFile,
|
|
|
|
})
|
|
|
|
end
|
|
|
|
|
|
|
|
---@type snacks.picker.Config
|
|
|
|
local opts = {
|
|
|
|
items = items,
|
|
|
|
confirm = function(picker, item)
|
|
|
|
picker:close()
|
|
|
|
require("chezmoi.commands").edit({
|
|
|
|
targets = { item.text },
|
|
|
|
args = { "--watch" },
|
|
|
|
})
|
|
|
|
end,
|
|
|
|
}
|
|
|
|
Snacks.picker.pick(opts)
|
2024-07-03 07:51:13 +02:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2024-06-29 09:21:35 +01:00
|
|
|
return {
|
|
|
|
{
|
|
|
|
-- highlighting for chezmoi files template files
|
|
|
|
"alker0/chezmoi.vim",
|
|
|
|
init = function()
|
|
|
|
vim.g["chezmoi#use_tmp_buffer"] = 1
|
|
|
|
vim.g["chezmoi#source_dir_path"] = os.getenv("HOME") .. "/.local/share/chezmoi"
|
|
|
|
end,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"xvzc/chezmoi.nvim",
|
2025-02-21 08:28:05 -05:00
|
|
|
cmd = { "ChezmoiEdit" },
|
2024-06-29 09:21:35 +01:00
|
|
|
keys = {
|
|
|
|
{
|
|
|
|
"<leader>sz",
|
2024-07-03 07:51:13 +02:00
|
|
|
pick_chezmoi,
|
2024-06-29 09:21:35 +01:00
|
|
|
desc = "Chezmoi",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
opts = {
|
|
|
|
edit = {
|
|
|
|
watch = false,
|
|
|
|
force = false,
|
|
|
|
},
|
|
|
|
notification = {
|
|
|
|
on_open = true,
|
|
|
|
on_apply = true,
|
|
|
|
on_watch = false,
|
|
|
|
},
|
|
|
|
telescope = {
|
|
|
|
select = { "<CR>" },
|
|
|
|
},
|
|
|
|
},
|
|
|
|
init = function()
|
|
|
|
-- run chezmoi edit on file enter
|
|
|
|
vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, {
|
|
|
|
pattern = { os.getenv("HOME") .. "/.local/share/chezmoi/*" },
|
|
|
|
callback = function()
|
|
|
|
vim.schedule(require("chezmoi.commands.__edit").watch)
|
|
|
|
end,
|
|
|
|
})
|
|
|
|
end,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"nvimdev/dashboard-nvim",
|
|
|
|
optional = true,
|
|
|
|
opts = function(_, opts)
|
|
|
|
local projects = {
|
2024-07-03 07:51:13 +02:00
|
|
|
action = pick_chezmoi,
|
2024-06-29 09:21:35 +01:00
|
|
|
desc = " Config",
|
|
|
|
icon = "",
|
|
|
|
key = "c",
|
|
|
|
}
|
|
|
|
|
|
|
|
projects.desc = projects.desc .. string.rep(" ", 43 - #projects.desc)
|
|
|
|
projects.key_format = " %s"
|
|
|
|
|
|
|
|
-- remove lazyvim config property
|
|
|
|
for i = #opts.config.center, 1, -1 do
|
|
|
|
if opts.config.center[i].key == "c" then
|
|
|
|
table.remove(opts.config.center, i)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
table.insert(opts.config.center, 5, projects)
|
|
|
|
end,
|
|
|
|
},
|
2025-02-21 08:28:05 -05:00
|
|
|
{
|
|
|
|
"folke/snacks.nvim",
|
|
|
|
optional = true,
|
|
|
|
opts = function(_, opts)
|
|
|
|
local chezmoi_entry = {
|
|
|
|
icon = " ",
|
|
|
|
key = "c",
|
|
|
|
desc = "Config",
|
|
|
|
action = pick_chezmoi,
|
|
|
|
}
|
|
|
|
local config_index
|
|
|
|
for i = #opts.dashboard.preset.keys, 1, -1 do
|
|
|
|
if opts.dashboard.preset.keys[i].key == "c" then
|
|
|
|
table.remove(opts.dashboard.preset.keys, i)
|
|
|
|
config_index = i
|
|
|
|
break
|
|
|
|
end
|
|
|
|
end
|
|
|
|
table.insert(opts.dashboard.preset.keys, config_index, chezmoi_entry)
|
|
|
|
end,
|
|
|
|
},
|
2024-07-07 13:28:51 -04:00
|
|
|
|
|
|
|
-- Filetype icons
|
|
|
|
{
|
|
|
|
"echasnovski/mini.icons",
|
|
|
|
opts = {
|
|
|
|
file = {
|
|
|
|
[".chezmoiignore"] = { glyph = "", hl = "MiniIconsGrey" },
|
|
|
|
[".chezmoiremove"] = { glyph = "", hl = "MiniIconsGrey" },
|
|
|
|
[".chezmoiroot"] = { glyph = "", hl = "MiniIconsGrey" },
|
|
|
|
[".chezmoiversion"] = { glyph = "", hl = "MiniIconsGrey" },
|
|
|
|
["bash.tmpl"] = { glyph = "", hl = "MiniIconsGrey" },
|
|
|
|
["json.tmpl"] = { glyph = "", hl = "MiniIconsGrey" },
|
|
|
|
["ps1.tmpl"] = { glyph = "", hl = "MiniIconsGrey" },
|
|
|
|
["sh.tmpl"] = { glyph = "", hl = "MiniIconsGrey" },
|
|
|
|
["toml.tmpl"] = { glyph = "", hl = "MiniIconsGrey" },
|
|
|
|
["yaml.tmpl"] = { glyph = "", hl = "MiniIconsGrey" },
|
|
|
|
["zsh.tmpl"] = { glyph = "", hl = "MiniIconsGrey" },
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
2024-06-29 09:21:35 +01:00
|
|
|
}
|