refactor: complete overhaul
Complete overhaul of repo structure based on nvix. See https://github.com/niksingh710/nvix Signed-off-by: Lander Van den Bulcke <landervandenbulcke@gmail.com>
This commit is contained in:
parent
ff2c59724a
commit
61feed4086
75 changed files with 2916 additions and 2314 deletions
|
|
@ -1,75 +0,0 @@
|
||||||
{
|
|
||||||
autoGroups = {
|
|
||||||
highlight_yank = { };
|
|
||||||
vim_enter = { };
|
|
||||||
indentscope = { };
|
|
||||||
restore_cursor = { };
|
|
||||||
};
|
|
||||||
|
|
||||||
autoCmd = [
|
|
||||||
{
|
|
||||||
group = "highlight_yank";
|
|
||||||
event = [ "TextYankPost" ];
|
|
||||||
pattern = "*";
|
|
||||||
callback = {
|
|
||||||
__raw = ''
|
|
||||||
function()
|
|
||||||
vim.highlight.on_yank()
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
group = "vim_enter";
|
|
||||||
event = [ "VimEnter" ];
|
|
||||||
pattern = "*";
|
|
||||||
callback = {
|
|
||||||
__raw = ''
|
|
||||||
function()
|
|
||||||
vim.cmd('Startup')
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
group = "indentscope";
|
|
||||||
event = [ "FileType" ];
|
|
||||||
pattern = [
|
|
||||||
"help"
|
|
||||||
"Startup"
|
|
||||||
"startup"
|
|
||||||
"neo-tree"
|
|
||||||
"Trouble"
|
|
||||||
"trouble"
|
|
||||||
"notify"
|
|
||||||
];
|
|
||||||
callback = {
|
|
||||||
__raw = ''
|
|
||||||
function()
|
|
||||||
vim.b.miniindentscope_disable = true
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
## from NVChad https://nvchad.com/docs/recipes (this autocmd will restore the cursor position when opening a file)
|
|
||||||
{
|
|
||||||
group = "restore_cursor";
|
|
||||||
event = [ "BufReadPost" ];
|
|
||||||
pattern = "*";
|
|
||||||
callback = {
|
|
||||||
__raw = ''
|
|
||||||
function()
|
|
||||||
if
|
|
||||||
vim.fn.line "'\"" > 1
|
|
||||||
and vim.fn.line "'\"" <= vim.fn.line "$"
|
|
||||||
and vim.bo.filetype ~= "commit"
|
|
||||||
and vim.fn.index({ "xxd", "gitrebase" }, vim.bo.filetype) == -1
|
|
||||||
then
|
|
||||||
vim.cmd "normal! g`\""
|
|
||||||
end
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,54 +0,0 @@
|
||||||
_: {
|
|
||||||
imports = [
|
|
||||||
# General Configuration
|
|
||||||
./settings.nix
|
|
||||||
./keymaps.nix
|
|
||||||
./auto_cmds.nix
|
|
||||||
./file_types.nix
|
|
||||||
|
|
||||||
# Themes
|
|
||||||
./plugins/themes
|
|
||||||
|
|
||||||
# Completion
|
|
||||||
./plugins/cmp/cmp.nix
|
|
||||||
./plugins/cmp/autopairs.nix
|
|
||||||
./plugins/cmp/schemastore.nix
|
|
||||||
|
|
||||||
# Snippets
|
|
||||||
./plugins/snippets/luasnip.nix
|
|
||||||
|
|
||||||
# Editor plugins and configurations
|
|
||||||
./plugins/editor/csvview.nix
|
|
||||||
./plugins/editor/neo-tree.nix
|
|
||||||
./plugins/editor/treesitter.nix
|
|
||||||
./plugins/editor/undotree.nix
|
|
||||||
./plugins/editor/illuminate.nix
|
|
||||||
./plugins/editor/indent-blankline.nix
|
|
||||||
./plugins/editor/todo-comments.nix
|
|
||||||
./plugins/editor/navic.nix
|
|
||||||
|
|
||||||
# UI plugins
|
|
||||||
./plugins/ui/bufferline.nix
|
|
||||||
./plugins/ui/lualine.nix
|
|
||||||
./plugins/ui/startup.nix
|
|
||||||
|
|
||||||
# LSP and formatting
|
|
||||||
./plugins/lsp/lsp.nix
|
|
||||||
./plugins/lsp/conform.nix
|
|
||||||
./plugins/lsp/fidget.nix
|
|
||||||
|
|
||||||
# Git
|
|
||||||
./plugins/git/lazygit.nix
|
|
||||||
./plugins/git/gitsigns.nix
|
|
||||||
|
|
||||||
# Utils
|
|
||||||
./plugins/utils/telescope.nix
|
|
||||||
./plugins/utils/whichkey.nix
|
|
||||||
./plugins/utils/extra_plugins.nix
|
|
||||||
./plugins/utils/mini.nix
|
|
||||||
./plugins/utils/markdown-preview.nix
|
|
||||||
./plugins/utils/obsidian.nix
|
|
||||||
./plugins/utils/toggleterm.nix
|
|
||||||
./plugins/utils/web-devicons.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,36 +0,0 @@
|
||||||
{
|
|
||||||
autoGroups = {
|
|
||||||
filetypes = { };
|
|
||||||
};
|
|
||||||
|
|
||||||
files."ftdetect/terraformft.lua".autoCmd = [
|
|
||||||
{
|
|
||||||
group = "filetypes";
|
|
||||||
event = [
|
|
||||||
"BufRead"
|
|
||||||
"BufNewFile"
|
|
||||||
];
|
|
||||||
pattern = [
|
|
||||||
"*.tf"
|
|
||||||
" *.tfvars"
|
|
||||||
" *.hcl"
|
|
||||||
];
|
|
||||||
command = "set ft=terraform";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
files."ftdetect/bicepft.lua".autoCmd = [
|
|
||||||
{
|
|
||||||
group = "filetypes";
|
|
||||||
event = [
|
|
||||||
"BufRead"
|
|
||||||
"BufNewFile"
|
|
||||||
];
|
|
||||||
pattern = [
|
|
||||||
"*.bicep"
|
|
||||||
"*.bicepparam"
|
|
||||||
];
|
|
||||||
command = "set ft=bicep";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,501 +0,0 @@
|
||||||
{
|
|
||||||
globals.mapleader = " ";
|
|
||||||
|
|
||||||
keymaps = [
|
|
||||||
{
|
|
||||||
mode = [
|
|
||||||
"n"
|
|
||||||
"x"
|
|
||||||
];
|
|
||||||
key = "j";
|
|
||||||
action = "v:count == 0 ? 'gj' : 'j'";
|
|
||||||
options = {
|
|
||||||
expr = true;
|
|
||||||
silent = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = [
|
|
||||||
"n"
|
|
||||||
"x"
|
|
||||||
];
|
|
||||||
key = "<Down>";
|
|
||||||
action = "v:count == 0 ? 'gj' : 'j'";
|
|
||||||
options = {
|
|
||||||
expr = true;
|
|
||||||
silent = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = [
|
|
||||||
"n"
|
|
||||||
"x"
|
|
||||||
];
|
|
||||||
key = "k";
|
|
||||||
action = "v:count == 0 ? 'gk' : 'k'";
|
|
||||||
options = {
|
|
||||||
expr = true;
|
|
||||||
silent = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = [
|
|
||||||
"n"
|
|
||||||
"x"
|
|
||||||
];
|
|
||||||
key = "<Up>";
|
|
||||||
action = "v:count == 0 ? 'gk' : 'k'";
|
|
||||||
options = {
|
|
||||||
expr = true;
|
|
||||||
silent = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<C-h>";
|
|
||||||
action = "<C-w>h";
|
|
||||||
options = {
|
|
||||||
desc = "Go to Left Window";
|
|
||||||
remap = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<C-j>";
|
|
||||||
action = "<C-w>j";
|
|
||||||
options = {
|
|
||||||
desc = "Go to Lower Window";
|
|
||||||
remap = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<C-k>";
|
|
||||||
action = "<C-w>k";
|
|
||||||
options = {
|
|
||||||
desc = "Go to Upper Window";
|
|
||||||
remap = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<C-l>";
|
|
||||||
action = "<C-w>l";
|
|
||||||
options = {
|
|
||||||
desc = "Go to Right Window";
|
|
||||||
remap = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<C-Up>";
|
|
||||||
action = "<cmd>resize +2<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Increase Window Height";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<C-Down>";
|
|
||||||
action = "<cmd>resize -2<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Decrease Window Height";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<C-Left>";
|
|
||||||
action = "<cmd>vertical resize -2<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Decrease Window Width";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<C-Right>";
|
|
||||||
action = "<cmd>vertical resize +2<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Increase Window Width";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<A-j>";
|
|
||||||
action = "<cmd>m .+1<cr>==";
|
|
||||||
options = {
|
|
||||||
desc = "Move Down";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<A-k>";
|
|
||||||
action = "<cmd>m .-2<cr>==";
|
|
||||||
options = {
|
|
||||||
desc = "Move Up";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "i";
|
|
||||||
key = "<A-j>";
|
|
||||||
action = "<esc><cmd>m .+1<cr>==gi";
|
|
||||||
options = {
|
|
||||||
desc = "Move Down";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "i";
|
|
||||||
key = "<A-k>";
|
|
||||||
action = "<esc><cmd>m .-2<cr>==gi";
|
|
||||||
options = {
|
|
||||||
desc = "Move Up";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "v";
|
|
||||||
key = "<A-j>";
|
|
||||||
action = ":m '>+1<cr>gv=gv";
|
|
||||||
options = {
|
|
||||||
desc = "Move Down";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "v";
|
|
||||||
key = "<A-k>";
|
|
||||||
action = ":m '<-2<cr>gv=gv";
|
|
||||||
options = {
|
|
||||||
desc = "Move Up";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "i";
|
|
||||||
key = ";";
|
|
||||||
action = ";<c-g>u";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "i";
|
|
||||||
key = ".";
|
|
||||||
action = ".<c-g>u";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "i";
|
|
||||||
key = ";";
|
|
||||||
action = ";<c-g>u";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = [
|
|
||||||
"i"
|
|
||||||
"x"
|
|
||||||
"n"
|
|
||||||
"s"
|
|
||||||
];
|
|
||||||
key = "<C-s>";
|
|
||||||
action = "<cmd>w<cr><esc>";
|
|
||||||
options = {
|
|
||||||
desc = "Save File";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = [
|
|
||||||
"i"
|
|
||||||
"n"
|
|
||||||
];
|
|
||||||
key = "<esc>";
|
|
||||||
action = "<cmd>noh<cr><esc>";
|
|
||||||
options = {
|
|
||||||
desc = "Escape and Clear hlsearch";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader>ur";
|
|
||||||
action = "<Cmd>nohlsearch<Bar>diffupdate<Bar>normal! <C-L><CR>";
|
|
||||||
options = {
|
|
||||||
desc = "Redraw / Clear hlsearch / Diff Update";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "n";
|
|
||||||
action = "'Nn'[v:searchforward].'zv'";
|
|
||||||
options = {
|
|
||||||
expr = true;
|
|
||||||
desc = "Next Search Result";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "x";
|
|
||||||
key = "n";
|
|
||||||
action = "'Nn'[v:searchforward]";
|
|
||||||
options = {
|
|
||||||
expr = true;
|
|
||||||
desc = "Next Search Result";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "o";
|
|
||||||
key = "n";
|
|
||||||
action = "'Nn'[v:searchforward]";
|
|
||||||
options = {
|
|
||||||
expr = true;
|
|
||||||
desc = "Next Search Result";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "N";
|
|
||||||
action = "'nN'[v:searchforward].'zv'";
|
|
||||||
options = {
|
|
||||||
expr = true;
|
|
||||||
desc = "Prev Search Result";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "x";
|
|
||||||
key = "N";
|
|
||||||
action = "'nN'[v:searchforward]";
|
|
||||||
options = {
|
|
||||||
expr = true;
|
|
||||||
desc = "Prev Search Result";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "o";
|
|
||||||
key = "N";
|
|
||||||
action = "'nN'[v:searchforward]";
|
|
||||||
options = {
|
|
||||||
expr = true;
|
|
||||||
desc = "Prev Search Result";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader>cd";
|
|
||||||
action = "vim.diagnostic.open_float";
|
|
||||||
options = {
|
|
||||||
desc = "Line Diagnostics";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "]d";
|
|
||||||
action = "diagnostic_goto(true)";
|
|
||||||
options = {
|
|
||||||
desc = "Next Diagnostic";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "[d";
|
|
||||||
action = "diagnostic_goto(false)";
|
|
||||||
options = {
|
|
||||||
desc = "Prev Diagnostic";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "]e";
|
|
||||||
action = "diagnostic_goto(true 'ERROR')";
|
|
||||||
options = {
|
|
||||||
desc = "Next Error";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "[e";
|
|
||||||
action = "diagnostic_goto(false 'ERROR')";
|
|
||||||
options = {
|
|
||||||
desc = "Prev Error";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "]w";
|
|
||||||
action = "diagnostic_goto(true 'WARN')";
|
|
||||||
options = {
|
|
||||||
desc = "Next Warning";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "[w";
|
|
||||||
action = "diagnostic_goto(false 'WARN')";
|
|
||||||
options = {
|
|
||||||
desc = "Prev Warning";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader>qq";
|
|
||||||
action = "<cmd>qa<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Quit All";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader>ui";
|
|
||||||
action = "vim.show_pos";
|
|
||||||
options = {
|
|
||||||
desc = "Inspect Pos";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "t";
|
|
||||||
key = "<esc><esc>";
|
|
||||||
action = "<c-\\><c-n>";
|
|
||||||
options = {
|
|
||||||
desc = "Enter Normal Mode";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "t";
|
|
||||||
key = "<C-h>";
|
|
||||||
action = "<cmd>wincmd h<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Go to Left Window";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "t";
|
|
||||||
key = "<C-j>";
|
|
||||||
action = "<cmd>wincmd j<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Go to Lower Window";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "t";
|
|
||||||
key = "<C-k>";
|
|
||||||
action = "<cmd>wincmd k<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Go to Upper Window";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "t";
|
|
||||||
key = "<C-l>";
|
|
||||||
action = "<cmd>wincmd l<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Go to Right Window";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "t";
|
|
||||||
key = "<C-/>";
|
|
||||||
action = "<cmd>close<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Hide Terminal";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader>ww";
|
|
||||||
action = "<C-W>p";
|
|
||||||
options = {
|
|
||||||
desc = "Other Window";
|
|
||||||
remap = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader>wd";
|
|
||||||
action = "<C-W>c";
|
|
||||||
options = {
|
|
||||||
desc = "Delete Window";
|
|
||||||
remap = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader>w-";
|
|
||||||
action = "<C-W>s";
|
|
||||||
options = {
|
|
||||||
desc = "Split Window Below";
|
|
||||||
remap = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader>w|";
|
|
||||||
action = "<C-W>v";
|
|
||||||
options = {
|
|
||||||
desc = "Split Window Right";
|
|
||||||
remap = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader>-";
|
|
||||||
action = "<C-W>s";
|
|
||||||
options = {
|
|
||||||
desc = "Split Window Below";
|
|
||||||
remap = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader>|";
|
|
||||||
action = "<C-W>v";
|
|
||||||
options = {
|
|
||||||
desc = "Split Window Right";
|
|
||||||
remap = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader><tab>l";
|
|
||||||
action = "<cmd>tablast<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Last Tab";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader><tab>f";
|
|
||||||
action = "<cmd>tabfirst<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "First Tab";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader><tab><tab>";
|
|
||||||
action = "<cmd>tabnew<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "New Tab";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader><tab>]";
|
|
||||||
action = "<cmd>tabnext<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Next Tab";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader><tab>d";
|
|
||||||
action = "<cmd>tabclose<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Close Tab";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader><tab>[";
|
|
||||||
action = "<cmd>tabprevious<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Previous Tab";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader>ca";
|
|
||||||
action = ":Lspsaga code_action<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Code Action";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
{
|
|
||||||
plugins.nvim-autopairs = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
disable_filetype = [
|
|
||||||
"TelescopePrompt"
|
|
||||||
"vim"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
plugins = {
|
|
||||||
blink-cmp = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
signature = {
|
|
||||||
enabled = true;
|
|
||||||
trigger = {
|
|
||||||
enabled = true;
|
|
||||||
show_on_keyword = true;
|
|
||||||
show_on_insert = true;
|
|
||||||
};
|
|
||||||
window = {
|
|
||||||
show_documentation = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
{
|
|
||||||
plugins.schemastore = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
json = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
yaml = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
{
|
|
||||||
plugins = {
|
|
||||||
indent-blankline = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,40 +0,0 @@
|
||||||
_: {
|
|
||||||
plugins.navic = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
separator = " ";
|
|
||||||
highlight = true;
|
|
||||||
depthLimit = 5;
|
|
||||||
lsp = {
|
|
||||||
autoAttach = true;
|
|
||||||
};
|
|
||||||
icons = {
|
|
||||||
Array = " ";
|
|
||||||
Boolean = " ";
|
|
||||||
Class = " ";
|
|
||||||
Constant = " ";
|
|
||||||
Constructor = " ";
|
|
||||||
Enum = " ";
|
|
||||||
EnumMember = " ";
|
|
||||||
Event = " ";
|
|
||||||
Field = " ";
|
|
||||||
File = " ";
|
|
||||||
Function = " ";
|
|
||||||
Interface = " ";
|
|
||||||
Key = " ";
|
|
||||||
Method = " ";
|
|
||||||
Module = " ";
|
|
||||||
Namespace = " ";
|
|
||||||
Null = " ";
|
|
||||||
Number = " ";
|
|
||||||
Object = " ";
|
|
||||||
Operator = " ";
|
|
||||||
Package = " ";
|
|
||||||
String = " ";
|
|
||||||
Struct = " ";
|
|
||||||
TypeParameter = " ";
|
|
||||||
Variable = " ";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,53 +0,0 @@
|
||||||
{
|
|
||||||
plugins.neo-tree = {
|
|
||||||
enable = true;
|
|
||||||
sources = [
|
|
||||||
"filesystem"
|
|
||||||
"buffers"
|
|
||||||
"git_status"
|
|
||||||
"document_symbols"
|
|
||||||
];
|
|
||||||
addBlankLineAtTop = false;
|
|
||||||
|
|
||||||
filesystem = {
|
|
||||||
bindToCwd = false;
|
|
||||||
followCurrentFile = {
|
|
||||||
enabled = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
defaultComponentConfigs = {
|
|
||||||
indent = {
|
|
||||||
withExpanders = true;
|
|
||||||
expanderCollapsed = "";
|
|
||||||
expanderExpanded = "";
|
|
||||||
expanderHighlight = "NeoTreeExpander";
|
|
||||||
};
|
|
||||||
|
|
||||||
gitStatus = {
|
|
||||||
symbols = {
|
|
||||||
added = " ";
|
|
||||||
conflict = " ";
|
|
||||||
deleted = "";
|
|
||||||
ignored = " ";
|
|
||||||
modified = " ";
|
|
||||||
renamed = "";
|
|
||||||
staged = "";
|
|
||||||
unstaged = "";
|
|
||||||
untracked = " ";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
keymaps = [
|
|
||||||
{
|
|
||||||
mode = [ "n" ];
|
|
||||||
key = "<leader>e";
|
|
||||||
action = "<cmd>Neotree toggle<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Open/Close Neotree";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,31 +0,0 @@
|
||||||
_: {
|
|
||||||
plugins.todo-comments = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
colors = {
|
|
||||||
error = [
|
|
||||||
"DiagnosticError"
|
|
||||||
"ErrorMsg"
|
|
||||||
"#ED8796"
|
|
||||||
];
|
|
||||||
warning = [
|
|
||||||
"DiagnosticWarn"
|
|
||||||
"WarningMsg"
|
|
||||||
"#EED49F"
|
|
||||||
];
|
|
||||||
info = [
|
|
||||||
"DiagnosticInfo"
|
|
||||||
"#EED49F"
|
|
||||||
];
|
|
||||||
default = [
|
|
||||||
"Identifier"
|
|
||||||
"#F5A97F"
|
|
||||||
];
|
|
||||||
test = [
|
|
||||||
"Identifier"
|
|
||||||
"#8AADF4"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,62 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
plugins.treesitter = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
indent.enable = true;
|
|
||||||
highlight.enable = true;
|
|
||||||
};
|
|
||||||
folding = false;
|
|
||||||
nixvimInjections = true;
|
|
||||||
grammarPackages = pkgs.vimPlugins.nvim-treesitter.allGrammars;
|
|
||||||
};
|
|
||||||
|
|
||||||
plugins.treesitter-textobjects = {
|
|
||||||
enable = false;
|
|
||||||
select = {
|
|
||||||
enable = true;
|
|
||||||
lookahead = true;
|
|
||||||
keymaps = {
|
|
||||||
"aa" = "@parameter.outer";
|
|
||||||
"ia" = "@parameter.inner";
|
|
||||||
"af" = "@function.outer";
|
|
||||||
"if" = "@function.inner";
|
|
||||||
"ac" = "@class.outer";
|
|
||||||
"ic" = "@class.inner";
|
|
||||||
"ii" = "@conditional.inner";
|
|
||||||
"ai" = "@conditional.outer";
|
|
||||||
"il" = "@loop.inner";
|
|
||||||
"al" = "@loop.outer";
|
|
||||||
"at" = "@comment.outer";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
move = {
|
|
||||||
enable = true;
|
|
||||||
gotoNextStart = {
|
|
||||||
"]m" = "@function.outer";
|
|
||||||
"]]" = "@class.outer";
|
|
||||||
};
|
|
||||||
gotoNextEnd = {
|
|
||||||
"]M" = "@function.outer";
|
|
||||||
"][" = "@class.outer";
|
|
||||||
};
|
|
||||||
gotoPreviousStart = {
|
|
||||||
"[m" = "@function.outer";
|
|
||||||
"[[" = "@class.outer";
|
|
||||||
};
|
|
||||||
gotoPreviousEnd = {
|
|
||||||
"[M" = "@function.outer";
|
|
||||||
"[]" = "@class.outer";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
swap = {
|
|
||||||
enable = true;
|
|
||||||
swapNext = {
|
|
||||||
"<leader>a" = "@parameters.inner";
|
|
||||||
};
|
|
||||||
swapPrevious = {
|
|
||||||
"<leader>A" = "@parameter.outer";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
plugins.undotree = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
autoOpenDiff = true;
|
|
||||||
focusOnToggle = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
keymaps = [
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader>ut";
|
|
||||||
action = "<cmd>UndotreeToggle<CR>";
|
|
||||||
options = {
|
|
||||||
silent = true;
|
|
||||||
desc = "Undotree";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
||||||
_: {
|
|
||||||
plugins.gitsigns = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
signs = {
|
|
||||||
add = {
|
|
||||||
text = " ";
|
|
||||||
};
|
|
||||||
change = {
|
|
||||||
text = " ";
|
|
||||||
};
|
|
||||||
delete = {
|
|
||||||
text = " ";
|
|
||||||
};
|
|
||||||
untracked = {
|
|
||||||
text = "";
|
|
||||||
};
|
|
||||||
topdelete = {
|
|
||||||
text = " ";
|
|
||||||
};
|
|
||||||
changedelete = {
|
|
||||||
text = " ";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
extraPlugins = with pkgs.vimPlugins; [
|
|
||||||
lazygit-nvim
|
|
||||||
];
|
|
||||||
|
|
||||||
extraConfigLua = ''
|
|
||||||
require("telescope").load_extension("lazygit")
|
|
||||||
'';
|
|
||||||
|
|
||||||
keymaps = [
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader>gg";
|
|
||||||
action = "<cmd>LazyGit<CR>";
|
|
||||||
options = {
|
|
||||||
desc = "LazyGit (root dir)";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,169 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
config = {
|
|
||||||
extraConfigLuaPre =
|
|
||||||
# lua
|
|
||||||
''
|
|
||||||
local slow_format_filetypes = {}
|
|
||||||
|
|
||||||
vim.api.nvim_create_user_command("FormatDisable", function(args)
|
|
||||||
if args.bang then
|
|
||||||
-- FormatDisable! will disable formatting just for this buffer
|
|
||||||
vim.b.disable_autoformat = true
|
|
||||||
else
|
|
||||||
vim.g.disable_autoformat = true
|
|
||||||
end
|
|
||||||
end, {
|
|
||||||
desc = "Disable autoformat-on-save",
|
|
||||||
bang = true,
|
|
||||||
})
|
|
||||||
vim.api.nvim_create_user_command("FormatEnable", function()
|
|
||||||
vim.b.disable_autoformat = false
|
|
||||||
vim.g.disable_autoformat = false
|
|
||||||
end, {
|
|
||||||
desc = "Re-enable autoformat-on-save",
|
|
||||||
})
|
|
||||||
vim.api.nvim_create_user_command("FormatToggle", function(args)
|
|
||||||
if args.bang then
|
|
||||||
-- Toggle formatting for current buffer
|
|
||||||
vim.b.disable_autoformat = not vim.b.disable_autoformat
|
|
||||||
else
|
|
||||||
-- Toggle formatting globally
|
|
||||||
vim.g.disable_autoformat = not vim.g.disable_autoformat
|
|
||||||
end
|
|
||||||
end, {
|
|
||||||
desc = "Toggle autoformat-on-save",
|
|
||||||
bang = true,
|
|
||||||
})
|
|
||||||
'';
|
|
||||||
plugins.conform-nvim = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
format_on_save = ''
|
|
||||||
function(bufnr)
|
|
||||||
if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
if slow_format_filetypes[vim.bo[bufnr].filetype] then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local function on_format(err)
|
|
||||||
if err and err:match("timeout$") then
|
|
||||||
slow_format_filetypes[vim.bo[bufnr].filetype] = true
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return { timeout_ms = 200, lsp_fallback = true }, on_format
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
|
|
||||||
format_after_save = ''
|
|
||||||
function(bufnr)
|
|
||||||
if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
if not slow_format_filetypes[vim.bo[bufnr].filetype] then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
return { lsp_fallback = true }
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
notify_on_error = true;
|
|
||||||
formatters_by_ft = {
|
|
||||||
html = {
|
|
||||||
__unkeyed-1 = "prettierd";
|
|
||||||
__unkeyed-2 = "prettier";
|
|
||||||
stop_after_first = true;
|
|
||||||
};
|
|
||||||
css = {
|
|
||||||
__unkeyed-1 = "prettierd";
|
|
||||||
__unkeyed-2 = "prettier";
|
|
||||||
stop_after_first = true;
|
|
||||||
};
|
|
||||||
javascript = {
|
|
||||||
__unkeyed-1 = "prettierd";
|
|
||||||
__unkeyed-2 = "prettier";
|
|
||||||
stop_after_first = true;
|
|
||||||
};
|
|
||||||
typescript = {
|
|
||||||
__unkeyed-1 = "prettierd";
|
|
||||||
__unkeyed-2 = "prettier";
|
|
||||||
stop_after_first = true;
|
|
||||||
};
|
|
||||||
python = [
|
|
||||||
"black"
|
|
||||||
"isort"
|
|
||||||
];
|
|
||||||
lua = [ "stylua" ];
|
|
||||||
nix = [ "nixfmt-rfc-style" ];
|
|
||||||
markdown = {
|
|
||||||
__unkeyed-1 = "prettierd";
|
|
||||||
__unkeyed-2 = "prettier";
|
|
||||||
stop_after_first = true;
|
|
||||||
};
|
|
||||||
yaml = {
|
|
||||||
__unkeyed-1 = "prettierd";
|
|
||||||
__unkeyed-2 = "prettier";
|
|
||||||
stop_after_first = true;
|
|
||||||
};
|
|
||||||
terraform = [ "terraform_fmt" ];
|
|
||||||
bicep = [ "bicep" ];
|
|
||||||
bash = [
|
|
||||||
"shellcheck"
|
|
||||||
"shellharden"
|
|
||||||
"shfmt"
|
|
||||||
];
|
|
||||||
json = [ "jq" ];
|
|
||||||
"_" = [ "trim_whitespace" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
formatters = {
|
|
||||||
black = {
|
|
||||||
command = "${lib.getExe pkgs.black}";
|
|
||||||
};
|
|
||||||
isort = {
|
|
||||||
command = "${lib.getExe pkgs.isort}";
|
|
||||||
};
|
|
||||||
nixfmt-rfc-style = {
|
|
||||||
command = "${lib.getExe pkgs.nixfmt-rfc-style}";
|
|
||||||
};
|
|
||||||
alejandra = {
|
|
||||||
command = "${lib.getExe pkgs.alejandra}";
|
|
||||||
};
|
|
||||||
jq = {
|
|
||||||
command = "${lib.getExe pkgs.jq}";
|
|
||||||
};
|
|
||||||
prettierd = {
|
|
||||||
command = "${lib.getExe pkgs.prettierd}";
|
|
||||||
};
|
|
||||||
stylua = {
|
|
||||||
command = "${lib.getExe pkgs.stylua}";
|
|
||||||
};
|
|
||||||
shellcheck = {
|
|
||||||
command = "${lib.getExe pkgs.shellcheck}";
|
|
||||||
};
|
|
||||||
shfmt = {
|
|
||||||
command = "${lib.getExe pkgs.shfmt}";
|
|
||||||
};
|
|
||||||
shellharden = {
|
|
||||||
command = "${lib.getExe pkgs.shellharden}";
|
|
||||||
};
|
|
||||||
bicep = {
|
|
||||||
command = "${lib.getExe pkgs.bicep}";
|
|
||||||
};
|
|
||||||
#yamlfmt = {
|
|
||||||
# command = "${lib.getExe pkgs.yamlfmt}";
|
|
||||||
#};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,110 +0,0 @@
|
||||||
{
|
|
||||||
plugins.fidget = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
logger = {
|
|
||||||
level = "warn"; # "off", "error", "warn", "info", "debug", "trace"
|
|
||||||
float_precision = 1.0e-2; # Limit the number of decimals displayed for floats
|
|
||||||
};
|
|
||||||
progress = {
|
|
||||||
poll_rate = 0; # How and when to poll for progress messages
|
|
||||||
suppress_on_insert = true; # Suppress new messages while in insert mode
|
|
||||||
ignore_done_already = false; # Ignore new tasks that are already complete
|
|
||||||
ignore_empty_message = false; # Ignore new tasks that don't contain a message
|
|
||||||
clear_on_detach =
|
|
||||||
# Clear notification group when LSP server detaches
|
|
||||||
''
|
|
||||||
function(client_id)
|
|
||||||
local client = vim.lsp.get_client_by_id(client_id)
|
|
||||||
return client and client.name or nil
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
notification_group =
|
|
||||||
# How to get a progress message's notification group key
|
|
||||||
''
|
|
||||||
function(msg) return msg.lsp_client.name end
|
|
||||||
'';
|
|
||||||
ignore = [ ]; # List of LSP servers to ignore
|
|
||||||
lsp = {
|
|
||||||
progress_ringbuf_size = 0; # Configure the nvim's LSP progress ring buffer size
|
|
||||||
};
|
|
||||||
display = {
|
|
||||||
render_limit = 16; # How many LSP messages to show at once
|
|
||||||
done_ttl = 3; # How long a message should persist after completion
|
|
||||||
done_icon = "✔"; # Icon shown when all LSP progress tasks are complete
|
|
||||||
done_style = "Constant"; # Highlight group for completed LSP tasks
|
|
||||||
progress_ttl = 10; # How long a message should persist when in progress
|
|
||||||
progress_icon = {
|
|
||||||
pattern = "dots";
|
|
||||||
period = 1;
|
|
||||||
}; # Icon shown when LSP progress tasks are in progress
|
|
||||||
progress_style = "WarningMsg"; # Highlight group for in-progress LSP tasks
|
|
||||||
group_style = "Title"; # Highlight group for group name (LSP server name)
|
|
||||||
icon_style = "Question"; # Highlight group for group icons
|
|
||||||
priority = 30; # Ordering priority for LSP notification group
|
|
||||||
skip_history = true; # Whether progress notifications should be omitted from history
|
|
||||||
format_message = ''
|
|
||||||
require ("fidget.progress.display").default_format_message
|
|
||||||
''; # How to format a progress message
|
|
||||||
format_annote = ''
|
|
||||||
function (msg) return msg.title end
|
|
||||||
''; # How to format a progress annotation
|
|
||||||
format_group_name = ''
|
|
||||||
function (group) return tostring (group) end
|
|
||||||
''; # How to format a progress notification group's name
|
|
||||||
overrides = {
|
|
||||||
rust_analyzer = {
|
|
||||||
name = "rust-analyzer";
|
|
||||||
};
|
|
||||||
}; # Override options from the default notification config
|
|
||||||
};
|
|
||||||
};
|
|
||||||
notification = {
|
|
||||||
poll_rate = 10; # How frequently to update and render notifications
|
|
||||||
filter = "info"; # "off", "error", "warn", "info", "debug", "trace"
|
|
||||||
history_size = 128; # Number of removed messages to retain in history
|
|
||||||
override_vim_notify = true;
|
|
||||||
redirect = {
|
|
||||||
__raw = ''
|
|
||||||
function(msg, level, opts)
|
|
||||||
if opts and opts.on_open then
|
|
||||||
return require("fidget.integration.nvim-notify").delegate(msg, level, opts)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
configs = {
|
|
||||||
default = {
|
|
||||||
name = "Notifications";
|
|
||||||
icon = "";
|
|
||||||
group = "Notifications";
|
|
||||||
annote = true;
|
|
||||||
debug = false;
|
|
||||||
debug_rate = 0.25;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
window = {
|
|
||||||
normal_hl = "Comment";
|
|
||||||
winblend = 0;
|
|
||||||
border = "none"; # none, single, double, rounded, solid, shadow
|
|
||||||
zindex = 45;
|
|
||||||
max_width = 0;
|
|
||||||
max_height = 0;
|
|
||||||
x_padding = 1;
|
|
||||||
y_padding = 0;
|
|
||||||
align = "bottom";
|
|
||||||
relative = "editor";
|
|
||||||
};
|
|
||||||
view = {
|
|
||||||
stack_upwards = true; # Display notification items from bottom to top
|
|
||||||
icon_separator = " "; # Separator between group name and icon
|
|
||||||
group_separator = "---"; # Separator between notification groups
|
|
||||||
group_separator_hl =
|
|
||||||
# Highlight group used for group separator
|
|
||||||
"Comment";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,154 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
let
|
|
||||||
puppet-editor-services = pkgs.callPackage ../../../pkgs/puppet-editor-services/package.nix { };
|
|
||||||
in
|
|
||||||
{
|
|
||||||
plugins = {
|
|
||||||
lspconfig = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
lsp-lines = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
lsp-format = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
helm = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
lspsaga = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
lightbulb = {
|
|
||||||
sign = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
lsp = {
|
|
||||||
inlayHints = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
servers = {
|
|
||||||
html = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
lua_ls = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
nil_ls = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
ts_ls = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
marksman = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
pyright = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
gopls = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
terraformls = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
terraform.path = "${pkgs.opentofu}/bin/tofu";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
jsonls = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
hls = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
rubocop = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
ruby_lsp = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
texlab = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
puppet = {
|
|
||||||
enable = true;
|
|
||||||
package = puppet-editor-services;
|
|
||||||
settings.cmd = [
|
|
||||||
"${puppet-editor-services}/bin/puppet-languageserver"
|
|
||||||
"--stdio"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
helm_ls = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
"helm_ls" = {
|
|
||||||
yamlls = {
|
|
||||||
path = "${pkgs.yaml-language-server}/bin/yaml-language-server";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
yamlls = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
yaml = {
|
|
||||||
format = {
|
|
||||||
singleQuote = true;
|
|
||||||
};
|
|
||||||
schemas = {
|
|
||||||
kubernetes = "'*.yaml";
|
|
||||||
"http://json.schemastore.org/github-workflow" = ".github/workflows/*";
|
|
||||||
"http://json.schemastore.org/github-action" = ".github/action.{yml,yaml}";
|
|
||||||
"http://json.schemastore.org/ansible-stable-2.9" = "roles/tasks/*.{yml,yaml}";
|
|
||||||
"http://json.schemastore.org/kustomization" = "kustomization.{yml,yaml}";
|
|
||||||
"http://json.schemastore.org/ansible-playbook" = "*play*.{yml,yaml}";
|
|
||||||
"http://json.schemastore.org/chart" = "Chart.{yml,yaml}";
|
|
||||||
"https://json.schemastore.org/dependabot-v2" = ".github/dependabot.{yml,yaml}";
|
|
||||||
"https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json" =
|
|
||||||
"*docker-compose*.{yml,yaml}";
|
|
||||||
"https://raw.githubusercontent.com/argoproj/argo-workflows/master/api/jsonschema/schema.json" =
|
|
||||||
"*flow*.{yml,yaml}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
keymaps = [
|
|
||||||
{
|
|
||||||
key = "gd";
|
|
||||||
lspBufAction = "definition";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "gr";
|
|
||||||
lspBufAction = "references";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "gD";
|
|
||||||
lspBufAction = "declaration";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "gI";
|
|
||||||
lspBufAction = "implementation";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "gT";
|
|
||||||
lspBufAction = "type_definition";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "K";
|
|
||||||
lspBufAction = "hover";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "<leader>cw";
|
|
||||||
lspBufAction = "workspace_symbol";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "<leader>cr";
|
|
||||||
lspBufAction = "rename";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
_: {
|
|
||||||
plugins.luasnip = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
enable_autosnippets = true;
|
|
||||||
store_selection_keys = "<Tab>";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,67 +0,0 @@
|
||||||
{
|
|
||||||
colorschemes = {
|
|
||||||
catppuccin = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
background = {
|
|
||||||
light = "macchiato";
|
|
||||||
dark = "mocha";
|
|
||||||
};
|
|
||||||
custom_highlights = ''
|
|
||||||
function(highlights)
|
|
||||||
return {
|
|
||||||
CursorLineNr = { fg = highlights.peach, style = {} },
|
|
||||||
NavicText = { fg = highlights.text },
|
|
||||||
}
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
flavour = "macchiato"; # "latte", "mocha", "frappe", "macchiato" or raw lua code
|
|
||||||
no_bold = false;
|
|
||||||
no_italic = false;
|
|
||||||
no_underline = false;
|
|
||||||
transparent_background = true;
|
|
||||||
integrations = {
|
|
||||||
cmp = true;
|
|
||||||
notify = true;
|
|
||||||
gitsigns = true;
|
|
||||||
neotree = true;
|
|
||||||
which_key = true;
|
|
||||||
illuminate = {
|
|
||||||
enabled = true;
|
|
||||||
lsp = true;
|
|
||||||
};
|
|
||||||
navic = {
|
|
||||||
enabled = true;
|
|
||||||
custom_bg = "NONE";
|
|
||||||
};
|
|
||||||
treesitter = true;
|
|
||||||
telescope.enabled = true;
|
|
||||||
indent_blankline.enabled = true;
|
|
||||||
mini = {
|
|
||||||
enabled = true;
|
|
||||||
indentscope_color = "rosewater";
|
|
||||||
};
|
|
||||||
native_lsp = {
|
|
||||||
enabled = true;
|
|
||||||
inlay_hints = {
|
|
||||||
background = true;
|
|
||||||
};
|
|
||||||
virtual_text = {
|
|
||||||
errors = [ "italic" ];
|
|
||||||
hints = [ "italic" ];
|
|
||||||
information = [ "italic" ];
|
|
||||||
warnings = [ "italic" ];
|
|
||||||
ok = [ "italic" ];
|
|
||||||
};
|
|
||||||
underlines = {
|
|
||||||
errors = [ "underline" ];
|
|
||||||
hints = [ "underline" ];
|
|
||||||
information = [ "underline" ];
|
|
||||||
warnings = [ "underline" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,109 +0,0 @@
|
||||||
{
|
|
||||||
plugins = {
|
|
||||||
bufferline = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
options = {
|
|
||||||
diagnostics = "nvim_lsp";
|
|
||||||
mode = "buffers";
|
|
||||||
|
|
||||||
close_icon = " ";
|
|
||||||
buffer_close_icon = " ";
|
|
||||||
modified_icon = " ";
|
|
||||||
|
|
||||||
offsets = [
|
|
||||||
{
|
|
||||||
filetype = "neo-tree";
|
|
||||||
text = "Neo-tree";
|
|
||||||
highlight = "Directory";
|
|
||||||
text_align = "left";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
keymaps = [
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "]b";
|
|
||||||
action = "<cmd>BufferLineCycleNext<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Cycle to next buffer";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "[b";
|
|
||||||
action = "<cmd>BufferLineCyclePrev<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Cycle to previous buffer";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<S-l>";
|
|
||||||
action = "<cmd>BufferLineCycleNext<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Cycle to next buffer";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<S-h>";
|
|
||||||
action = "<cmd>BufferLineCyclePrev<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Cycle to previous buffer";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader>bd";
|
|
||||||
action = "<cmd>bdelete<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Delete buffer";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader>bl";
|
|
||||||
action = "<cmd>BufferLineCloseLeft<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Delete buffers to the left";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader>bo";
|
|
||||||
action = "<cmd>BufferLineCloseOthers<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Delete other buffers";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader>bp";
|
|
||||||
action = "<cmd>BufferLineTogglePin<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Toggle pin";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader>bP";
|
|
||||||
action = "<Cmd>BufferLineGroupClose ungrouped<CR>";
|
|
||||||
options = {
|
|
||||||
desc = "Delete non-pinned buffers";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,83 +0,0 @@
|
||||||
_: {
|
|
||||||
plugins.lualine = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
options = {
|
|
||||||
globalstatus = true;
|
|
||||||
extensions = [
|
|
||||||
"fzf"
|
|
||||||
"neo-tree"
|
|
||||||
];
|
|
||||||
disabledFiletypes = {
|
|
||||||
statusline = [
|
|
||||||
"startup"
|
|
||||||
"alpha"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
theme = "catppuccin";
|
|
||||||
};
|
|
||||||
sections = {
|
|
||||||
lualine_a = [
|
|
||||||
{
|
|
||||||
__unkeyed-1 = "mode";
|
|
||||||
icon = "";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
lualine_b = [
|
|
||||||
{
|
|
||||||
__unkeyed-1 = "branch";
|
|
||||||
icon = "";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
__unkeyed-1 = "diff";
|
|
||||||
symbols = {
|
|
||||||
added = " ";
|
|
||||||
modified = " ";
|
|
||||||
removed = " ";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
lualine_c = [
|
|
||||||
{
|
|
||||||
__unkeyed-1 = "diagnostics";
|
|
||||||
sources = [ "nvim_lsp" ];
|
|
||||||
symbols = {
|
|
||||||
error = " ";
|
|
||||||
warn = " ";
|
|
||||||
info = " ";
|
|
||||||
hint = " ";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
__unkeyed-1 = "navic";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
lualine_x = [
|
|
||||||
{
|
|
||||||
__unkeyed-1 = "filetype";
|
|
||||||
icon_only = true;
|
|
||||||
separator = "";
|
|
||||||
padding = {
|
|
||||||
left = 1;
|
|
||||||
right = 0;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
__unkeyed-1 = "filename";
|
|
||||||
path = 1;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
lualine_y = [
|
|
||||||
{
|
|
||||||
__unkeyed-1 = "progress";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
lualine_z = [
|
|
||||||
{
|
|
||||||
__unkeyed-1 = "location";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,88 +0,0 @@
|
||||||
{
|
|
||||||
plugins.startup = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
colors = {
|
|
||||||
background = "#ffffff";
|
|
||||||
foldedSection = "#ffffff";
|
|
||||||
};
|
|
||||||
|
|
||||||
sections = {
|
|
||||||
header = {
|
|
||||||
type = "text";
|
|
||||||
oldfilesDirectory = false;
|
|
||||||
align = "center";
|
|
||||||
foldSection = false;
|
|
||||||
title = "Header";
|
|
||||||
margin = 5;
|
|
||||||
content = [
|
|
||||||
"███████╗███████╗ ██████╗ █████╗ ██████╗ ███████╗ █████╗ ███╗ ██╗ ██████╗ ██╗ ███████╗"
|
|
||||||
"██╔════╝██╔════╝██╔════╝██╔══██╗██╔══██╗██╔════╝██╔══██╗████╗ ██║██╔════╝ ██║ ██╔════╝"
|
|
||||||
"█████╗ ███████╗██║ ███████║██████╔╝█████╗ ███████║██╔██╗ ██║██║ ███╗██║ █████╗ "
|
|
||||||
"██╔══╝ ╚════██║██║ ██╔══██║██╔═══╝ ██╔══╝ ██╔══██║██║╚██╗██║██║ ██║██║ ██╔══╝ "
|
|
||||||
"███████╗███████║╚██████╗██║ ██║██║ ███████╗██║ ██║██║ ╚████║╚██████╔╝███████╗███████╗"
|
|
||||||
"╚══════╝╚══════╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚══════╝╚══════╝"
|
|
||||||
];
|
|
||||||
highlight = "Statement";
|
|
||||||
defaultColor = "";
|
|
||||||
oldfilesAmount = 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
body = {
|
|
||||||
type = "mapping";
|
|
||||||
oldfilesDirectory = false;
|
|
||||||
align = "center";
|
|
||||||
foldSection = false;
|
|
||||||
title = "Menu";
|
|
||||||
margin = 5;
|
|
||||||
content = [
|
|
||||||
[
|
|
||||||
" Find File"
|
|
||||||
"Telescope find_files"
|
|
||||||
"ff"
|
|
||||||
]
|
|
||||||
[
|
|
||||||
" Find Word"
|
|
||||||
"Telescope live_grep"
|
|
||||||
"fr"
|
|
||||||
]
|
|
||||||
[
|
|
||||||
" Recent Files"
|
|
||||||
"Telescope oldfiles"
|
|
||||||
"fg"
|
|
||||||
]
|
|
||||||
[
|
|
||||||
" File Browser"
|
|
||||||
"Telescope file_browser"
|
|
||||||
"fe"
|
|
||||||
]
|
|
||||||
[
|
|
||||||
" Copilot Chat"
|
|
||||||
"CopilotChat"
|
|
||||||
"ct"
|
|
||||||
]
|
|
||||||
[
|
|
||||||
" SecondBrain"
|
|
||||||
"edit ~/projects/personal/SecondBrain"
|
|
||||||
"sb"
|
|
||||||
]
|
|
||||||
];
|
|
||||||
highlight = "string";
|
|
||||||
defaultColor = "";
|
|
||||||
oldfilesAmount = 0;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
options = {
|
|
||||||
paddings = [
|
|
||||||
1
|
|
||||||
3
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
parts = [
|
|
||||||
"header"
|
|
||||||
"body"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
extraPlugins =
|
|
||||||
with pkgs.vimPlugins;
|
|
||||||
[
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
_: {
|
|
||||||
plugins = {
|
|
||||||
markdown-preview = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
browser = "firefox";
|
|
||||||
echo_preview_url = 1;
|
|
||||||
port = "6969";
|
|
||||||
preview_options = {
|
|
||||||
disable_filename = 1;
|
|
||||||
disable_sync_scroll = 1;
|
|
||||||
sync_scroll_type = "middle";
|
|
||||||
};
|
|
||||||
theme = "dark";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
keymaps = [
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader>mp";
|
|
||||||
action = "<cmd>MarkdownPreview<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Toggle Markdown Preview";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
{
|
|
||||||
plugins.mini = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
modules = {
|
|
||||||
indentscope = {
|
|
||||||
symbol = "│";
|
|
||||||
options = {
|
|
||||||
try_as_border = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
surround = { };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
{
|
|
||||||
plugins.obsidian = {
|
|
||||||
enable = false;
|
|
||||||
settings = {
|
|
||||||
workspaces = [
|
|
||||||
{
|
|
||||||
name = "SecondBrain";
|
|
||||||
path = "~/projects/personal/SecondBrain";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
templates = {
|
|
||||||
subdir = "templates";
|
|
||||||
dateFormat = "%Y-%m-%d";
|
|
||||||
timeFormat = "%H:%M";
|
|
||||||
substitutions = { };
|
|
||||||
};
|
|
||||||
|
|
||||||
dailyNotes = {
|
|
||||||
folder = "0_Daily_Notes";
|
|
||||||
dateFormat = "%Y-%m-%d";
|
|
||||||
aliasFormat = "%B %-d, %Y";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,210 +0,0 @@
|
||||||
{
|
|
||||||
plugins.telescope = {
|
|
||||||
enable = true;
|
|
||||||
extensions = {
|
|
||||||
file-browser = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
fzf-native = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
settings = {
|
|
||||||
defaults = {
|
|
||||||
layout_config = {
|
|
||||||
horizontal = {
|
|
||||||
prompt_position = "top";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
sorting_strategy = "ascending";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
keymaps = {
|
|
||||||
"<leader><space>" = {
|
|
||||||
action = "find_files";
|
|
||||||
options = {
|
|
||||||
desc = "Find project files";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"<leader>/" = {
|
|
||||||
action = "live_grep";
|
|
||||||
options = {
|
|
||||||
desc = "Grep (root dir)";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"<leader>:" = {
|
|
||||||
action = "command_history";
|
|
||||||
options = {
|
|
||||||
desc = "Command History";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"<leader>b" = {
|
|
||||||
action = "buffers";
|
|
||||||
options = {
|
|
||||||
desc = "+buffer";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"<leader>ff" = {
|
|
||||||
action = "find_files";
|
|
||||||
options = {
|
|
||||||
desc = "Find project files";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"<leader>fr" = {
|
|
||||||
action = "live_grep";
|
|
||||||
options = {
|
|
||||||
desc = "Find text";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"<leader>fR" = {
|
|
||||||
action = "resume";
|
|
||||||
options = {
|
|
||||||
desc = "Resume";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"<leader>fg" = {
|
|
||||||
action = "oldfiles";
|
|
||||||
options = {
|
|
||||||
desc = "Recent";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"<leader>fb" = {
|
|
||||||
action = "buffers";
|
|
||||||
options = {
|
|
||||||
desc = "Buffers";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"<C-p>" = {
|
|
||||||
action = "git_files";
|
|
||||||
options = {
|
|
||||||
desc = "Search git files";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"<leader>gc" = {
|
|
||||||
action = "git_commits";
|
|
||||||
options = {
|
|
||||||
desc = "Commits";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"<leader>gs" = {
|
|
||||||
action = "git_status";
|
|
||||||
options = {
|
|
||||||
desc = "Status";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"<leader>sa" = {
|
|
||||||
action = "autocommands";
|
|
||||||
options = {
|
|
||||||
desc = "Auto Commands";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"<leader>sb" = {
|
|
||||||
action = "current_buffer_fuzzy_find";
|
|
||||||
options = {
|
|
||||||
desc = "Buffer";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"<leader>sc" = {
|
|
||||||
action = "command_history";
|
|
||||||
options = {
|
|
||||||
desc = "Command History";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"<leader>sC" = {
|
|
||||||
action = "commands";
|
|
||||||
options = {
|
|
||||||
desc = "Commands";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"<leader>sD" = {
|
|
||||||
action = "diagnostics";
|
|
||||||
options = {
|
|
||||||
desc = "Workspace diagnostics";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"<leader>sh" = {
|
|
||||||
action = "help_tags";
|
|
||||||
options = {
|
|
||||||
desc = "Help pages";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"<leader>sH" = {
|
|
||||||
action = "highlights";
|
|
||||||
options = {
|
|
||||||
desc = "Search Highlight Groups";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"<leader>sk" = {
|
|
||||||
action = "keymaps";
|
|
||||||
options = {
|
|
||||||
desc = "Keymaps";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"<leader>sM" = {
|
|
||||||
action = "man_pages";
|
|
||||||
options = {
|
|
||||||
desc = "Man pages";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"<leader>sm" = {
|
|
||||||
action = "marks";
|
|
||||||
options = {
|
|
||||||
desc = "Jump to Mark";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"<leader>so" = {
|
|
||||||
action = "vim_options";
|
|
||||||
options = {
|
|
||||||
desc = "Options";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"<leader>sR" = {
|
|
||||||
action = "resume";
|
|
||||||
options = {
|
|
||||||
desc = "Resume";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"<leader>uC" = {
|
|
||||||
action = "colorscheme";
|
|
||||||
options = {
|
|
||||||
desc = "Colorscheme preview";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
keymaps = [
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader>sd";
|
|
||||||
action = "<cmd>Telescope diagnostics bufnr=0<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Document diagnostics";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader>fe";
|
|
||||||
action = "<cmd>Telescope file_browser<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "File browser";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader>fE";
|
|
||||||
action = "<cmd>Telescope file_browser path=%:p:h select_buffer=true<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "File browser";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
extraConfigLua = ''
|
|
||||||
require("telescope").setup{
|
|
||||||
pickers = {
|
|
||||||
colorscheme = {
|
|
||||||
enable_preview = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
||||||
_: {
|
|
||||||
plugins.toggleterm = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
size = 20;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
keymaps = [
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader>t";
|
|
||||||
action = "<cmd>ToggleTerm<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Toggle Terminal Window";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader>tv";
|
|
||||||
action = "<cmd>ToggleTerm direction=vertical<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Toggle Vertical Terminal Window";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader>th";
|
|
||||||
action = "<cmd>ToggleTerm direction=horizontal<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Toggle Horizontal Terminal Window";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = "n";
|
|
||||||
key = "<leader>tf";
|
|
||||||
action = "<cmd>ToggleTerm direction=float<cr>";
|
|
||||||
options = {
|
|
||||||
desc = "Toggle Floating Terminal Window";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
{
|
|
||||||
plugins.web-devicons = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
{
|
|
||||||
plugins.which-key = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,107 +0,0 @@
|
||||||
{
|
|
||||||
config = {
|
|
||||||
extraConfigLuaPre =
|
|
||||||
# lua
|
|
||||||
''
|
|
||||||
vim.fn.sign_define("diagnosticsignerror", { text = " ", texthl = "diagnosticerror", linehl = "", numhl = "" })
|
|
||||||
vim.fn.sign_define("diagnosticsignwarn", { text = " ", texthl = "diagnosticwarn", linehl = "", numhl = "" })
|
|
||||||
vim.fn.sign_define("diagnosticsignhint", { text = "", texthl = "diagnostichint", linehl = "", numhl = "" })
|
|
||||||
vim.fn.sign_define("diagnosticsigninfo", { text = " ", texthl = "diagnosticinfo", linehl = "", numhl = "" })
|
|
||||||
'';
|
|
||||||
|
|
||||||
clipboard = {
|
|
||||||
providers.wl-copy.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
editorconfig = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
diagnostic.settings = {
|
|
||||||
virtual_lines = {
|
|
||||||
virtual_lines = true;
|
|
||||||
};
|
|
||||||
virtual_text = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
opts = {
|
|
||||||
# Show line numbers
|
|
||||||
number = true;
|
|
||||||
|
|
||||||
# Show relative line numbers
|
|
||||||
relativenumber = true;
|
|
||||||
|
|
||||||
# Use the system clipboard
|
|
||||||
clipboard = "unnamedplus";
|
|
||||||
|
|
||||||
# Number of spaces that represent a <TAB>
|
|
||||||
tabstop = 2;
|
|
||||||
softtabstop = 2;
|
|
||||||
|
|
||||||
# Show tabline always
|
|
||||||
showtabline = 2;
|
|
||||||
|
|
||||||
# Use spaces instead of tabs
|
|
||||||
expandtab = true;
|
|
||||||
|
|
||||||
# Enable smart indentation
|
|
||||||
smartindent = true;
|
|
||||||
|
|
||||||
# Number of spaces to use for each step of (auto)indent
|
|
||||||
shiftwidth = 2;
|
|
||||||
|
|
||||||
# Enable break indent
|
|
||||||
breakindent = true;
|
|
||||||
|
|
||||||
# Highlight the screen line of the cursor
|
|
||||||
cursorline = true;
|
|
||||||
|
|
||||||
# Minimum number of screen lines to keep above and below the cursor
|
|
||||||
scrolloff = 8;
|
|
||||||
|
|
||||||
# Enable mouse support
|
|
||||||
mouse = "a";
|
|
||||||
|
|
||||||
# Set folding method to manual
|
|
||||||
foldmethod = "manual";
|
|
||||||
|
|
||||||
# Disable folding by default
|
|
||||||
foldenable = false;
|
|
||||||
|
|
||||||
# Wrap long lines at a character in 'breakat'
|
|
||||||
linebreak = true;
|
|
||||||
|
|
||||||
# Disable spell checking
|
|
||||||
spell = false;
|
|
||||||
|
|
||||||
# Disable swap file creation
|
|
||||||
swapfile = false;
|
|
||||||
|
|
||||||
# Time in milliseconds to wait for a mapped sequence to complete
|
|
||||||
timeoutlen = 300;
|
|
||||||
|
|
||||||
# Enable 24-bit RGB color in the TUI
|
|
||||||
termguicolors = true;
|
|
||||||
|
|
||||||
# Don't show mode in the command line
|
|
||||||
showmode = false;
|
|
||||||
|
|
||||||
# Open new split below the current window
|
|
||||||
splitbelow = true;
|
|
||||||
|
|
||||||
# Keep the screen when splitting
|
|
||||||
splitkeep = "screen";
|
|
||||||
|
|
||||||
# Open new split to the right of the current window
|
|
||||||
splitright = true;
|
|
||||||
|
|
||||||
# Hide command line unless needed
|
|
||||||
cmdheight = 0;
|
|
||||||
|
|
||||||
# Remove EOB
|
|
||||||
fillchars = {
|
|
||||||
eob = " ";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
125
flake.lock
generated
125
flake.lock
generated
|
|
@ -73,10 +73,30 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"git-hooks": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
|
"gitignore": "gitignore",
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1759523803,
|
||||||
|
"narHash": "sha256-PTod9NG+i3XbbnBKMl/e5uHDBYpwIWivQ3gOWSEuIEM=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"rev": "cfc9f7bb163ad8542029d303e599c0f7eee09835",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"gitignore": {
|
"gitignore": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"pre-commit-hooks",
|
"git-hooks",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
@ -124,16 +144,16 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1759036355,
|
"lastModified": 1759070547,
|
||||||
"narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=",
|
"narHash": "sha256-JVZl8NaVRYb0+381nl7LvPE+A774/dRpif01FKLrYFQ=",
|
||||||
"owner": "nixos",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127",
|
"rev": "647e5c14cbd5067f44ac86b74f014962df460840",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "NixOS",
|
||||||
"ref": "nixos-unstable",
|
"ref": "nixpkgs-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
|
@ -153,7 +173,39 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs-stable": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1759735786,
|
||||||
|
"narHash": "sha256-a0+h02lyP2KwSNrZz4wLJTu9ikujNsTWIC874Bv7IJ0=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "20c4598c84a671783f741e02bf05cbfaf4907cff",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-25.05",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1759036355,
|
||||||
|
"narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1758763312,
|
"lastModified": 1758763312,
|
||||||
"narHash": "sha256-puBMviZhYlqOdUUgEmMVJpXqC/ToEqSvkyZ30qQ09xM=",
|
"narHash": "sha256-puBMviZhYlqOdUUgEmMVJpXqC/ToEqSvkyZ30qQ09xM=",
|
||||||
|
|
@ -169,26 +221,10 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_3": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1758029226,
|
|
||||||
"narHash": "sha256-TjqVmbpoCqWywY9xIZLTf6ANFvDCXdctCjoYuYPYdMI=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "08b8f92ac6354983f5382124fef6006cade4a1c1",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixpkgs-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixvim": {
|
"nixvim": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": "flake-parts_2",
|
"flake-parts": "flake-parts_2",
|
||||||
"nixpkgs": "nixpkgs_2",
|
"nixpkgs": "nixpkgs_3",
|
||||||
"nuschtosSearch": "nuschtosSearch",
|
"nuschtosSearch": "nuschtosSearch",
|
||||||
"systems": "systems_2"
|
"systems": "systems_2"
|
||||||
},
|
},
|
||||||
|
|
@ -229,32 +265,14 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"pre-commit-hooks": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-compat": "flake-compat",
|
|
||||||
"gitignore": "gitignore",
|
|
||||||
"nixpkgs": "nixpkgs_3"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1758108966,
|
|
||||||
"narHash": "sha256-ytw7ROXaWZ7OfwHrQ9xvjpUWeGVm86pwnEd1QhzawIo=",
|
|
||||||
"owner": "cachix",
|
|
||||||
"repo": "pre-commit-hooks.nix",
|
|
||||||
"rev": "54df955a695a84cd47d4a43e08e1feaf90b1fd9b",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "cachix",
|
|
||||||
"repo": "pre-commit-hooks.nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": "flake-parts",
|
"flake-parts": "flake-parts",
|
||||||
"nixpkgs": "nixpkgs",
|
"git-hooks": "git-hooks",
|
||||||
|
"nixpkgs": "nixpkgs_2",
|
||||||
|
"nixpkgs-stable": "nixpkgs-stable",
|
||||||
"nixvim": "nixvim",
|
"nixvim": "nixvim",
|
||||||
"pre-commit-hooks": "pre-commit-hooks"
|
"systems": "systems_3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems": {
|
"systems": {
|
||||||
|
|
@ -286,6 +304,21 @@
|
||||||
"repo": "default",
|
"repo": "default",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"systems_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
|
|
||||||
76
flake.nix
76
flake.nix
|
|
@ -1,75 +1,25 @@
|
||||||
{
|
{
|
||||||
description = "deCort.tech NeoVim configuration";
|
description = "EscapeAngle NeoVim configuration";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
|
nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-25.05";
|
||||||
flake-parts.url = "github:hercules-ci/flake-parts";
|
flake-parts.url = "github:hercules-ci/flake-parts";
|
||||||
nixvim = {
|
nixvim.url = "github:nix-community/nixvim";
|
||||||
url = "github:nix-community/nixvim";
|
systems.url = "github:nix-systems/default";
|
||||||
};
|
git-hooks.url = "github:cachix/git-hooks.nix";
|
||||||
pre-commit-hooks = {
|
git-hooks.flake = false;
|
||||||
url = "github:cachix/pre-commit-hooks.nix";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs =
|
outputs =
|
||||||
{
|
inputs@{ flake-parts, ... }:
|
||||||
nixpkgs,
|
|
||||||
nixvim,
|
|
||||||
flake-parts,
|
|
||||||
pre-commit-hooks,
|
|
||||||
...
|
|
||||||
}@inputs:
|
|
||||||
flake-parts.lib.mkFlake { inherit inputs; } {
|
flake-parts.lib.mkFlake { inherit inputs; } {
|
||||||
systems = [
|
systems = import inputs.systems;
|
||||||
"aarch64-linux"
|
_module.args = { inherit inputs; };
|
||||||
"x86_64-linux"
|
imports = [
|
||||||
"aarch64-darwin"
|
./modules/flake
|
||||||
"x86_64-darwin"
|
./overlays
|
||||||
|
./plugins
|
||||||
];
|
];
|
||||||
|
|
||||||
perSystem =
|
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
system,
|
|
||||||
self',
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
nixvimLib = nixvim.lib.${system};
|
|
||||||
nixvim' = nixvim.legacyPackages.${system};
|
|
||||||
nixvimModule = {
|
|
||||||
inherit pkgs;
|
|
||||||
module = import ./config; # import the module directly
|
|
||||||
# You can use `extraSpecialArgs` to pass additional arguments to your module files
|
|
||||||
extraSpecialArgs = {
|
|
||||||
# inherit (inputs) foo;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
nvim = nixvim'.makeNixvimWithModule nixvimModule;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
checks = {
|
|
||||||
default = nixvimLib.check.mkTestDerivationFromNixvimModule nixvimModule;
|
|
||||||
pre-commit-check = pre-commit-hooks.lib.${system}.run {
|
|
||||||
src = ./.;
|
|
||||||
hooks = {
|
|
||||||
statix.enable = true;
|
|
||||||
nixfmt-rfc-style.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
formatter = pkgs.nixfmt-rfc-style;
|
|
||||||
|
|
||||||
packages = {
|
|
||||||
default = nvim;
|
|
||||||
};
|
|
||||||
|
|
||||||
devShells = {
|
|
||||||
default = with pkgs; mkShell { inherit (self'.checks.pre-commit-check) shellHook; };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
23
modules/flake/default.nix
Normal file
23
modules/flake/default.nix
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{ inputs, self, ... }:
|
||||||
|
{
|
||||||
|
debug = true;
|
||||||
|
|
||||||
|
imports = [ ./devshell.nix ];
|
||||||
|
|
||||||
|
perSystem =
|
||||||
|
{ lib, system, ... }:
|
||||||
|
{
|
||||||
|
_module.args = {
|
||||||
|
flake = { inherit inputs self; };
|
||||||
|
pkgs = import inputs.nixpkgs {
|
||||||
|
inherit system;
|
||||||
|
overlays = lib.attrValues self.overlays;
|
||||||
|
config.allowUnfree = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
(self + /packages)
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
32
modules/flake/devshell.nix
Normal file
32
modules/flake/devshell.nix
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
{ inputs, ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
(inputs.git-hooks + /flake-module.nix)
|
||||||
|
];
|
||||||
|
|
||||||
|
perSystem =
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
{
|
||||||
|
devShells.default = pkgs.mkShell rec {
|
||||||
|
name = "nixvim";
|
||||||
|
meta.description = "Dev environment for nixvim configuration";
|
||||||
|
|
||||||
|
inputsFrom = [ config.pre-commit.devShell ];
|
||||||
|
|
||||||
|
packages = with pkgs; [
|
||||||
|
nil
|
||||||
|
nix-output-monitor
|
||||||
|
nixfmt-rfc-style
|
||||||
|
];
|
||||||
|
|
||||||
|
shellHook = ''
|
||||||
|
echo 1>&2 "🐼: $(id -un) | 🧬: $(nix eval --raw --impure --expr 'builtins.currentSystem') | 🐧: $(uname -r) "
|
||||||
|
echo 1>&2 "Ready to work on ${name}!"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
pre-commit.settings = {
|
||||||
|
hooks.nixfmt-rfc-style.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
12
overlays/default.nix
Normal file
12
overlays/default.nix
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
{ inputs, self, ... }:
|
||||||
|
{
|
||||||
|
flake.overlays.default = (
|
||||||
|
final: prev: {
|
||||||
|
stable = import inputs.nixpkgs-stable {
|
||||||
|
allowUnfree = true;
|
||||||
|
inherit (prev) system;
|
||||||
|
overlays = prev.lib.attrValues self.overlays;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
39
packages/default.nix
Normal file
39
packages/default.nix
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
{
|
||||||
|
flake,
|
||||||
|
inputs',
|
||||||
|
self',
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
mkNixVim =
|
||||||
|
module:
|
||||||
|
inputs'.nixvim.legacyPackages.makeNixvimWithModule {
|
||||||
|
extraSpecialArgs = { inherit inputs self; };
|
||||||
|
inherit module;
|
||||||
|
};
|
||||||
|
inherit (flake) inputs self;
|
||||||
|
bareModules = [
|
||||||
|
self.myvimPlugins.common
|
||||||
|
self.myvimPlugins.buffer
|
||||||
|
self.myvimPlugins.snacks
|
||||||
|
self.myvimPlugins.ux
|
||||||
|
];
|
||||||
|
coreModules = bareModules ++ [
|
||||||
|
self.myvimPlugins.autosession
|
||||||
|
self.myvimPlugins.blink-cmp
|
||||||
|
self.myvimPlugins.git
|
||||||
|
self.myvimPlugins.lang
|
||||||
|
self.myvimPlugins.lsp
|
||||||
|
self.myvimPlugins.lualine
|
||||||
|
self.myvimPlugins.neotree
|
||||||
|
self.myvimPlugins.noice
|
||||||
|
self.myvimPlugins.treesitter
|
||||||
|
];
|
||||||
|
in
|
||||||
|
{
|
||||||
|
packages = {
|
||||||
|
default = self'.packages.core;
|
||||||
|
bare = mkNixVim bareModules;
|
||||||
|
core = mkNixVim coreModules;
|
||||||
|
};
|
||||||
|
}
|
||||||
23
plugins/autosession.nix
Normal file
23
plugins/autosession.nix
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{ config, ... }:
|
||||||
|
let
|
||||||
|
inherit (config.myvim.mkKey) mkKeymap;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
plugins.auto-session = {
|
||||||
|
enable = true;
|
||||||
|
autoLoad = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
use_git_branch = true;
|
||||||
|
session_lens.previewer = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
keymaps = [
|
||||||
|
(mkKeymap "n" "<leader>q." "<cmd>SessionRestore<CR>" "Last Session")
|
||||||
|
(mkKeymap "n" "<leader>ql" "<cmd>Autosession search<CR>" "List Session")
|
||||||
|
(mkKeymap "n" "<leader>qd" "<cmd>Autosession delete<CR>" "Delete Session")
|
||||||
|
(mkKeymap "n" "<leader>qs" "<cmd>SessionSave<CR>" "Save Session")
|
||||||
|
(mkKeymap "n" "<leader>qD" "<cmd>SessionPurgeOrphaned<CR>" "Purge Orphaned Sessions")
|
||||||
|
];
|
||||||
|
}
|
||||||
95
plugins/blink-cmp.nix
Normal file
95
plugins/blink-cmp.nix
Normal file
|
|
@ -0,0 +1,95 @@
|
||||||
|
{ lib, ... }:
|
||||||
|
let
|
||||||
|
inherit (lib.nixvim) mkRaw;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
plugins = {
|
||||||
|
blink-cmp = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
completion.menu.border = "rounded";
|
||||||
|
|
||||||
|
signature = {
|
||||||
|
enabled = true;
|
||||||
|
|
||||||
|
trigger = {
|
||||||
|
enabled = true;
|
||||||
|
show_on_keyword = true;
|
||||||
|
show_on_insert = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
window = {
|
||||||
|
show_documentation = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
keymap = {
|
||||||
|
"<C-j>" = [
|
||||||
|
"select_next"
|
||||||
|
"fallback"
|
||||||
|
];
|
||||||
|
"<C-k>" = [
|
||||||
|
"select_prev"
|
||||||
|
"fallback"
|
||||||
|
];
|
||||||
|
|
||||||
|
"<c-l>" = [
|
||||||
|
"snippet_forward"
|
||||||
|
"fallback"
|
||||||
|
];
|
||||||
|
"<c-h>" = [
|
||||||
|
"snippet_backward"
|
||||||
|
"fallback"
|
||||||
|
];
|
||||||
|
"<c-u>" = [
|
||||||
|
"scroll_documentation_up"
|
||||||
|
"fallback"
|
||||||
|
];
|
||||||
|
"<c-d>" = [
|
||||||
|
"scroll_documentation_down"
|
||||||
|
"fallback"
|
||||||
|
];
|
||||||
|
"<C-space>" = [
|
||||||
|
(
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
function(cmp)
|
||||||
|
local ok,_ = pcall(require, "copilot")
|
||||||
|
if ok then
|
||||||
|
vim.g.copilot_no_tab_map = true
|
||||||
|
vim.g.copilot_assume_mapped = true
|
||||||
|
vim.g.copilot_tab_fallback = ""
|
||||||
|
|
||||||
|
local suggestion = require("copilot.suggestion")
|
||||||
|
if suggestion.is_visible() then
|
||||||
|
suggestion.accept()
|
||||||
|
else
|
||||||
|
if cmp.snippet_active() then
|
||||||
|
return cmp.select_and_accept()
|
||||||
|
else
|
||||||
|
return cmp.accept()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
''
|
||||||
|
)
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
schemastore = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
json = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
yaml = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
86
plugins/buffer.nix
Normal file
86
plugins/buffer.nix
Normal file
|
|
@ -0,0 +1,86 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
let
|
||||||
|
inherit (config.myvim.mkKey) mkKeymap wKeyObj;
|
||||||
|
inherit (lib.nixvim) mkRaw;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
plugins = {
|
||||||
|
bufferline = {
|
||||||
|
enable = true;
|
||||||
|
settings.options = rec {
|
||||||
|
diagnostics = "nvim_lsp";
|
||||||
|
buffer_close_icon = "";
|
||||||
|
close_icon = buffer_close_icon;
|
||||||
|
always_show_bufferline = true;
|
||||||
|
hover = {
|
||||||
|
enabled = true;
|
||||||
|
delay = 200;
|
||||||
|
reveal = [ "close" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
harpoon.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
wKeyList = [
|
||||||
|
(wKeyObj [
|
||||||
|
"<leader>b"
|
||||||
|
""
|
||||||
|
"buffers"
|
||||||
|
])
|
||||||
|
(wKeyObj [
|
||||||
|
"<leader><tab>"
|
||||||
|
""
|
||||||
|
"tabs"
|
||||||
|
])
|
||||||
|
];
|
||||||
|
|
||||||
|
keymaps = [
|
||||||
|
(mkKeymap "n" "<leader>b." (
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
function()
|
||||||
|
harpoon = require("harpoon")
|
||||||
|
harpoon:list():add()
|
||||||
|
end
|
||||||
|
''
|
||||||
|
) "Add File to Harpoon")
|
||||||
|
(mkKeymap "n" "<leader>bb" (
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
function()
|
||||||
|
harpoon = require("harpoon")
|
||||||
|
harpoon.ui:toggle_quick_menu(harpoon:list())
|
||||||
|
end
|
||||||
|
''
|
||||||
|
) "Harpoon ui")
|
||||||
|
|
||||||
|
(mkKeymap "n" "<leader>bp" "<cmd>:BufferLinePick<cr>" "Buffer Line Pick")
|
||||||
|
(mkKeymap "n" "<leader>qc" "<cmd>:bp | bd #<cr>" "Buffer close")
|
||||||
|
|
||||||
|
(mkKeymap "n" "<leader>bP" "<cmd>BufferLineTogglePin<cr>" "Buffer Pin")
|
||||||
|
(mkKeymap "n" "<leader>bd" "<cmd>BufferLineSortByDirectory<cr>" "Buffer Sort by dir")
|
||||||
|
(mkKeymap "n" "<leader>be" "<cmd>BufferLineSortByExtension<cr>" "Buffer Sort by ext")
|
||||||
|
(mkKeymap "n" "<leader>bt" "<cmd>BufferLineSortByTabs<cr>" "Buffer Sort by Tabs")
|
||||||
|
(mkKeymap "n" "<leader>bL" "<cmd>BufferLineCloseRight<cr>" "Buffer close all to right")
|
||||||
|
(mkKeymap "n" "<leader>bH" "<cmd>BufferLineCloseLeft<cr>" "Buffer close all to left")
|
||||||
|
(mkKeymap "n" "<leader>bc" "<cmd>BufferLineCloseOther<cr>"
|
||||||
|
"Buffer close all except the current buffer"
|
||||||
|
)
|
||||||
|
(mkKeymap "n" "<a-s-h>" "<cmd>BufferLineMovePrev<cr>" "Move buffer to left")
|
||||||
|
(mkKeymap "n" "<a-s-l>" "<cmd>BufferLineMoveNext<cr>" "Move buffer to right")
|
||||||
|
|
||||||
|
(mkKeymap "n" "<s-h>" ":BufferLineCyclePrev<cr>" "Buffer Previous")
|
||||||
|
(mkKeymap "n" "<s-l>" ":BufferLineCycleNext<cr>" "Buffer Next")
|
||||||
|
|
||||||
|
(mkKeymap "n" "<leader><tab>j" "<cmd>tabn<cr>" "Next Tab")
|
||||||
|
(mkKeymap "n" "<leader><tab>k" "<cmd>tabp<cr>" "Previous Tab")
|
||||||
|
(mkKeymap "n" "<leader><tab>l" "<cmd>tabn<cr>" "Next Tab")
|
||||||
|
(mkKeymap "n" "<leader><tab>h" "<cmd>tabp<cr>" "Previous Tab")
|
||||||
|
|
||||||
|
(mkKeymap "n" "<leader>qt" "<cmd>tabclose<cr>" "Close Tab")
|
||||||
|
(mkKeymap "n" "<leader><tab>q" "<cmd>tabclose<cr>" "Close Tab")
|
||||||
|
(mkKeymap "n" "<leader><tab>n" "<cmd>tabnew<cr>" "New Tab")
|
||||||
|
];
|
||||||
|
}
|
||||||
43
plugins/common/colorscheme.nix
Normal file
43
plugins/common/colorscheme.nix
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
{ config, ... }:
|
||||||
|
{
|
||||||
|
colorschemes = {
|
||||||
|
catppuccin = {
|
||||||
|
enable = false;
|
||||||
|
settings = {
|
||||||
|
integrations.native_lsp = {
|
||||||
|
enabled = true;
|
||||||
|
underlines = {
|
||||||
|
errors = [ "undercurl" ];
|
||||||
|
hints = [ "undercurl" ];
|
||||||
|
warnings = [ "undercurl" ];
|
||||||
|
information = [ "undercurl" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
flavor = "mocha";
|
||||||
|
italic = true;
|
||||||
|
bold = true;
|
||||||
|
dimInactive = false;
|
||||||
|
transparent_background = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
colorschemes.tokyonight = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
style = "night";
|
||||||
|
transparent = config.myvim.transparent;
|
||||||
|
styles = {
|
||||||
|
floats = if config.myvim.transparent then "transparent" else "dark";
|
||||||
|
sidebars = if config.myvim.transparent then "transparent" else "dark";
|
||||||
|
comments.italic = true;
|
||||||
|
functions.italic = true;
|
||||||
|
variables.italic = true;
|
||||||
|
keyword = {
|
||||||
|
italic = true;
|
||||||
|
bold = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
149
plugins/common/default.nix
Normal file
149
plugins/common/default.nix
Normal file
|
|
@ -0,0 +1,149 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
let
|
||||||
|
inherit (config.myvim) icons;
|
||||||
|
inherit (lib.nixvim) mkRaw;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
with builtins;
|
||||||
|
with lib;
|
||||||
|
map (fn: ./${fn}) (
|
||||||
|
filter (fn: (fn != "default.nix" && hasSuffix ".nix" "${fn}")) (attrNames (readDir ./.))
|
||||||
|
);
|
||||||
|
|
||||||
|
luaLoader.enable = false;
|
||||||
|
|
||||||
|
extraConfigLua =
|
||||||
|
with icons.diagnostics;
|
||||||
|
# lua
|
||||||
|
''
|
||||||
|
local function my_paste(reg)
|
||||||
|
return function(lines)
|
||||||
|
local content = vim.fn.getreg('"')
|
||||||
|
return vim.split(content, '\n')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if (os.getenv('SSH_TTY') ~= nil)
|
||||||
|
then
|
||||||
|
vim.g.clipboard = {
|
||||||
|
name = 'OSC 52',
|
||||||
|
copy = {
|
||||||
|
['+'] = require('vim.ui.clipboard.osc52').copy('+'),
|
||||||
|
['*'] = require('vim.ui.clipboard.osc52').copy('*'),
|
||||||
|
},
|
||||||
|
paste = {
|
||||||
|
["+"] = my_paste("+"),
|
||||||
|
["*"] = my_paste("*"),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
vim.opt.whichwrap:append("<>[]hl")
|
||||||
|
vim.opt.listchars:append("space:·")
|
||||||
|
|
||||||
|
-- below part set's the Diagnostic icons/colors
|
||||||
|
local signs = {
|
||||||
|
Hint = "${BoldHint}",
|
||||||
|
Info = "${BoldInformation}",
|
||||||
|
Warn = "${BoldWarning}",
|
||||||
|
Error = "${BoldError}",
|
||||||
|
}
|
||||||
|
|
||||||
|
for type, icon in pairs(signs) do
|
||||||
|
local hl = "DiagnosticSign" .. type
|
||||||
|
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl })
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
|
||||||
|
globals = {
|
||||||
|
mapleader = config.myvim.leader;
|
||||||
|
floating_window_options.border = config.myvim.border;
|
||||||
|
};
|
||||||
|
|
||||||
|
opts = {
|
||||||
|
clipboard = "unnamedplus";
|
||||||
|
cursorline = true;
|
||||||
|
cursorlineopt = "number";
|
||||||
|
|
||||||
|
pumblend = 0;
|
||||||
|
pumheight = 10;
|
||||||
|
|
||||||
|
expandtab = true;
|
||||||
|
shiftwidth = 2;
|
||||||
|
smartindent = true;
|
||||||
|
tabstop = 2;
|
||||||
|
softtabstop = 2;
|
||||||
|
|
||||||
|
ignorecase = true;
|
||||||
|
smartcase = true;
|
||||||
|
mouse = "a";
|
||||||
|
cmdheight = 0;
|
||||||
|
|
||||||
|
number = true;
|
||||||
|
relativenumber = true;
|
||||||
|
numberwidth = 2;
|
||||||
|
ruler = false;
|
||||||
|
|
||||||
|
signcolumn = "yes";
|
||||||
|
splitbelow = true;
|
||||||
|
splitright = true;
|
||||||
|
splitkeep = "screen";
|
||||||
|
termguicolors = true;
|
||||||
|
|
||||||
|
conceallevel = 2;
|
||||||
|
|
||||||
|
undofile = true;
|
||||||
|
|
||||||
|
wrap = false;
|
||||||
|
|
||||||
|
virtualedit = "block";
|
||||||
|
winminwidth = 5;
|
||||||
|
fileencoding = "utf-8";
|
||||||
|
list = true;
|
||||||
|
smoothscroll = true;
|
||||||
|
autoread = true;
|
||||||
|
autowrite = true;
|
||||||
|
swapfile = false;
|
||||||
|
fillchars = {
|
||||||
|
eob = " ";
|
||||||
|
};
|
||||||
|
|
||||||
|
updatetime = 500;
|
||||||
|
};
|
||||||
|
|
||||||
|
autoCmd = [
|
||||||
|
{
|
||||||
|
desc = "Highlight on yank";
|
||||||
|
event = [ "TextYankPost" ];
|
||||||
|
callback =
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
function()
|
||||||
|
vim.highlight.on_yank()
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
{
|
||||||
|
desc = "Check file changes";
|
||||||
|
event = [
|
||||||
|
"FocusGained"
|
||||||
|
"BufEnter"
|
||||||
|
"CursorHold"
|
||||||
|
];
|
||||||
|
pattern = [ "*" ];
|
||||||
|
callback =
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
function()
|
||||||
|
if vim.fn.mode() ~= "c" then
|
||||||
|
vim.cmd("checktime")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
extraLuaPackages = lp: with lp; [ luarocks ];
|
||||||
|
}
|
||||||
40
plugins/common/functions.nix
Normal file
40
plugins/common/functions.nix
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
{ lib, ... }:
|
||||||
|
{
|
||||||
|
myvim.mkKey = rec {
|
||||||
|
# set of functions that returns attrs for keymap list
|
||||||
|
mkKeymap = mode: key: action: desc: {
|
||||||
|
inherit mode key action;
|
||||||
|
|
||||||
|
options = {
|
||||||
|
inherit desc;
|
||||||
|
silent = true;
|
||||||
|
noremap = true;
|
||||||
|
remap = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# use when no description is to be passed
|
||||||
|
mkKeymap' =
|
||||||
|
mode: key: action:
|
||||||
|
mkKeymap mode key action null;
|
||||||
|
|
||||||
|
mkKeymapWithOpts =
|
||||||
|
mode: key: action: desc: opts:
|
||||||
|
(mkKeymap mode key action desc) // { options = opts; };
|
||||||
|
|
||||||
|
# for which-key icon generation
|
||||||
|
# accepts a list of strings and returns a list of objects
|
||||||
|
# [{ __unkeyed, icon, group, hidden <optional boolean> }]
|
||||||
|
wKeyObj =
|
||||||
|
with builtins;
|
||||||
|
list:
|
||||||
|
{
|
||||||
|
__unkeyed = elemAt list 0;
|
||||||
|
icon = elemAt list 1;
|
||||||
|
group = elemAt list 2;
|
||||||
|
}
|
||||||
|
// lib.optionalAttrs (length list > 3) {
|
||||||
|
hidden = elemAt list 3;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
193
plugins/common/icons.nix
Normal file
193
plugins/common/icons.nix
Normal file
|
|
@ -0,0 +1,193 @@
|
||||||
|
{
|
||||||
|
config.myvim.icons = {
|
||||||
|
kind = {
|
||||||
|
Array = "";
|
||||||
|
Boolean = "";
|
||||||
|
Class = "";
|
||||||
|
Color = "";
|
||||||
|
Constant = "";
|
||||||
|
Constructor = "";
|
||||||
|
Enum = "";
|
||||||
|
EnumMember = "";
|
||||||
|
Event = "";
|
||||||
|
Field = "";
|
||||||
|
File = "";
|
||||||
|
Folder = "";
|
||||||
|
Function = "";
|
||||||
|
Interface = "";
|
||||||
|
Key = "";
|
||||||
|
Keyword = "";
|
||||||
|
Method = "";
|
||||||
|
Module = "";
|
||||||
|
Namespace = "";
|
||||||
|
Null = "ﳠ";
|
||||||
|
Number = "";
|
||||||
|
Object = "";
|
||||||
|
Operator = "";
|
||||||
|
Package = "";
|
||||||
|
Property = "";
|
||||||
|
Reference = "";
|
||||||
|
Snippet = "";
|
||||||
|
String = "";
|
||||||
|
Struct = "";
|
||||||
|
Text = "";
|
||||||
|
TypeParameter = "";
|
||||||
|
Unit = "";
|
||||||
|
Value = "";
|
||||||
|
Variable = "";
|
||||||
|
Copilot = "";
|
||||||
|
TabNine = "⌬";
|
||||||
|
};
|
||||||
|
git = {
|
||||||
|
LineAdded = "";
|
||||||
|
LineModified = "";
|
||||||
|
LineRemoved = "";
|
||||||
|
FileDeleted = "";
|
||||||
|
FileIgnored = "";
|
||||||
|
FileRenamed = "";
|
||||||
|
FileStaged = "✓";
|
||||||
|
FileUnmerged = "";
|
||||||
|
FileMerged = "";
|
||||||
|
FileUnstaged = "";
|
||||||
|
FileUntracked = "◌";
|
||||||
|
FileChanged = "";
|
||||||
|
Copied = "";
|
||||||
|
Diff = "";
|
||||||
|
Repo = "";
|
||||||
|
Octoface = "";
|
||||||
|
Branch = "";
|
||||||
|
Added = " ";
|
||||||
|
Conflict = " ";
|
||||||
|
Deleted = "";
|
||||||
|
Ignored = " ";
|
||||||
|
Modified = " ";
|
||||||
|
Renamed = "";
|
||||||
|
Staged = "";
|
||||||
|
Unstaged = "";
|
||||||
|
Untracked = " ";
|
||||||
|
};
|
||||||
|
ui = {
|
||||||
|
lazy = {
|
||||||
|
ft = "";
|
||||||
|
lazy = " ";
|
||||||
|
loaded = "";
|
||||||
|
not_loaded = "";
|
||||||
|
};
|
||||||
|
ArrowCircleDown = "";
|
||||||
|
ArrowCircleLeft = "";
|
||||||
|
ArrowCircleRight = "";
|
||||||
|
ArrowCircleUp = "";
|
||||||
|
BoldArrowDown = "";
|
||||||
|
BoldArrowLeft = "";
|
||||||
|
BoldArrowRight = "";
|
||||||
|
BoldArrowUp = "";
|
||||||
|
BoldClose = "";
|
||||||
|
BoldDividerLeft = "";
|
||||||
|
BoldDividerRight = "";
|
||||||
|
BoldLineLeft = "▎";
|
||||||
|
BookMark = "";
|
||||||
|
BoxChecked = "";
|
||||||
|
Bug = "";
|
||||||
|
Stacks = "";
|
||||||
|
Scopes = "";
|
||||||
|
Watches = "";
|
||||||
|
DebugConsole = "";
|
||||||
|
Calendar = "";
|
||||||
|
Check = "";
|
||||||
|
ChevronRight = ">";
|
||||||
|
ChevronShortDown = "";
|
||||||
|
ChevronShortLeft = "";
|
||||||
|
ChevronShortRight = "";
|
||||||
|
ChevronShortUp = "";
|
||||||
|
Circle = "";
|
||||||
|
Close = "";
|
||||||
|
CloudDownload = "";
|
||||||
|
Code = "";
|
||||||
|
Comment = "";
|
||||||
|
Dashboard = "";
|
||||||
|
DividerLeft = "";
|
||||||
|
DividerRight = "";
|
||||||
|
DoubleChevronRight = "»";
|
||||||
|
Ellipsis = "";
|
||||||
|
EmptyFolder = "";
|
||||||
|
EmptyFolderOpen = "";
|
||||||
|
ExitCircle = "";
|
||||||
|
File = "";
|
||||||
|
FileSymlink = "";
|
||||||
|
Files = "";
|
||||||
|
FileRename = "";
|
||||||
|
FindFile = "";
|
||||||
|
FindText = "";
|
||||||
|
Fire = "";
|
||||||
|
Folder = "";
|
||||||
|
FolderOpen = "";
|
||||||
|
FolderSymlink = "";
|
||||||
|
Forward = "";
|
||||||
|
Gear = "";
|
||||||
|
History = "";
|
||||||
|
Lightbulb = "";
|
||||||
|
LineLeft = "▏";
|
||||||
|
LineMiddle = "│";
|
||||||
|
List = "";
|
||||||
|
Lock = "";
|
||||||
|
NewFile = "";
|
||||||
|
Note = "";
|
||||||
|
Package = "";
|
||||||
|
Pencil = "";
|
||||||
|
Plus = "";
|
||||||
|
Project = "";
|
||||||
|
Search = "";
|
||||||
|
SignIn = "";
|
||||||
|
SignOut = "";
|
||||||
|
Tab = "";
|
||||||
|
Table = "";
|
||||||
|
Target = "";
|
||||||
|
Telescope = "";
|
||||||
|
Text = "";
|
||||||
|
Tree = "";
|
||||||
|
Triangle = "";
|
||||||
|
TriangleShortArrowDown = "";
|
||||||
|
TriangleShortArrowLeft = "";
|
||||||
|
TriangleShortArrowRight = "";
|
||||||
|
TriangleShortArrowUp = "";
|
||||||
|
};
|
||||||
|
diagnostics = {
|
||||||
|
BoldError = "";
|
||||||
|
Error = "";
|
||||||
|
BoldWarning = "";
|
||||||
|
Warning = "";
|
||||||
|
BoldInformation = "";
|
||||||
|
Information = "";
|
||||||
|
BoldQuestion = "";
|
||||||
|
Question = "";
|
||||||
|
BoldHint = "";
|
||||||
|
Hint = "";
|
||||||
|
Debug = "";
|
||||||
|
Trace = "✎";
|
||||||
|
};
|
||||||
|
misc = {
|
||||||
|
Robot = "ﮧ";
|
||||||
|
Squirrel = "";
|
||||||
|
Tag = "";
|
||||||
|
Watch = "";
|
||||||
|
Smiley = "";
|
||||||
|
Package = "";
|
||||||
|
CircuitBoard = "";
|
||||||
|
LualineFmt = "";
|
||||||
|
};
|
||||||
|
nvtree_chad = {
|
||||||
|
default = "";
|
||||||
|
symlink = "";
|
||||||
|
folder = {
|
||||||
|
default = "";
|
||||||
|
empty = "";
|
||||||
|
empty_open = "";
|
||||||
|
open = "";
|
||||||
|
symlink = "";
|
||||||
|
symlink_open = "";
|
||||||
|
arrow_open = "";
|
||||||
|
arrow_closed = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
309
plugins/common/mappings.nix
Normal file
309
plugins/common/mappings.nix
Normal file
|
|
@ -0,0 +1,309 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
let
|
||||||
|
inherit (config.myvim.mkKey) mkKeymap mkKeymapWithOpts wKeyObj;
|
||||||
|
inherit (lib.nixvim) mkRaw;
|
||||||
|
|
||||||
|
# general mappings
|
||||||
|
v = [
|
||||||
|
(mkKeymap "v" "<c-s>" "<esc>:w<cr>" "Saving File")
|
||||||
|
(mkKeymap "v" "<c-c>" "<esc>" "Escape")
|
||||||
|
|
||||||
|
(mkKeymap "v" "<a-j>" ":m '>+1<cr>gv-gv" "Move Selected Line Down")
|
||||||
|
(mkKeymap "v" "<a-k>" ":m '<lt>-2<CR>gv-gv" "Move Selected Line Up")
|
||||||
|
|
||||||
|
(mkKeymap "v" "<" "<gv" "Indent out")
|
||||||
|
(mkKeymap "v" ">" ">gv" "Indent in")
|
||||||
|
|
||||||
|
(mkKeymap "v" "<space>" "<Nop>" "Mapped to Nothing")
|
||||||
|
];
|
||||||
|
|
||||||
|
xv = [
|
||||||
|
(mkKeymapWithOpts "x" "j" ''v:count || mode(1)[0:1] == "no" ? "j" : "gj"'' "Move down" {
|
||||||
|
expr = true;
|
||||||
|
})
|
||||||
|
(mkKeymapWithOpts "x" "k" ''v:count || mode(1)[0:1] == "no" ? "k" : "gk"'' "Move up" {
|
||||||
|
expr = true;
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
insert = [
|
||||||
|
(mkKeymap "i" "jk" "<esc>" "Normal Mode")
|
||||||
|
(mkKeymap "i" "<c-s>" "<esc>:w ++p<cr>" "Save file")
|
||||||
|
(mkKeymap "i" "<a-j>" "<esc>:m .+1<cr>==gi" "Move Line Down")
|
||||||
|
(mkKeymap "i" "<a-k>" "<esc>:m .-2<cr>==gi" "Move Line Up")
|
||||||
|
];
|
||||||
|
|
||||||
|
normal = [
|
||||||
|
(mkKeymap "n" "<c-a-h>" ":lua require('smart-splits').resize_left()<cr>" "Resize Left")
|
||||||
|
(mkKeymap "n" "<c-a-j>" ":lua require('smart-splits').resize_down()<cr>" "Resize Down")
|
||||||
|
(mkKeymap "n" "<c-a-k>" ":lua require('smart-splits').resize_up()<cr>" "Resize Up")
|
||||||
|
(mkKeymap "n" "<c-a-l>" ":lua require('smart-splits').resize_right()<cr>" "Resize Right")
|
||||||
|
(mkKeymap "n" "?" (
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
function()
|
||||||
|
require('flash').jump({
|
||||||
|
forward = true, wrap = true, multi_window = true
|
||||||
|
})
|
||||||
|
end
|
||||||
|
''
|
||||||
|
) "Flash Search")
|
||||||
|
|
||||||
|
(mkKeymap "n" "<c-h>" ":lua require('smart-splits').move_cursor_left()<cr>" "Move Cursor Left")
|
||||||
|
(mkKeymap "n" "<c-j>" ":lua require('smart-splits').move_cursor_down()<cr>" "Move Cursor Down")
|
||||||
|
(mkKeymap "n" "<c-k>" ":lua require('smart-splits').move_cursor_up()<cr>" "Move Cursor Up")
|
||||||
|
(mkKeymap "n" "<c-l>" ":lua require('smart-splits').move_cursor_right()<cr>" "Move Cursor Right")
|
||||||
|
(mkKeymap "n" "<c-\\>" ":lua require('smart-splits').move_cursor_previous()<cr>"
|
||||||
|
"Move Cursor Previous"
|
||||||
|
)
|
||||||
|
(mkKeymap "n" "<leader>dd"
|
||||||
|
(
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
function()
|
||||||
|
local any_diff = false
|
||||||
|
for _, w in ipairs(vim.api.nvim_tabpage_list_wins(0)) do
|
||||||
|
if vim.api.nvim_win_get_option(w, "diff") then
|
||||||
|
any_diff = true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if any_diff then
|
||||||
|
vim.cmd("windo diffoff")
|
||||||
|
else
|
||||||
|
vim.cmd("windo diffthis")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
''
|
||||||
|
)
|
||||||
|
|
||||||
|
"Toggle Diff the opened windows"
|
||||||
|
)
|
||||||
|
|
||||||
|
(mkKeymap "n" "<c-s>" "<cmd>w ++p<cr>" "Save the file")
|
||||||
|
(mkKeymap "n" "<a-+>" "<C-a>" "Increase Number")
|
||||||
|
(mkKeymap "n" "<a-->" "<C-x>" "Decrease Number")
|
||||||
|
|
||||||
|
(mkKeymap "n" "<a-j>" "<cmd>m .+1<cr>==" "Move line Down")
|
||||||
|
(mkKeymap "n" "<a-k>" "<cmd>m .-2<cr>==" "Move line up")
|
||||||
|
|
||||||
|
(mkKeymap "n" "<leader>qq" "<cmd>quitall!<cr>" "Quit!")
|
||||||
|
(mkKeymap "n" "<leader>qw" (
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
function()
|
||||||
|
local wins = vim.api.nvim_tabpage_list_wins(0)
|
||||||
|
if #wins > 1 then
|
||||||
|
local ok, err = pcall(vim.cmd, 'close')
|
||||||
|
if not ok then
|
||||||
|
vim.notify("Cannot close the last window!", vim.log.levels.WARN)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
vim.notify("Cannot close the last window!", vim.log.levels.WARN)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
''
|
||||||
|
) "Close Window!")
|
||||||
|
|
||||||
|
(mkKeymap "n" "<leader><leader>" "<cmd>nohl<cr>" "no highlight!")
|
||||||
|
(mkKeymap "n" "<esc>" "<esc>:nohlsearch<cr>" "escape")
|
||||||
|
(mkKeymap "n" "<leader>A" "ggVG" "select All")
|
||||||
|
|
||||||
|
(mkKeymap "n" "<leader>|" "<cmd>vsplit<cr>" "vertical split")
|
||||||
|
(mkKeymap "n" "<leader>-" "<cmd>split<cr>" "horizontal split")
|
||||||
|
|
||||||
|
# quickfix
|
||||||
|
(mkKeymap "n" "<leader>cn" "<cmd>cnext<cr>" "quickfix next")
|
||||||
|
(mkKeymap "n" "<leader>cp" "<cmd>cprev<cr>" "quickfix prev")
|
||||||
|
(mkKeymap "n" "<leader>cq" "<cmd>cclose<cr>" "quit quickfix")
|
||||||
|
|
||||||
|
(mkKeymap "n" "<leader>id" (
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
function()
|
||||||
|
local date = "# " .. os.date("%d-%m-%y")
|
||||||
|
local row, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||||
|
local line = vim.api.nvim_get_current_line()
|
||||||
|
|
||||||
|
-- Insert date at cursor position
|
||||||
|
local new_line = line:sub(1, col) .. date .. line:sub(col + 1)
|
||||||
|
vim.api.nvim_set_current_line(new_line)
|
||||||
|
|
||||||
|
-- Move cursor to next line
|
||||||
|
vim.api.nvim_win_set_cursor(0, { row + 1, 0 })
|
||||||
|
end
|
||||||
|
''
|
||||||
|
) "Insert Date at cursor position")
|
||||||
|
|
||||||
|
(mkKeymap "n" "n" "nzzzv" "Move to center")
|
||||||
|
(mkKeymap "n" "N" "Nzzzv" "Moving to center")
|
||||||
|
(mkKeymap "n" "<leader>uC" (
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
require('stay-centered').toggle
|
||||||
|
''
|
||||||
|
) "Toggle stay-centered.nvim")
|
||||||
|
(mkKeymap "n" "<leader>ft" (
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
function()
|
||||||
|
vim.ui.input({ prompt = "Enter FileType: " }, function(input)
|
||||||
|
local ft = input
|
||||||
|
if not input or input == "" then
|
||||||
|
ft = vim.bo.filetype
|
||||||
|
end
|
||||||
|
vim.o.filetype = ft
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
''
|
||||||
|
) "Set Filetype")
|
||||||
|
|
||||||
|
(mkKeymap "n" "<leader>o" (
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
function()
|
||||||
|
local word = vim.fn.expand("<cfile>") -- Gets file-like word under cursor
|
||||||
|
|
||||||
|
if word:match("^https?://") then
|
||||||
|
-- Detect OS and choose browser opener
|
||||||
|
local open_cmd
|
||||||
|
if vim.fn.has("macunix") == 1 then
|
||||||
|
open_cmd = "open"
|
||||||
|
elseif vim.fn.has("unix") == 1 then
|
||||||
|
open_cmd = "xdg-open"
|
||||||
|
elseif vim.fn.has("win32") == 1 or vim.fn.has("win64") == 1 then
|
||||||
|
open_cmd = "start"
|
||||||
|
else
|
||||||
|
print("Unsupported OS")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.fn.jobstart({ open_cmd, word }, { detach = true })
|
||||||
|
|
||||||
|
elseif vim.fn.filereadable(word) == 1 or vim.fn.isdirectory(word) == 1 then
|
||||||
|
-- It's a file or directory; open in current window
|
||||||
|
vim.cmd("edit " .. vim.fn.fnameescape(word))
|
||||||
|
else
|
||||||
|
print("Not a valid file or URL: " .. word)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
''
|
||||||
|
) "Open")
|
||||||
|
|
||||||
|
(mkKeymapWithOpts "n" "j" ''v:count || mode(1)[0:1] == "no" ? "j" : "gj"'' "Move down" {
|
||||||
|
expr = true;
|
||||||
|
})
|
||||||
|
(mkKeymapWithOpts "n" "k" ''v:count || mode(1)[0:1] == "no" ? "k" : "gk"'' "Move up" {
|
||||||
|
expr = true;
|
||||||
|
})
|
||||||
|
|
||||||
|
];
|
||||||
|
in
|
||||||
|
{
|
||||||
|
keymaps = insert ++ normal ++ v ++ xv;
|
||||||
|
|
||||||
|
wKeyList = [
|
||||||
|
(wKeyObj [
|
||||||
|
"<leader>A"
|
||||||
|
""
|
||||||
|
""
|
||||||
|
"true"
|
||||||
|
])
|
||||||
|
(wKeyObj [
|
||||||
|
"<leader><leader>"
|
||||||
|
""
|
||||||
|
""
|
||||||
|
"true"
|
||||||
|
])
|
||||||
|
(wKeyObj [
|
||||||
|
"<leader>q"
|
||||||
|
""
|
||||||
|
"quit/session"
|
||||||
|
])
|
||||||
|
(wKeyObj [
|
||||||
|
"<leader>i"
|
||||||
|
""
|
||||||
|
"Insert"
|
||||||
|
])
|
||||||
|
(wKeyObj [
|
||||||
|
"<leader>v"
|
||||||
|
""
|
||||||
|
"Insert"
|
||||||
|
])
|
||||||
|
(wKeyObj [
|
||||||
|
"z"
|
||||||
|
""
|
||||||
|
"fold"
|
||||||
|
])
|
||||||
|
(wKeyObj [
|
||||||
|
"g"
|
||||||
|
""
|
||||||
|
"goto"
|
||||||
|
])
|
||||||
|
(wKeyObj [
|
||||||
|
"["
|
||||||
|
""
|
||||||
|
"next"
|
||||||
|
])
|
||||||
|
(wKeyObj [
|
||||||
|
"]"
|
||||||
|
""
|
||||||
|
"prev"
|
||||||
|
])
|
||||||
|
(wKeyObj [
|
||||||
|
"<leader>u"
|
||||||
|
""
|
||||||
|
"ui"
|
||||||
|
])
|
||||||
|
(wKeyObj [
|
||||||
|
"<leader>o"
|
||||||
|
""
|
||||||
|
"Open"
|
||||||
|
])
|
||||||
|
(wKeyObj [
|
||||||
|
"<leader>d"
|
||||||
|
""
|
||||||
|
"diff"
|
||||||
|
])
|
||||||
|
(wKeyObj [
|
||||||
|
"<leader>|"
|
||||||
|
""
|
||||||
|
"vsplit"
|
||||||
|
])
|
||||||
|
(wKeyObj [
|
||||||
|
"<leader>-"
|
||||||
|
""
|
||||||
|
"split"
|
||||||
|
])
|
||||||
|
(wKeyObj [
|
||||||
|
"<leader>c"
|
||||||
|
""
|
||||||
|
"quickfix"
|
||||||
|
])
|
||||||
|
];
|
||||||
|
|
||||||
|
extraConfigLua = # lua
|
||||||
|
''
|
||||||
|
-- Use black hole register for 'x', 'X', 'c', 'C'
|
||||||
|
vim.api.nvim_set_keymap('n', 'x', '"_x', { noremap = true, silent = true })
|
||||||
|
vim.api.nvim_set_keymap('n', 'X', '"_X', { noremap = true, silent = true })
|
||||||
|
vim.api.nvim_set_keymap('n', 'c', '"_c', { noremap = true, silent = true })
|
||||||
|
vim.api.nvim_set_keymap('n', 'C', '"_C', { noremap = true, silent = true })
|
||||||
|
|
||||||
|
-- Visual mode
|
||||||
|
vim.api.nvim_set_keymap('v', 'x', '"_d', { noremap = true, silent = true })
|
||||||
|
vim.api.nvim_set_keymap('v', 'X', '"_d', { noremap = true, silent = true })
|
||||||
|
vim.api.nvim_set_keymap('v', 'c', '"_c', { noremap = true, silent = true })
|
||||||
|
vim.api.nvim_set_keymap('v', 'C', '"_c', { noremap = true, silent = true })
|
||||||
|
|
||||||
|
-- In visual mode, paste from the clipboard without overwriting it
|
||||||
|
vim.api.nvim_set_keymap("v", "p", '"_dP', { noremap = true, silent = true })
|
||||||
|
|
||||||
|
-- Only this hack works in command mode
|
||||||
|
vim.cmd([[
|
||||||
|
cnoremap <C-j> <C-n>
|
||||||
|
cnoremap <C-k> <C-p>
|
||||||
|
]])
|
||||||
|
'';
|
||||||
|
}
|
||||||
46
plugins/common/options.nix
Normal file
46
plugins/common/options.nix
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
{ lib, ... }:
|
||||||
|
with lib;
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
wKeyList = mkOption {
|
||||||
|
type = types.listOf types.attrs;
|
||||||
|
};
|
||||||
|
|
||||||
|
myvim = {
|
||||||
|
mkKey = mkOption {
|
||||||
|
type = types.attrs;
|
||||||
|
default = { };
|
||||||
|
};
|
||||||
|
|
||||||
|
icons = mkOption {
|
||||||
|
type = types.attrs;
|
||||||
|
default = { };
|
||||||
|
};
|
||||||
|
|
||||||
|
leader = mkOption {
|
||||||
|
description = "The leader key for nvim.";
|
||||||
|
type = types.str;
|
||||||
|
default = " ";
|
||||||
|
};
|
||||||
|
|
||||||
|
border = mkOption {
|
||||||
|
description = "The border style for nvim.";
|
||||||
|
type = types.enum [
|
||||||
|
"single"
|
||||||
|
"double"
|
||||||
|
"rounded"
|
||||||
|
"solid"
|
||||||
|
"shadow"
|
||||||
|
"curved"
|
||||||
|
"bold"
|
||||||
|
"none"
|
||||||
|
];
|
||||||
|
default = "rounded";
|
||||||
|
};
|
||||||
|
|
||||||
|
transparent = mkEnableOption "transparent" // {
|
||||||
|
default = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
52
plugins/common/plugins.nix
Normal file
52
plugins/common/plugins.nix
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
{ pkgs, config, ... }:
|
||||||
|
let
|
||||||
|
inherit (config.myvim.mkKey) mkKeymap;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
extraPlugins = with pkgs.vimPlugins; [
|
||||||
|
stay-centered-nvim
|
||||||
|
];
|
||||||
|
|
||||||
|
plugins = {
|
||||||
|
comment = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
toggler.line = "<leader>/";
|
||||||
|
opleader.line = "<leader>/";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
flash = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
modes.char.enabled = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
lz-n.enable = true;
|
||||||
|
nvim-autopairs.enable = true;
|
||||||
|
nvim-surround.enable = true;
|
||||||
|
smart-splits.enable = true;
|
||||||
|
trim.enable = true;
|
||||||
|
visual-multi.enable = true;
|
||||||
|
web-devicons.enable = true;
|
||||||
|
|
||||||
|
which-key = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
spec = config.wKeyList;
|
||||||
|
preset = "helix";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
opts = {
|
||||||
|
timeout = true;
|
||||||
|
timeoutlen = 250;
|
||||||
|
};
|
||||||
|
|
||||||
|
keymaps = [
|
||||||
|
(mkKeymap "n" "<leader>vt" "<cmd>:lua require('flash').treesitter()<cr>" "Select Treesitter Node")
|
||||||
|
(mkKeymap "n" "<leader>ut" ":TrimToggle<cr>" "Toggle Trim")
|
||||||
|
];
|
||||||
|
}
|
||||||
33
plugins/default.nix
Normal file
33
plugins/default.nix
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
{ lib, ... }:
|
||||||
|
let
|
||||||
|
mapAttrsMaybe =
|
||||||
|
f: attrs:
|
||||||
|
lib.pipe attrs [
|
||||||
|
(lib.mapAttrsToList f)
|
||||||
|
(builtins.filter (x: x != null))
|
||||||
|
builtins.listToAttrs
|
||||||
|
];
|
||||||
|
forAllNixFiles =
|
||||||
|
dir: f:
|
||||||
|
if builtins.pathExists dir then
|
||||||
|
lib.pipe dir [
|
||||||
|
builtins.readDir
|
||||||
|
(mapAttrsMaybe (
|
||||||
|
fn: type:
|
||||||
|
if type == "regular" then
|
||||||
|
let
|
||||||
|
name = lib.removeSuffix ".nix" fn;
|
||||||
|
in
|
||||||
|
lib.nameValuePair name (f "${dir}/${fn}")
|
||||||
|
else if type == "directory" && builtins.pathExists "${dir}/${fn}/default.nix" then
|
||||||
|
lib.nameValuePair fn (f "${dir}/${fn}")
|
||||||
|
else
|
||||||
|
null
|
||||||
|
))
|
||||||
|
]
|
||||||
|
else
|
||||||
|
{ };
|
||||||
|
in
|
||||||
|
{
|
||||||
|
flake.myvimPlugins = forAllNixFiles ./. (fn: fn);
|
||||||
|
}
|
||||||
150
plugins/git.nix
Normal file
150
plugins/git.nix
Normal file
|
|
@ -0,0 +1,150 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
let
|
||||||
|
inherit (lib.nixvim) mkRaw;
|
||||||
|
inherit (config.myvim) icons;
|
||||||
|
inherit (config.myvim.mkKey) mkKeymap wKeyObj;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
plugins = {
|
||||||
|
git-conflict = {
|
||||||
|
enable = true;
|
||||||
|
settings.default_mappings = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
gitsigns = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
current_line_blame = true;
|
||||||
|
preview_config = {
|
||||||
|
border = "rounded";
|
||||||
|
};
|
||||||
|
signs = with icons.ui; {
|
||||||
|
add.text = "${LineLeft}";
|
||||||
|
change.text = "${LineLeft}";
|
||||||
|
delete.text = "${LineLeft}";
|
||||||
|
topdelete.text = "${Triangle}";
|
||||||
|
changedelete.text = "${BoldLineLeft}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
wKeyList = [
|
||||||
|
(wKeyObj [
|
||||||
|
"<leader>g"
|
||||||
|
""
|
||||||
|
"git"
|
||||||
|
])
|
||||||
|
(wKeyObj [
|
||||||
|
"<leader>gh"
|
||||||
|
""
|
||||||
|
"hunks"
|
||||||
|
])
|
||||||
|
(wKeyObj [
|
||||||
|
"<leader>gb"
|
||||||
|
""
|
||||||
|
"blame"
|
||||||
|
])
|
||||||
|
];
|
||||||
|
|
||||||
|
keymaps = [
|
||||||
|
|
||||||
|
# Navigation
|
||||||
|
(mkKeymap "n" "]h" (
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
function ()
|
||||||
|
if vim.wo.diff then
|
||||||
|
vim.cmd.normal ({ ' ]c', bang = true})
|
||||||
|
else
|
||||||
|
require('gitsigns').nav_hunk('next')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
''
|
||||||
|
) "Next Hunk")
|
||||||
|
|
||||||
|
(mkKeymap "n" "[h" (
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
function()
|
||||||
|
if vim.wo.diff then
|
||||||
|
vim.cmd.normal({'[c', bang = true})
|
||||||
|
else
|
||||||
|
require('gitsigns').nav_hunk('prev')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
''
|
||||||
|
) "Prev Hunk")
|
||||||
|
|
||||||
|
(mkKeymap "n" "]H" (mkRaw "function() require('gitsigns').nav_hunk('last') end") "Last Hunk")
|
||||||
|
|
||||||
|
(mkKeymap "n" "[H" (mkRaw "function() require('gitsigns').nav_hunk('first') end") "First Hunk")
|
||||||
|
|
||||||
|
# Stage / Reset
|
||||||
|
(mkKeymap "n" "<leader>gs" "<cmd>lua require('gitsigns').stage_buffer()<CR>" "Stage Buffer")
|
||||||
|
(mkKeymap "v" "<leader>gs" (
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
function()
|
||||||
|
require('gitsigns').stage_hunk({ vim.fn.line('.'), vim.fn.line('v') })
|
||||||
|
end
|
||||||
|
''
|
||||||
|
) "Stage/Unstage Selection")
|
||||||
|
|
||||||
|
(mkKeymap "n" "<leader>gr" "<cmd>lua require('gitsigns').reset_buffer()<CR>" "Reset Buffer")
|
||||||
|
(mkKeymap "v" "<leader>gr" (
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
function()
|
||||||
|
require('gitsigns').reset_hunk({ vim.fn.line('.'), vim.fn.line('v') })
|
||||||
|
end
|
||||||
|
''
|
||||||
|
) "Reset Selection")
|
||||||
|
|
||||||
|
# Undo
|
||||||
|
(mkKeymap "n" "<leader>gu" "<cmd>lua require('gitsigns').undo_stage_hunk()<CR>" "Undo Stage Hunk")
|
||||||
|
|
||||||
|
# Preview / Diff
|
||||||
|
(mkKeymap "n" "<leader>gp" "<cmd>lua require('gitsigns').preview_hunk_inline()<CR>"
|
||||||
|
"Preview Hunk Inline"
|
||||||
|
)
|
||||||
|
(mkKeymap "n" "<leader>gP" "<cmd>lua require('gitsigns').preview_hunk()<CR>" "Preview Hunk (Popup)")
|
||||||
|
(mkKeymap "v" "<leader>gp" (
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
function()
|
||||||
|
require('gitsigns').preview_hunk_inline({ vim.fn.line('.'), vim.fn.line('v') })
|
||||||
|
end
|
||||||
|
''
|
||||||
|
) "Preview Selection")
|
||||||
|
|
||||||
|
(mkKeymap "n" "<leader>dg" "<cmd>lua require('gitsigns').diffthis()<CR>" "Git Diff ")
|
||||||
|
(mkKeymap "n" "<leader>dG" (mkRaw "function() require('gitsigns').diffthis('~') end")
|
||||||
|
"Git diff last commit (HEAD~)"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Blame
|
||||||
|
(mkKeymap "n" "<leader>gk" (mkRaw "function() require('gitsigns').blame_line({ full = true }) end")
|
||||||
|
"Blame Line (Full)"
|
||||||
|
)
|
||||||
|
(mkKeymap "n" "<leader>gK" ":lua require('gitsigns').blame()<CR>" "Blame File")
|
||||||
|
|
||||||
|
# Quickfix
|
||||||
|
(mkKeymap "n" "<leader>gq" ":lua require('gitsigns').setqflist()<CR>" "Hunks to Quickfix")
|
||||||
|
(mkKeymap "n" "<leader>gQ" (mkRaw "function() require('gitsigns').setqflist('all') end")
|
||||||
|
"All Hunks to Quickfix"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Toggles
|
||||||
|
(mkKeymap "n" "<leader>gb" "<cmd>lua require('gitsigns').toggle_current_line_blame()<CR>"
|
||||||
|
"Toggle Blame (Line)"
|
||||||
|
)
|
||||||
|
(mkKeymap "n" "<leader>gw" "<cmd>lua require('gitsigns').toggle_word_diff()<CR>" "Toggle Word Diff")
|
||||||
|
|
||||||
|
# Text object
|
||||||
|
(mkKeymap "o" "ih" ":<C-U>Gitsigns select_hunk<CR>" "Select Hunk")
|
||||||
|
(mkKeymap "x" "ih" ":<C-U>Gitsigns select_hunk<CR>" "Select Hunk")
|
||||||
|
|
||||||
|
];
|
||||||
|
}
|
||||||
9
plugins/lang/default.nix
Normal file
9
plugins/lang/default.nix
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
{ lib, ... }:
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
with builtins;
|
||||||
|
with lib;
|
||||||
|
map (fn: ./${fn}) (
|
||||||
|
filter (fn: (fn != "default.nix" && !hasSuffix ".md" "${fn}")) (attrNames (readDir ./.))
|
||||||
|
);
|
||||||
|
}
|
||||||
3
plugins/lang/go.nix
Normal file
3
plugins/lang/go.nix
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
plugins.lsp.servers.gopls.enable = true;
|
||||||
|
}
|
||||||
7
plugins/lang/haskell.nix
Normal file
7
plugins/lang/haskell.nix
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
plugins.lsp.servers.hls = {
|
||||||
|
enable = true;
|
||||||
|
installGhc = false;
|
||||||
|
packageFallback = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
33
plugins/lang/lua.nix
Normal file
33
plugins/lang/lua.nix
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
{ lib, pkgs, ... }:
|
||||||
|
{
|
||||||
|
plugins = {
|
||||||
|
lsp.servers = {
|
||||||
|
lua_ls = {
|
||||||
|
enable = true;
|
||||||
|
settings.diagnostics = {
|
||||||
|
disable = [ "miss-name" ];
|
||||||
|
globals = [
|
||||||
|
"vim"
|
||||||
|
"cmp"
|
||||||
|
"Snacks"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
conform-nvim = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
formatters_by_ft = {
|
||||||
|
lua = [ "stylua" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
formatters = {
|
||||||
|
stylua = {
|
||||||
|
command = "${lib.getExe pkgs.stylua}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
85
plugins/lang/md.nix
Normal file
85
plugins/lang/md.nix
Normal file
|
|
@ -0,0 +1,85 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
inherit (config.myvim.mkKey) wKeyObj;
|
||||||
|
inherit (lib.nixvim) mkRaw;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
plugins = {
|
||||||
|
img-clip.enable = true;
|
||||||
|
markdown-preview.enable = true;
|
||||||
|
render-markdown.enable = true;
|
||||||
|
|
||||||
|
mkdnflow = {
|
||||||
|
enable = true;
|
||||||
|
toDo.symbols = [
|
||||||
|
" "
|
||||||
|
"⧖"
|
||||||
|
"x"
|
||||||
|
];
|
||||||
|
mappings = {
|
||||||
|
MkdnEnter = {
|
||||||
|
key = "<cr>";
|
||||||
|
modes = [
|
||||||
|
"n"
|
||||||
|
"i"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
MkdnToggleToDo = {
|
||||||
|
key = "<c-space>";
|
||||||
|
modes = [
|
||||||
|
"n"
|
||||||
|
"i"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
glow = {
|
||||||
|
enable = true;
|
||||||
|
lazyLoad.settings = {
|
||||||
|
ft = "markdown";
|
||||||
|
cmd = "Glow";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
conform-nvim.settings = {
|
||||||
|
formatters_by_ft = {
|
||||||
|
markdown = {
|
||||||
|
__unkeyed-1 = "prettierd";
|
||||||
|
__unkeyed-2 = "prettier";
|
||||||
|
stop_after_first = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
autoCmd = [
|
||||||
|
{
|
||||||
|
desc = "Setup Markdown mappings";
|
||||||
|
event = "Filetype";
|
||||||
|
pattern = "markdown";
|
||||||
|
callback =
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
function()
|
||||||
|
-- Set keymap: <leader>p to save and convert to PDF using pandoc
|
||||||
|
vim.api.nvim_buf_set_keymap(0, 'n', '<leader>pg', '<cmd>Glow<CR>', { desc = "Markdown Glow preview", noremap = true, silent = true })
|
||||||
|
vim.api.nvim_buf_set_keymap(0, 'n', '<leader>pb', '<cmd>MarkdownPreview<CR>', { desc = "Markdown Browser Preview", noremap = true, silent = true })
|
||||||
|
vim.api.nvim_buf_set_keymap(0, 'n', '<leader>pp', '<cmd> lua require("md-pdf").convert_md_to_pdf()<CR>', { desc = "Markdown Print pdf", noremap = true, silent = true })
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
wKeyList = [
|
||||||
|
(wKeyObj [
|
||||||
|
"<leader>p"
|
||||||
|
""
|
||||||
|
"preview"
|
||||||
|
])
|
||||||
|
];
|
||||||
|
}
|
||||||
26
plugins/lang/nix.nix
Normal file
26
plugins/lang/nix.nix
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
{ lib, pkgs, ... }:
|
||||||
|
{
|
||||||
|
plugins = {
|
||||||
|
lsp.servers = {
|
||||||
|
nil_ls = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
statix = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
conform-nvim.settings = {
|
||||||
|
formatters_by_ft = {
|
||||||
|
nix = [ "nixfmt-rfc-style" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
formatters = {
|
||||||
|
nixfmt-rfc-style = {
|
||||||
|
command = "${lib.getExe pkgs.nixfmt-rfc-style}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
35
plugins/lang/python.nix
Normal file
35
plugins/lang/python.nix
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
{ lib, pkgs, ... }:
|
||||||
|
{
|
||||||
|
plugins = {
|
||||||
|
lsp.servers = {
|
||||||
|
pyright = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
pyright.diseableOrganizeInputs = true;
|
||||||
|
python.analysis.ignore = [ "*" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
ruff.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
conform-nvim.settings = {
|
||||||
|
formatters_by_ft = {
|
||||||
|
python = [
|
||||||
|
"black"
|
||||||
|
"isort"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
formatters = {
|
||||||
|
black = {
|
||||||
|
command = "${lib.getExe pkgs.black}";
|
||||||
|
};
|
||||||
|
isort = {
|
||||||
|
command = "${lib.getExe pkgs.isort}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
6
plugins/lang/ruby.nix
Normal file
6
plugins/lang/ruby.nix
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
plugins.lsp.servers = {
|
||||||
|
rubocop.enable = true;
|
||||||
|
ruby_lsp.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
33
plugins/lang/shell.nix
Normal file
33
plugins/lang/shell.nix
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
{ lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
formatter = [
|
||||||
|
"shellcheck"
|
||||||
|
"shellharden"
|
||||||
|
"shfmt"
|
||||||
|
];
|
||||||
|
in
|
||||||
|
{
|
||||||
|
plugins = {
|
||||||
|
lsp.servers.bashls.enable = true;
|
||||||
|
|
||||||
|
conform-nvim.settings = {
|
||||||
|
formatters_by_ft = {
|
||||||
|
bash = formatter;
|
||||||
|
sh = formatter;
|
||||||
|
zsh = formatter;
|
||||||
|
};
|
||||||
|
|
||||||
|
formatters = {
|
||||||
|
shellcheck = {
|
||||||
|
command = lib.getExe pkgs.shellcheck;
|
||||||
|
};
|
||||||
|
shellharden = {
|
||||||
|
command = lib.getExe pkgs.shellharden;
|
||||||
|
};
|
||||||
|
shfmt = {
|
||||||
|
command = lib.getExe pkgs.shfmt;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
18
plugins/lang/tofu.nix
Normal file
18
plugins/lang/tofu.nix
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
{ lib, pkgs, ... }:
|
||||||
|
{
|
||||||
|
plugins = {
|
||||||
|
lsp.servers.terraformls = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
terraform.path = lib.getExe pkgs.opentofu;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
conform-nvim.settings = {
|
||||||
|
formatters_by_ft = {
|
||||||
|
terraform = [ "terraform_fmt" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
51
plugins/lang/webdev.nix
Normal file
51
plugins/lang/webdev.nix
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
{ lib, pkgs, ... }:
|
||||||
|
{
|
||||||
|
plugins = {
|
||||||
|
lsp.servers = {
|
||||||
|
cssls.enable = true;
|
||||||
|
eslint.enable = true;
|
||||||
|
html.enable = true;
|
||||||
|
jsonls.enable = true;
|
||||||
|
ts_ls.enable = true;
|
||||||
|
tailwindcss.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
conform-nvim.settings = {
|
||||||
|
formatters_by_ft = {
|
||||||
|
css = {
|
||||||
|
__unkeyed-1 = "prettierd";
|
||||||
|
__unkeyed-2 = "prettier";
|
||||||
|
stop_after_first = true;
|
||||||
|
};
|
||||||
|
html = {
|
||||||
|
__unkeyed-1 = "prettierd";
|
||||||
|
__unkeyed-2 = "prettier";
|
||||||
|
stop_after_first = true;
|
||||||
|
};
|
||||||
|
javascript = {
|
||||||
|
__unkeyed-1 = "prettierd";
|
||||||
|
__unkeyed-2 = "prettier";
|
||||||
|
stop_after_first = true;
|
||||||
|
};
|
||||||
|
json = [ "jq" ];
|
||||||
|
typescript = {
|
||||||
|
__unkeyed-1 = "prettierd";
|
||||||
|
__unkeyed-2 = "prettier";
|
||||||
|
stop_after_first = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
formatters = {
|
||||||
|
jq = {
|
||||||
|
command = "${lib.getExe pkgs.jq}";
|
||||||
|
};
|
||||||
|
prettierd = {
|
||||||
|
command = "${lib.getExe pkgs.prettierd}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
ts-autotag.enable = true;
|
||||||
|
ts-comments.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
36
plugins/lang/yaml.nix
Normal file
36
plugins/lang/yaml.nix
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
{
|
||||||
|
plugins = {
|
||||||
|
lsp.servers = {
|
||||||
|
yamlls = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings.yaml = {
|
||||||
|
schemas = {
|
||||||
|
kubernetes = "'*.yaml";
|
||||||
|
"http://json.schemastore.org/github-workflow" = ".github/workflows/*";
|
||||||
|
"http://json.schemastore.org/github-action" = ".github/action.{yml,yaml}";
|
||||||
|
"http://json.schemastore.org/ansible-stable-2.9" = "roles/tasks/*.{yml,yaml}";
|
||||||
|
"http://json.schemastore.org/kustomization" = "kustomization.{yml,yaml}";
|
||||||
|
"http://json.schemastore.org/ansible-playbook" = "*play*.{yml,yaml}";
|
||||||
|
"http://json.schemastore.org/chart" = "Chart.{yml,yaml}";
|
||||||
|
"https://json.schemastore.org/dependabot-v2" = ".github/dependabot.{yml,yaml}";
|
||||||
|
"https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json" =
|
||||||
|
"*docker-compose*.{yml,yaml}";
|
||||||
|
"https://raw.githubusercontent.com/argoproj/argo-workflows/master/api/jsonschema/schema.json" =
|
||||||
|
"*flow*.{yml,yaml}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
conform-nvim.settings = {
|
||||||
|
formatters_by_ft = {
|
||||||
|
yaml = {
|
||||||
|
__unkeyed-1 = "prettierd";
|
||||||
|
__unkeyed-2 = "prettier";
|
||||||
|
stop_after_first = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
56
plugins/lsp/conform.nix
Normal file
56
plugins/lsp/conform.nix
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
# formatter with lsp fallback
|
||||||
|
{ lib, pkgs, ... }:
|
||||||
|
{
|
||||||
|
plugins.conform-nvim = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
default_format_opts.lsp_format = "prefer";
|
||||||
|
notify_on_error = true;
|
||||||
|
|
||||||
|
format_on_save = ''
|
||||||
|
function(bufnr)
|
||||||
|
if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if slow_format_filetypes[vim.bo[bufnr].filetype] then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local function on_format(err)
|
||||||
|
if err and err:match("timeout$") then
|
||||||
|
slow_format_filetypes[vim.bo[bufnr].filetype] = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return { timeout_ms = 200, lsp_fallback = true }, on_format
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
|
||||||
|
format_after_save = ''
|
||||||
|
function(bufnr)
|
||||||
|
if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if not slow_format_filetypes[vim.bo[bufnr].filetype] then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
return { lsp_fallback = true }
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
|
||||||
|
formatters_by_ft = {
|
||||||
|
"_" = [
|
||||||
|
"squeeze_blanks"
|
||||||
|
"trim_whitespace"
|
||||||
|
"trim_newlines"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
formatters.squeeze_blanks.command = lib.getExe' pkgs.coreutils "cat";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
108
plugins/lsp/default.nix
Normal file
108
plugins/lsp/default.nix
Normal file
|
|
@ -0,0 +1,108 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
let
|
||||||
|
inherit (config.myvim.mkKey) mkKeymap;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
opts = {
|
||||||
|
foldcolumn = "1";
|
||||||
|
foldlevel = 99;
|
||||||
|
foldlevelstart = -1;
|
||||||
|
foldenable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
diagnostic.settings = {
|
||||||
|
virtual_text = false;
|
||||||
|
underline = true;
|
||||||
|
signs = true;
|
||||||
|
severity_sort = true;
|
||||||
|
|
||||||
|
float = {
|
||||||
|
border = config.myvim.border;
|
||||||
|
source = "always";
|
||||||
|
focusable = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
plugins = {
|
||||||
|
lsp = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
keymaps.extra = [
|
||||||
|
(mkKeymap "n" "<leader>lO" "<cmd>lua require('otter').activate()<cr>" "Force Otter")
|
||||||
|
];
|
||||||
|
|
||||||
|
inlayHints = true;
|
||||||
|
|
||||||
|
servers = {
|
||||||
|
typos_lsp = {
|
||||||
|
enable = true;
|
||||||
|
extraOptions.init_options.diagnosticSeverity = "Hint";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
keymaps = {
|
||||||
|
silent = true;
|
||||||
|
|
||||||
|
diagnostic = {
|
||||||
|
"<leader>lj" = "goto_next";
|
||||||
|
"<leader>lk" = "goto_prev";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
lspsaga = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
lightbulb = {
|
||||||
|
enable = false;
|
||||||
|
virtualText = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
outline.keys.jump = "<cr>";
|
||||||
|
ui.bortder = config.myvim.border;
|
||||||
|
|
||||||
|
scrollPreview = {
|
||||||
|
scrollDown = "<c-d>";
|
||||||
|
scrollUp = "<c-u>";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nvim-ufo = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
provider_selector = # lua
|
||||||
|
''
|
||||||
|
function()
|
||||||
|
return { "lsp", "indent" }
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
|
||||||
|
preview.mappings = {
|
||||||
|
close = "q";
|
||||||
|
switch = "K";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
otter = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings.buffers = {
|
||||||
|
set_filetype = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
tiny-inline-diagnostic.enable = true;
|
||||||
|
trouble.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
imports =
|
||||||
|
with builtins;
|
||||||
|
with lib;
|
||||||
|
map (fn: ./${fn}) (
|
||||||
|
filter (fn: (fn != "default.nix" && !hasSuffix ".md" "${fn}")) (attrNames (readDir ./.))
|
||||||
|
);
|
||||||
|
}
|
||||||
120
plugins/lsp/mappings.nix
Normal file
120
plugins/lsp/mappings.nix
Normal file
|
|
@ -0,0 +1,120 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
let
|
||||||
|
inherit (lib.nixvim) mkRaw;
|
||||||
|
inherit (config.myvim.mkKey) mkKeymap wKeyObj;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
|
||||||
|
wKeyList = [
|
||||||
|
(wKeyObj [
|
||||||
|
"<leader>lg"
|
||||||
|
""
|
||||||
|
"goto"
|
||||||
|
])
|
||||||
|
(wKeyObj [
|
||||||
|
"<leader>l"
|
||||||
|
""
|
||||||
|
"lsp"
|
||||||
|
])
|
||||||
|
];
|
||||||
|
|
||||||
|
plugins.lsp.keymaps.extra = [
|
||||||
|
(mkKeymap "n" "<leader>lO" "<cmd>lua require('otter').activate()<cr>" "Force Otter")
|
||||||
|
|
||||||
|
# Lspsaga
|
||||||
|
|
||||||
|
(mkKeymap "n" "<leader>la" "<cmd>:Lspsaga code_action<cr>" "Code Action")
|
||||||
|
(mkKeymap "n" "<leader>lo" "<cmd>Lspsaga outline<cr>" "Outline")
|
||||||
|
(mkKeymap "n" "<leader>lw" "<cmd>Lspsaga show_workspace_diagnostics<cr>" "Workspace Diagnostics")
|
||||||
|
(mkKeymap "n" "gd" "<cmd>Lspsaga goto_definition<cr>" "Definitions")
|
||||||
|
(mkKeymap "n" "<leader>lr" "<cmd>Lspsaga rename ++project<cr>" "Rename")
|
||||||
|
(mkKeymap "n" "gt" "<cmd>Lspsaga goto_type_definition<cr>" "Type Definitions")
|
||||||
|
(mkKeymap "n" "<leader>l." "<cmd>Lspsaga show_line_diagnostics<cr>" "Line Diagnostics")
|
||||||
|
(mkKeymap "n" "gpd" "<cmd>Lspsaga peek_definition<cr>" "Peek Definition")
|
||||||
|
(mkKeymap "n" "gpt" "<cmd>Lspsaga peek_type_definition<cr>" "Peek Type Definition")
|
||||||
|
(mkKeymap "n" "[e" "<cmd>Lspsaga diagnostic_jump_prev<cr>" "Jump Prev Diagnostic")
|
||||||
|
(mkKeymap "n" "]e" "<cmd>Lspsaga diagnostic_jump_next<cr>" "Jump Next Diagnostic")
|
||||||
|
(mkKeymap "n" "K" (mkRaw ''
|
||||||
|
function()
|
||||||
|
local ok, ufo = pcall(require, "ufo")
|
||||||
|
if ok then
|
||||||
|
winid = ufo.peekFoldedLinesUnderCursor()
|
||||||
|
end
|
||||||
|
if not winid then
|
||||||
|
vim.cmd("Lspsaga hover_doc")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
'') "Hover Doc")
|
||||||
|
|
||||||
|
# UFO
|
||||||
|
(mkKeymap "n" "zR" (
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
function()
|
||||||
|
require("ufo").openAllFolds()
|
||||||
|
end
|
||||||
|
''
|
||||||
|
) "Open all folds")
|
||||||
|
(mkKeymap "n" "zM" (
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
function()
|
||||||
|
require("ufo").closeAllFolds()
|
||||||
|
end
|
||||||
|
''
|
||||||
|
) "Close All Folds")
|
||||||
|
(mkKeymap "n" "zK" (
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
function()
|
||||||
|
local winid = require("ufo").peekFoldedLinesUnderCursor()
|
||||||
|
if not winid then
|
||||||
|
vim.lsp.buf.hover()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
''
|
||||||
|
) "Peek Folded Lines")
|
||||||
|
|
||||||
|
(mkKeymap "n" "<leader>lq" "<CMD>LspStop<Enter>" "Stop LSP")
|
||||||
|
(mkKeymap "n" "<leader>li" "<cmd>LspInfo<cr>" "LSP Info")
|
||||||
|
(mkKeymap "n" "<leader>ls" "<CMD>LspStart<Enter>" "Start LSP")
|
||||||
|
(mkKeymap "n" "<leader>lR" "<CMD>LspRestart<Enter>" "Restart LSP")
|
||||||
|
|
||||||
|
(mkKeymap "n" "<C-s-k>" "<cmd>:lua vim.lsp.buf.signature_help()<cr>" "Signature Help")
|
||||||
|
(mkKeymap "n" "<leader>lD" "<cmd>:lua Snacks.picker.lsp_definitions()<cr>" "Definitions list")
|
||||||
|
(mkKeymap "n" "<leader>ls" "<cmd>:lua Snacks.picker.lsp_symbols()<cr>" "Definitions list")
|
||||||
|
|
||||||
|
(mkKeymap "n" "<leader>lf" "<cmd>:lua require('conform').format()<cr>" "Format file")
|
||||||
|
(mkKeymap "x" "<leader>lf" "<cmd>:lua require('conform').format()<cr>" "Format File")
|
||||||
|
(mkKeymap "v" "<leader>lf" "<cmd>:lua require('conform').format()<cr>" "Format File")
|
||||||
|
|
||||||
|
(mkKeymap "n" "[d" "<cmd>:lua vim.diagnostic.goto_prev()<cr>" "Previous Diagnostic")
|
||||||
|
(mkKeymap "n" "]d" "<cmd>:lua vim.diagnostic.goto_next()<cr>" "Next Diagnostic")
|
||||||
|
(mkKeymap "n" "<leader>lL" (
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
function()
|
||||||
|
if vim.g.diagnostics_visible == nil or vim.g.diagnostics_visible then
|
||||||
|
vim.g.diagnostics_visible = false
|
||||||
|
vim.diagnostic.disable()
|
||||||
|
else
|
||||||
|
vim.g.diagnostics_visible = true
|
||||||
|
vim.diagnostic.enable()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
''
|
||||||
|
) "Toggle Diagnostics")
|
||||||
|
(mkKeymap "n" "<leader>ll" (
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
function()
|
||||||
|
if vim.diagnostic.config().virtual_text == false then
|
||||||
|
vim.diagnostic.config({ virtual_text = { source = "always" } })
|
||||||
|
else
|
||||||
|
vim.diagnostic.config({ virtual_text = false })
|
||||||
|
end
|
||||||
|
end
|
||||||
|
''
|
||||||
|
) "Toggle Virtual Text")
|
||||||
|
];
|
||||||
|
}
|
||||||
54
plugins/lualine/default.nix
Normal file
54
plugins/lualine/default.nix
Normal file
|
|
@ -0,0 +1,54 @@
|
||||||
|
{ lib, ... }:
|
||||||
|
{
|
||||||
|
extraConfigLua = # lua
|
||||||
|
''
|
||||||
|
vim.cmd([[hi StatusLine guibg=NONE ctermbg=NONE]])
|
||||||
|
'';
|
||||||
|
|
||||||
|
plugins.lualine = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings =
|
||||||
|
let
|
||||||
|
separators = {
|
||||||
|
left = "";
|
||||||
|
right = "";
|
||||||
|
};
|
||||||
|
transparent = {
|
||||||
|
a.fg = "none";
|
||||||
|
c.bg = "none";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
theme = {
|
||||||
|
normal = transparent;
|
||||||
|
insert = transparent;
|
||||||
|
visual = transparent;
|
||||||
|
replace = transparent;
|
||||||
|
command = transparent;
|
||||||
|
inactive = transparent;
|
||||||
|
};
|
||||||
|
always_divide_middle = true;
|
||||||
|
globalstatus = true;
|
||||||
|
icons_enable = true;
|
||||||
|
component_separators = separators;
|
||||||
|
section_separatros = separators;
|
||||||
|
disabled_filetypes = [
|
||||||
|
"Outline"
|
||||||
|
"neo-tree"
|
||||||
|
"dashboard"
|
||||||
|
"snacks_dashboard"
|
||||||
|
"snacks_terminal"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
imports =
|
||||||
|
with builtins;
|
||||||
|
with lib;
|
||||||
|
map (fn: ./${fn}) (
|
||||||
|
filter (fn: (fn != "default.nix" && !hasSuffix ".md" "${fn}")) (attrNames (readDir ./.))
|
||||||
|
);
|
||||||
|
}
|
||||||
150
plugins/lualine/sections.nix
Normal file
150
plugins/lualine/sections.nix
Normal file
|
|
@ -0,0 +1,150 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
let
|
||||||
|
inherit (config.myvim) icons;
|
||||||
|
inherit (lib.nixvim) mkRaw;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
plugins.lualine.settings.sections = {
|
||||||
|
lualine_a = [
|
||||||
|
{
|
||||||
|
__unkeyed = "fileformat";
|
||||||
|
cond = null;
|
||||||
|
padding = {
|
||||||
|
left = 1;
|
||||||
|
right = 1;
|
||||||
|
};
|
||||||
|
color = "SLGreen";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
lualine_b = [ "encoding" ];
|
||||||
|
lualine_c = [
|
||||||
|
{
|
||||||
|
__unkeyed = "b:gitsigns_head";
|
||||||
|
icon = "${icons.git.Branch}";
|
||||||
|
color.gui = "bold";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
__unkeyed = "diff";
|
||||||
|
source =
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
(function()
|
||||||
|
local gitsigns = vim.b.gitsigns_status_dict
|
||||||
|
if vim.b.gitsigns_status_dict then
|
||||||
|
return {
|
||||||
|
added = gitsigns.added,
|
||||||
|
modified = gitsigns.changed,
|
||||||
|
removed = gitsigns.removed,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
'';
|
||||||
|
symbols = {
|
||||||
|
added = mkRaw ''"${icons.git.LineAdded}" .. " " '';
|
||||||
|
modified = mkRaw ''"${icons.git.LineModified}".. " "'';
|
||||||
|
removed = mkRaw ''"${icons.git.LineRemoved}".. " "'';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
__unkeyed = "diagnostics";
|
||||||
|
sources = {
|
||||||
|
__unkeyed = "nvim_diagnostic";
|
||||||
|
};
|
||||||
|
symbols = {
|
||||||
|
error = mkRaw ''"${icons.diagnostics.BoldError}" .. " "'';
|
||||||
|
warn = mkRaw ''"${icons.diagnostics.BoldWarning}" .. " "'';
|
||||||
|
info = mkRaw ''"${icons.diagnostics.BoldInformation}" .. " "'';
|
||||||
|
hint = mkRaw ''"${icons.diagnostics.BoldHint}" .. " "'';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
lualine_x = [
|
||||||
|
{
|
||||||
|
color = {
|
||||||
|
fg = "#ff9e64";
|
||||||
|
};
|
||||||
|
cond = mkRaw ''
|
||||||
|
function()
|
||||||
|
local ok, noice = pcall(require, "noice")
|
||||||
|
if not ok then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
return noice.api.status.mode.has()
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
__unkeyed =
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
function()
|
||||||
|
local ok, noice = pcall(require, "noice")
|
||||||
|
if not ok then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
return noice.api.status.mode.get()
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
{
|
||||||
|
__unkeyed =
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
function()
|
||||||
|
local clients = vim.lsp.get_clients()
|
||||||
|
local lsp_names = {}
|
||||||
|
if next(clients) == nil then
|
||||||
|
return "Ls Inactive"
|
||||||
|
end
|
||||||
|
for _, client in ipairs(clients) do
|
||||||
|
if client.name ~= "copilot" and client.name ~= "null-ls" and client.name ~= "typos_lsp" then
|
||||||
|
local name = client.name:gsub("%[%d+%]", "") -- makes otter-ls[number] -> otter-ls
|
||||||
|
table.insert(lsp_names, name)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local formatters = require("conform").list_formatters()
|
||||||
|
local con_names = {}
|
||||||
|
|
||||||
|
for _, formatter in ipairs(formatters) do
|
||||||
|
local name = formatter.name
|
||||||
|
if formatter.available and (name ~= "squeeze_blanks" and name ~= "trim_whitespace" and name ~= "trim_newlines") then
|
||||||
|
table.insert(con_names, formatter.name)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local names = {}
|
||||||
|
vim.list_extend(names, lsp_names)
|
||||||
|
vim.list_extend(names, con_names)
|
||||||
|
return "[" .. table.concat(vim.fn.uniq(names), ", ") .. "]"
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
__unkeyed = "filetype";
|
||||||
|
cond = null;
|
||||||
|
padding = {
|
||||||
|
left = 1;
|
||||||
|
right = 1;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
lualine_y = [ "progress" ];
|
||||||
|
lualine_z = [
|
||||||
|
"location"
|
||||||
|
{
|
||||||
|
__unkeyed =
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
function()
|
||||||
|
local lsp_clients = vim.lsp.get_clients()
|
||||||
|
for _, client in ipairs(lsp_clients) do
|
||||||
|
if client.name == "copilot" then
|
||||||
|
return "%#SLGreen#" .. "${icons.kind.Copilot}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return ""
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
60
plugins/neotree.nix
Normal file
60
plugins/neotree.nix
Normal file
|
|
@ -0,0 +1,60 @@
|
||||||
|
{ config, ... }:
|
||||||
|
let
|
||||||
|
inherit (config.myvim) icons;
|
||||||
|
inherit (config.myvim.mkKey) mkKeymap wKeyObj;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
plugins.neo-tree = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
sources = [
|
||||||
|
"filesystem"
|
||||||
|
"buffers"
|
||||||
|
"git_status"
|
||||||
|
"document_symbols"
|
||||||
|
];
|
||||||
|
addBlankLineAtTop = false;
|
||||||
|
|
||||||
|
filesystem = {
|
||||||
|
bindToCwd = false;
|
||||||
|
followCurrentFile = {
|
||||||
|
enabled = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
defaultComponentConfigs = {
|
||||||
|
indent = {
|
||||||
|
withExpanders = true;
|
||||||
|
expanderCollapsed = "";
|
||||||
|
expanderExpanded = "";
|
||||||
|
expanderHighlight = "NeoTreeExpander";
|
||||||
|
};
|
||||||
|
|
||||||
|
gitStatus = with icons.git; {
|
||||||
|
symbols = {
|
||||||
|
added = "${Added}";
|
||||||
|
conflict = "${Conflict}";
|
||||||
|
deleted = "${Deleted}";
|
||||||
|
ignored = "${Ignored}";
|
||||||
|
modified = "${Modified}";
|
||||||
|
renamed = "${Renamed}";
|
||||||
|
staged = "${Staged}";
|
||||||
|
unstaged = "${Unstaged}";
|
||||||
|
untracked = "${Untracked}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
wKeyList = [
|
||||||
|
(wKeyObj [
|
||||||
|
"<leader>e"
|
||||||
|
""
|
||||||
|
"Neotree"
|
||||||
|
])
|
||||||
|
];
|
||||||
|
|
||||||
|
keymaps = [
|
||||||
|
(mkKeymap "n" "<leader>e" "<cmd>Neotree toggle<cr>" "Open/Close Neotree")
|
||||||
|
];
|
||||||
|
}
|
||||||
63
plugins/noice.nix
Normal file
63
plugins/noice.nix
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
{
|
||||||
|
plugins.noice = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
presets.bottom_search = true;
|
||||||
|
|
||||||
|
routes = [
|
||||||
|
# FIXME: <https://github.com/folke/noice.nvim/issues/1097>
|
||||||
|
{
|
||||||
|
filter = {
|
||||||
|
event = "msg_show";
|
||||||
|
kind = [ "shell_out" ];
|
||||||
|
};
|
||||||
|
view = "notify";
|
||||||
|
opts = {
|
||||||
|
level = "info";
|
||||||
|
title = "stdout";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
filter = {
|
||||||
|
event = "msg_show";
|
||||||
|
kind = [ "shell_err" ];
|
||||||
|
};
|
||||||
|
view = "notify";
|
||||||
|
opts = {
|
||||||
|
level = "error";
|
||||||
|
title = "stderr";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
views = {
|
||||||
|
cmdline_popup = {
|
||||||
|
position = {
|
||||||
|
row = -2;
|
||||||
|
col = "50%";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
cmdline_popupmenu = {
|
||||||
|
position = {
|
||||||
|
row = -5;
|
||||||
|
col = "50%";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
lsp = {
|
||||||
|
override = {
|
||||||
|
"vim.lsp.util.convert_input_to_markdown_lines" = true;
|
||||||
|
"vim.lsp.util.stylize_markdown" = true;
|
||||||
|
"cmp.entry.get_documentation" = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
hover.enabled = false;
|
||||||
|
message.enabled = false;
|
||||||
|
signature.enabled = false;
|
||||||
|
progress.eabled = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
323
plugins/snacks/default.nix
Normal file
323
plugins/snacks/default.nix
Normal file
|
|
@ -0,0 +1,323 @@
|
||||||
|
{ lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
inherit (lib.nixvim) utils mkRaw;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
plugins = {
|
||||||
|
neoscroll.enable = true;
|
||||||
|
todo-comments.enable = true;
|
||||||
|
|
||||||
|
snacks = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
bigfile.enabled = true;
|
||||||
|
dim.enabled = true;
|
||||||
|
scroll.enabled = false;
|
||||||
|
lazygit.config.os.edit =
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
'[ -z "\"$NVIM\"" ] && (nvim -- {{filename}}) || (nvim --server "\"$NVIM\"" --remote-send "\"q\"" && nvim --server "\"$NVIM\"" --remote {{filename}})'
|
||||||
|
'';
|
||||||
|
quickfile.enbled = true;
|
||||||
|
indent.enabled = true;
|
||||||
|
words.enabled = true;
|
||||||
|
statuscolumn.enabled = true;
|
||||||
|
|
||||||
|
dashboard = {
|
||||||
|
enabled = true;
|
||||||
|
sections =
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
{
|
||||||
|
{ section = "header" },
|
||||||
|
{
|
||||||
|
pane = 2,
|
||||||
|
section = "terminal",
|
||||||
|
cmd = "colorscript -e square",
|
||||||
|
height = 5,
|
||||||
|
padding = 1,
|
||||||
|
},
|
||||||
|
{ section = "keys", gap = 1, padding = 1 },
|
||||||
|
{
|
||||||
|
pane = 2,
|
||||||
|
icon = " ",
|
||||||
|
desc = "Browse Repo",
|
||||||
|
padding = 1,
|
||||||
|
key = "b",
|
||||||
|
action = function()
|
||||||
|
Snacks.gitbrowse()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
function()
|
||||||
|
local in_git = Snacks.git.get_root() ~= nil
|
||||||
|
local cmds = {
|
||||||
|
{
|
||||||
|
title = "Notifications",
|
||||||
|
cmd = "gh notify -s -a -n5",
|
||||||
|
action = function()
|
||||||
|
vim.ui.open("https://github.com/notifications")
|
||||||
|
end,
|
||||||
|
key = "n",
|
||||||
|
icon = " ",
|
||||||
|
height = 5,
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title = "Open Issues",
|
||||||
|
cmd = "gh issue list -L 3",
|
||||||
|
key = "i",
|
||||||
|
action = function()
|
||||||
|
vim.fn.jobstart("gh issue list --web", { detach = true })
|
||||||
|
end,
|
||||||
|
icon = " ",
|
||||||
|
height = 7,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon = " ",
|
||||||
|
title = "Open PRs",
|
||||||
|
cmd = "gh pr list -L 3",
|
||||||
|
key = "P",
|
||||||
|
action = function()
|
||||||
|
vim.fn.jobstart("gh pr list --web", { detach = true })
|
||||||
|
end,
|
||||||
|
height = 7,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon = " ",
|
||||||
|
title = "Git Status",
|
||||||
|
cmd = "git --no-pager diff --stat -B -M -C",
|
||||||
|
height = 10,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
return vim.tbl_map(function(cmd)
|
||||||
|
return vim.tbl_extend("force", {
|
||||||
|
pane = 2,
|
||||||
|
section = "terminal",
|
||||||
|
enabled = in_git,
|
||||||
|
padding = 1,
|
||||||
|
ttl = 5 * 60,
|
||||||
|
indent = 3,
|
||||||
|
}, cmd)
|
||||||
|
end, cmds)
|
||||||
|
end,
|
||||||
|
-- { section = "startup" },
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
picker =
|
||||||
|
let
|
||||||
|
keys = {
|
||||||
|
"<c-d>" = (utils.listToUnkeyedAttrs [ "preview_scroll_down" ]) // {
|
||||||
|
mode = "n";
|
||||||
|
};
|
||||||
|
"<c-u>" = (utils.listToUnkeyedAttrs [ "preview_scroll_up" ]) // {
|
||||||
|
mode = "n";
|
||||||
|
};
|
||||||
|
"-" = (utils.listToUnkeyedAttrs [ "edit_split" ]) // {
|
||||||
|
mode = "n";
|
||||||
|
};
|
||||||
|
"|" = (utils.listToUnkeyedAttrs [ "edit_vsplit" ]) // {
|
||||||
|
mode = "n";
|
||||||
|
};
|
||||||
|
"<cr>" =
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
{ { "pick_win", "jump" } }
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
enabled = true;
|
||||||
|
actions.pick_win =
|
||||||
|
# lua FIXME: on non overridden theme the picker window opens buffer with bg
|
||||||
|
mkRaw ''
|
||||||
|
function(picker)
|
||||||
|
if not picker.layout.split then
|
||||||
|
picker.layout:hide()
|
||||||
|
end
|
||||||
|
local win = Snacks.picker.util.pick_win {
|
||||||
|
main = picker.main,
|
||||||
|
float = false,
|
||||||
|
filter = function(_, buf)
|
||||||
|
local ft = vim.bo[buf].ft
|
||||||
|
return ft == 'snacks_dashboard' or not ft:find '^snacks'
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
if not win then
|
||||||
|
if not picker.layout.split then
|
||||||
|
picker.layout:unhide()
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
picker.main = win
|
||||||
|
if not picker.layout.split then
|
||||||
|
vim.defer_fn(function()
|
||||||
|
if not picker.closed then
|
||||||
|
picker.layout:unhide()
|
||||||
|
end
|
||||||
|
end, 100)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
sources.explorer =
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
{
|
||||||
|
on_show = function(picker)
|
||||||
|
local show = false
|
||||||
|
local gap = 1
|
||||||
|
local clamp_width = function(value)
|
||||||
|
return math.max(20, math.min(100, value))
|
||||||
|
end
|
||||||
|
--
|
||||||
|
local position = picker.resolved_layout.layout.position
|
||||||
|
local rel = picker.layout.root
|
||||||
|
local update = function(win) ---@param win snacks.win
|
||||||
|
local border = win:border_size().left + win:border_size().right
|
||||||
|
win.opts.row = vim.api.nvim_win_get_position(rel.win)[1]
|
||||||
|
win.opts.height = 0.8
|
||||||
|
if position == 'left' then
|
||||||
|
win.opts.col = vim.api.nvim_win_get_width(rel.win) + gap
|
||||||
|
win.opts.width = clamp_width(vim.o.columns - border - win.opts.col)
|
||||||
|
end
|
||||||
|
if position == 'right' then
|
||||||
|
win.opts.col = -vim.api.nvim_win_get_width(rel.win) - gap
|
||||||
|
win.opts.width = clamp_width(vim.o.columns - border + win.opts.col)
|
||||||
|
end
|
||||||
|
win:update()
|
||||||
|
end
|
||||||
|
local preview_win = Snacks.win.new {
|
||||||
|
relative = 'editor',
|
||||||
|
external = false,
|
||||||
|
focusable = false,
|
||||||
|
border = 'rounded',
|
||||||
|
backdrop = false,
|
||||||
|
show = show,
|
||||||
|
bo = {
|
||||||
|
filetype = 'snacks_float_preview',
|
||||||
|
buftype = 'nofile',
|
||||||
|
buflisted = false,
|
||||||
|
swapfile = false,
|
||||||
|
undofile = false,
|
||||||
|
},
|
||||||
|
on_win = function(win)
|
||||||
|
update(win)
|
||||||
|
picker:show_preview()
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
rel:on('WinLeave', function()
|
||||||
|
vim.schedule(function()
|
||||||
|
if not picker:is_focused() then
|
||||||
|
picker.preview.win:close()
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
rel:on('WinResized', function()
|
||||||
|
update(preview_win)
|
||||||
|
end)
|
||||||
|
picker.preview.win = preview_win
|
||||||
|
picker.main = preview_win.win
|
||||||
|
end,
|
||||||
|
on_close = function(picker)
|
||||||
|
picker.preview.win:close()
|
||||||
|
end,
|
||||||
|
layout = {
|
||||||
|
preset = 'sidebar',
|
||||||
|
layout = {
|
||||||
|
backdrop = false,
|
||||||
|
width = 40, -- Pfff.. 40. I have 60!
|
||||||
|
min_width = 40,
|
||||||
|
height = 0,
|
||||||
|
position = 'right',
|
||||||
|
border = 'none',
|
||||||
|
box = 'vertical',
|
||||||
|
{ win = 'list', border = 'none' },
|
||||||
|
{ win = 'preview', title = '{preview}', height = 0.4, border = 'top' },
|
||||||
|
},
|
||||||
|
preview = false, ---@diagnostic disable-line
|
||||||
|
},
|
||||||
|
actions = {
|
||||||
|
toggle_preview = function(picker) --[[Override]]
|
||||||
|
picker.preview.win:toggle()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
win = {
|
||||||
|
input.keys = keys;
|
||||||
|
list.keys = keys;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
image = {
|
||||||
|
enabled = true;
|
||||||
|
border = "none";
|
||||||
|
doc.inline = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
notifier = {
|
||||||
|
enabled = true;
|
||||||
|
style = "minimal";
|
||||||
|
top_down = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
gh
|
||||||
|
imagemagick
|
||||||
|
ghostscript_headless
|
||||||
|
tectonic
|
||||||
|
mermaid-cli
|
||||||
|
dwt1-shell-color-scripts
|
||||||
|
]; # for image support
|
||||||
|
|
||||||
|
autoCmd = [
|
||||||
|
{
|
||||||
|
desc = "Pre init Function";
|
||||||
|
event = [ "VimEnter" ];
|
||||||
|
callback =
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
-- Taken from https://github.com/folke/snacks.nvim?tab=readme-ov-file#-usage
|
||||||
|
function()
|
||||||
|
-- Setup some globals for debugging (lazy-loaded)
|
||||||
|
_G.dd = function (...)
|
||||||
|
Snacks.debug.inspect
|
||||||
|
(...)
|
||||||
|
end
|
||||||
|
_G.bt = function()
|
||||||
|
Snacks.debug.backtrace()
|
||||||
|
end
|
||||||
|
vim.print = _G.dd -- Override print to use snacks for `:=` command
|
||||||
|
|
||||||
|
-- Create some toggle mappings
|
||||||
|
Snacks.toggle.diagnostics():map("<leader>ud")
|
||||||
|
Snacks.toggle.line_number():map("<leader>ul")
|
||||||
|
Snacks.toggle.inlay_hints():map("<leader>uh")
|
||||||
|
Snacks.toggle.treesitter():map("<leader>uT")
|
||||||
|
Snacks.toggle.option("spell",
|
||||||
|
{ name = "Spelling" }):map("<leader>us")
|
||||||
|
Snacks.toggle.option("wrap",
|
||||||
|
{ name = "Wrap" }):map("<leader>uw")
|
||||||
|
Snacks.toggle.option("relativenumber",
|
||||||
|
{ name = "Relative Number" }):map("<leader>uL")
|
||||||
|
Snacks.toggle.option("conceallevel",
|
||||||
|
{ off = 0, on = vim.o.conceallevel > 0 and vim.o.conceallevel or 2 }):map("<leader>uc")
|
||||||
|
Snacks.toggle.option("background",
|
||||||
|
{ off = "light", on = "dark", name = "Dark Background" }):map("<leader>ub")
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
imports =
|
||||||
|
with builtins;
|
||||||
|
with lib;
|
||||||
|
map (fn: ./${fn}) (
|
||||||
|
filter (fn: (fn != "default.nix" && !hasSuffix ".md" "${fn}")) (attrNames (readDir ./.))
|
||||||
|
);
|
||||||
|
}
|
||||||
120
plugins/snacks/mappings.nix
Normal file
120
plugins/snacks/mappings.nix
Normal file
|
|
@ -0,0 +1,120 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
let
|
||||||
|
inherit (lib.nixvim) mkRaw;
|
||||||
|
inherit (config.myvim.mkKey) mkKeymap wKeyObj;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
wKeyList = [
|
||||||
|
(wKeyObj [
|
||||||
|
"<leader>."
|
||||||
|
""
|
||||||
|
"Scratch Buffer"
|
||||||
|
])
|
||||||
|
(wKeyObj [
|
||||||
|
"<leader>:"
|
||||||
|
""
|
||||||
|
""
|
||||||
|
true
|
||||||
|
])
|
||||||
|
(wKeyObj [
|
||||||
|
"<leader>s"
|
||||||
|
""
|
||||||
|
"search"
|
||||||
|
])
|
||||||
|
(wKeyObj [
|
||||||
|
"<leader>f"
|
||||||
|
""
|
||||||
|
"file/find"
|
||||||
|
])
|
||||||
|
];
|
||||||
|
|
||||||
|
keymaps = [
|
||||||
|
(mkKeymap "n" "<leader>.." "<cmd>:lua Snacks.scratch()<cr>" "Toggle Scratch Buffer")
|
||||||
|
(mkKeymap "n" "<leader>.s" "<cmd>:lua Snacks.scratch.select()<cr>" "Select Scratch Buffer")
|
||||||
|
(mkKeymap "n" "<leader>sn" "<cmd>:lua Snacks.notifier.show_history()<cr>" "Notification History")
|
||||||
|
(mkKeymap "n" "<leader>.r" "<cmd>:lua Snacks.rename.rename_file()<cr>" "Rename file/variable +lsp")
|
||||||
|
(mkKeymap "n" "<leader>gB" "<cmd>:lua Snacks.gitbrowse()<cr>" "Git Browse")
|
||||||
|
(mkKeymap "n" "<leader>gf" "<cmd>:lua Snacks.lazygit.log_file()<cr>" "Lazygit Current File History")
|
||||||
|
(mkKeymap "n" "<leader>gB" "<cmd>:lua Snacks.gitbrowse()<cr>" "Git Browse")
|
||||||
|
(mkKeymap "n" "<leader>gf" "<cmd>:lua Snacks.lazygit.log_file()<cr>" "Lazygit Current File History")
|
||||||
|
(mkKeymap "n" "<leader>gg" "<cmd>:lua Snacks.lazygit()<cr>" "Lazygit")
|
||||||
|
(mkKeymap "n" "<leader>gl" "<cmd>:lua Snacks.lazygit.log()<cr>" "Lazygit Log (cwd)")
|
||||||
|
(mkKeymap "n" "<leader>gL" "<cmd>:lua Snacks.picker.git_log()<cr>" "Git Log (cwd)")
|
||||||
|
(mkKeymap "n" "<leader>un" "<cmd>:lua Snacks.notifier.hide()<cr>" "Dismiss All Notifications")
|
||||||
|
|
||||||
|
(mkKeymap "n" "<leader>sb" "<cmd>:lua Snacks.picker.lines() <cr>" "Buffer Lines")
|
||||||
|
(mkKeymap "n" "<leader>sB" "<cmd>:lua Snacks.picker.grep_buffers() <cr>" "Grep Open Buffers")
|
||||||
|
(mkKeymap "n" "<leader>sg" "<cmd>:lua Snacks.picker.grep() <cr>" "Grep")
|
||||||
|
(mkKeymap "n" "<leader>sw" "<cmd>:lua Snacks.picker.grep_word() <cr>" "Visual selection or word")
|
||||||
|
(mkKeymap "x" "<leader>sw" "<cmd>:lua Snacks.picker.grep_word() <cr>" "Visual selection or word")
|
||||||
|
(mkKeymap "n" ''<leader>s"'' "<cmd>:lua Snacks.picker.registers() <cr>" "Registers")
|
||||||
|
(mkKeymap "n" "<leader>sa" "<cmd>:lua Snacks.picker.autocmds() <cr>" "Autocmds")
|
||||||
|
(mkKeymap "n" "<leader>sb" "<cmd>:lua Snacks.picker.lines() <cr>" "Buffer Lines")
|
||||||
|
(mkKeymap "n" "<leader>sc" "<cmd>:lua Snacks.picker.command_history() <cr>" "Command History")
|
||||||
|
(mkKeymap "n" "<leader>sC" "<cmd>:lua Snacks.picker.commands() <cr>" "Commands")
|
||||||
|
(mkKeymap "n" "<leader>sd" "<cmd>:lua Snacks.picker.diagnostics() <cr>" "Diagnostics")
|
||||||
|
(mkKeymap "n" "<leader>sD" "<cmd>:lua Snacks.picker.diagnostics_buffer() <cr>" "Buffer Diagnostics")
|
||||||
|
(mkKeymap "n" "<leader>sH" "<cmd>:lua Snacks.picker.highlights() <cr>" "Highlights")
|
||||||
|
(mkKeymap "n" "<leader>si" "<cmd>:lua Snacks.picker.icons() <cr>" "Icons")
|
||||||
|
(mkKeymap "n" "<leader>sj" "<cmd>:lua Snacks.picker.jumps() <cr>" "Jumps")
|
||||||
|
(mkKeymap "n" "<leader>sl" "<cmd>:lua Snacks.picker.loclist() <cr>" "Location List")
|
||||||
|
(mkKeymap "n" "<leader>sm" "<cmd>:lua Snacks.picker.marks() <cr>" "Marks")
|
||||||
|
(mkKeymap "n" "<leader>sM" "<cmd>:lua Snacks.picker.man() <cr>" "Man Pages")
|
||||||
|
(mkKeymap "n" "<leader>sq" "<cmd>:lua Snacks.picker.qflist() <cr>" "Quickfix List")
|
||||||
|
(mkKeymap "n" "<leader>sR" "<cmd>:lua Snacks.picker.resume() <cr>" "Resume")
|
||||||
|
(mkKeymap "n" "<leader>su" "<cmd>:lua Snacks.picker.undo() <cr>" "Undo History")
|
||||||
|
|
||||||
|
(mkKeymap "n" "gd" "<cmd>:lua Snacks.picker.lsp_definitions() <cr>" "Goto Definition")
|
||||||
|
(mkKeymap "n" "gD" "<cmd>:lua Snacks.picker.lsp_declarations() <cr>" "Goto Declaration")
|
||||||
|
(mkKeymap "n" "gr" "<cmd>:lua Snacks.picker.lsp_references() <cr>" "References")
|
||||||
|
(mkKeymap "n" "gI" "<cmd>:lua Snacks.picker.lsp_implementations() <cr>" "Goto Implementation")
|
||||||
|
(mkKeymap "n" "gy" "<cmd>:lua Snacks.picker.lsp_type_definitions() <cr>" "Goto T[y]pe Definition")
|
||||||
|
(mkKeymap "n" "<leader>ss" "<cmd>:lua Snacks.picker.lsp_symbols() <cr>" "LSP Symbols")
|
||||||
|
(mkKeymap "n" "<leader>sS" "<cmd>:lua Snacks.picker.lsp_workspace_symbols() <cr>"
|
||||||
|
"LSP Workspace Symbols"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Telescope replacement
|
||||||
|
(mkKeymap "n" "<leader>sP" "<cmd>:lua Snacks.picker()<cr>" "Pickers")
|
||||||
|
(mkKeymap "n" "<leader>ss" "<cmd>:lua Snacks.picker.smart()<cr>" "Smart")
|
||||||
|
(mkKeymap "n" "<leader>st" "<cmd>:lua Snacks.picker.todo_comments({layout = 'ivy'})<cr>" "Todo")
|
||||||
|
(mkKeymap "n" "<leader>sT"
|
||||||
|
''<cmd>:lua Snacks.picker.todo_comments({keywords = {"TODO", "FIX", "FIXME"}, layout = 'ivy'})<cr>''
|
||||||
|
"Todo"
|
||||||
|
)
|
||||||
|
(mkKeymap "n" "<leader>s:" ''<cmd>:lua Snacks.picker.command_history({ layout = 'ivy'})<cr>''
|
||||||
|
"Command History"
|
||||||
|
)
|
||||||
|
(mkKeymap "n" "<leader>s," "<cmd>:lua Snacks.picker.buffers({layout = 'ivy'})<cr>" "Buffers")
|
||||||
|
(mkKeymap "n" "<leader>sh" ''<cmd>:lua Snacks.picker.help()<cr>'' "Help Pages")
|
||||||
|
(mkKeymap "n" "<leader>sk" ''<cmd>:lua Snacks.picker.keymaps({layout = 'vscode'})<cr>'' "Keymaps")
|
||||||
|
|
||||||
|
(mkKeymap "n" "<leader>su" (
|
||||||
|
# lua
|
||||||
|
mkRaw ''
|
||||||
|
function()
|
||||||
|
Snacks.picker.undo({
|
||||||
|
win = {
|
||||||
|
input = {
|
||||||
|
keys = {
|
||||||
|
["y"] = { "yank_add", mode = "n" },
|
||||||
|
["Y"] = { "yank_del", mode = "n" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end
|
||||||
|
''
|
||||||
|
) "Undo")
|
||||||
|
|
||||||
|
(mkKeymap "n" "<leader>ff" "<cmd>:lua Snacks.picker.files()<cr>" "Find Files")
|
||||||
|
(mkKeymap "n" "<leader>fF" "<cmd>:lua Snacks.picker.smart()<cr>" "Smart")
|
||||||
|
(mkKeymap "n" "<leader>f/" "<cmd>:lua Snacks.picker.grep()<cr>" "Grep")
|
||||||
|
(mkKeymap "n" "<leader>f?"
|
||||||
|
"<cmd>:lua Snacks.picker.grep({layout = 'ivy', args = { '--vimgrep', '--smart-case', '--fixed-strings' } })<cr>"
|
||||||
|
"Grep"
|
||||||
|
)
|
||||||
|
(mkKeymap "n" "<leader>fr" "<cmd>:lua Snacks.picker.recent()<cr>" "Recent")
|
||||||
|
(mkKeymap "n" "<leader>fp" "<cmd>:lua Snacks.picker.projects()<cr>" "Projects")
|
||||||
|
];
|
||||||
|
}
|
||||||
39
plugins/treesitter.nix
Normal file
39
plugins/treesitter.nix
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
plugins = {
|
||||||
|
mini-ai.enable = true;
|
||||||
|
sleuth.enable = true;
|
||||||
|
|
||||||
|
treesitter = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
highlight = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
disable = [
|
||||||
|
"latex"
|
||||||
|
"markdown"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
auto_install = true;
|
||||||
|
indent_enable = true;
|
||||||
|
folding = true;
|
||||||
|
autoLoad = true;
|
||||||
|
incremental_selection.enable = true;
|
||||||
|
nixvimInjections = true;
|
||||||
|
grammarPackages = pkgs.vimPlugins.nvim-treesitter.allGrammars;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
treesitter-context = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
max_lines = 4;
|
||||||
|
min_window_height = 40;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
64
plugins/ux.nix
Normal file
64
plugins/ux.nix
Normal file
|
|
@ -0,0 +1,64 @@
|
||||||
|
{ pkgs, config, ... }:
|
||||||
|
{
|
||||||
|
extraPlugins = [
|
||||||
|
pkgs.vimPlugins.windows-nvim
|
||||||
|
];
|
||||||
|
|
||||||
|
extraConfigLua = ''
|
||||||
|
vim.o.winwidth = 10
|
||||||
|
vim.o.winminwidth = 10
|
||||||
|
vim.o.equalalways = false
|
||||||
|
require('windows').setup({
|
||||||
|
ignore = {
|
||||||
|
filetype = { "snacks_picker_list", "snacks_layout_box" },
|
||||||
|
},
|
||||||
|
})
|
||||||
|
'';
|
||||||
|
|
||||||
|
plugins = {
|
||||||
|
colorizer = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
filetypes = {
|
||||||
|
__unkeyed = "*";
|
||||||
|
};
|
||||||
|
user_default_options = {
|
||||||
|
names = true;
|
||||||
|
RRGGBBAA = true;
|
||||||
|
AARRGGBB = true;
|
||||||
|
rgb_fn = true;
|
||||||
|
hsl_fn = true;
|
||||||
|
css = true;
|
||||||
|
css_fn = true;
|
||||||
|
tailwind = true;
|
||||||
|
mode = "virtualtext";
|
||||||
|
virtualtext = "■";
|
||||||
|
always_update = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
dressing = {
|
||||||
|
enable = true;
|
||||||
|
settings.input.mappings.n = {
|
||||||
|
"q" = "Close";
|
||||||
|
"k" = "HistoryPrev";
|
||||||
|
"j" = "HistoryNext";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fidget = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
progress.display.progress_icon = [ "moon" ];
|
||||||
|
notification.window = {
|
||||||
|
relative = "editor";
|
||||||
|
winblend = 0;
|
||||||
|
border = "none";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
lastplace.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue