forked from KptltD00M/nixy
Add new server modules and configurations for various services
- Introduced `default-creds` module for managing default credentials with Umami integration. - Added `fail2ban` module for brute-force attack protection with configurable ban times. - Created `firewall` module to enable and configure basic firewall settings. - Implemented `gitea` module for self-hosted Git service with PostgreSQL backend. - Developed `glance` module for a customizable dashboard with various widgets and themes. - Added `iknowyou` module for a self-hosted password manager with production and demo environments. - Introduced `kernel-hardening` module for enhancing kernel security settings. - Created `mazanoke` module for a simple web application with Nginx integration. - Added `mealie` module for a self-hosted meal planning application. - Implemented `stirling-pdf` module for PDF generation service. - Developed `umami` module for self-hosted analytics with secret management. - Added `ssh` module for secure SSH configuration with user restrictions. - Introduced `nixy` theme for a customized aesthetic experience across services.
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
c = config.lib.stylix.colors;
|
||||
in {
|
||||
imports = [inputs.nvf.homeManagerModules.default];
|
||||
programs.nvf = {
|
||||
enable = true;
|
||||
settings = {
|
||||
vim.luaConfigRC.hl-overrides = ''
|
||||
local function apply_hl()
|
||||
vim.api.nvim_set_hl(0, "MiniStarterHeader", { fg = "#${c.base0D}", bold = true })
|
||||
vim.api.nvim_set_hl(0, "SnacksPickerBorder", { fg = "#${c.base0D}" })
|
||||
vim.api.nvim_set_hl(0, "SnacksPickerTitle", { fg = "#${c.base0D}", bold = true })
|
||||
end
|
||||
apply_hl()
|
||||
vim.api.nvim_create_autocmd("ColorScheme", { pattern = "*", callback = apply_hl })
|
||||
'';
|
||||
imports = [
|
||||
./options.nix
|
||||
./languages.nix
|
||||
./picker.nix
|
||||
./snacks.nix
|
||||
./keymaps.nix
|
||||
./utils.nix
|
||||
./mini.nix
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
system,
|
||||
...
|
||||
}: let
|
||||
nvimConfig = inputs.nvf.lib.neovimConfiguration {
|
||||
inherit pkgs;
|
||||
modules = [
|
||||
./options.nix
|
||||
./languages.nix
|
||||
./picker.nix
|
||||
./snacks.nix
|
||||
./keymaps.nix
|
||||
./utils.nix
|
||||
./mini.nix
|
||||
];
|
||||
};
|
||||
in {
|
||||
packages.${system}.nvim = nvimConfig.neovim;
|
||||
|
||||
apps.${system}.nvim = {
|
||||
type = "app";
|
||||
program = "${nvimConfig.neovim}/bin/nvim";
|
||||
};
|
||||
defaultApp.${system} = {
|
||||
type = "app";
|
||||
program = "${nvimConfig.neovim}/bin/nvim";
|
||||
};
|
||||
|
||||
homeManagerModules.nvim = {
|
||||
imports = [
|
||||
inputs.nvf.homeManagerModules.default
|
||||
./default.nix
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,327 @@
|
||||
{
|
||||
vim = {
|
||||
globals.mapleader = " ";
|
||||
|
||||
keymaps = [
|
||||
{
|
||||
key = "s";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>lua MiniJump2d.start(MiniJump2d.builtin_opts.single_character)<cr>";
|
||||
desc = "Jump2d";
|
||||
}
|
||||
{
|
||||
key = "K";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>lua vim.lsp.buf.hover()<cr>";
|
||||
desc = "LSP Hover";
|
||||
}
|
||||
{
|
||||
key = "<C-tab>";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>bnext<cr>";
|
||||
desc = "Next Buffer";
|
||||
}
|
||||
|
||||
# Format
|
||||
{
|
||||
key = "<leader>lf";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>lua require('conform').format({ async = true, lsp_format = 'fallback' })<cr>";
|
||||
desc = "Format file";
|
||||
}
|
||||
|
||||
# Terminal
|
||||
{
|
||||
key = "<leader>tt";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>lua Snacks.terminal.toggle()<cr>";
|
||||
desc = "Toggle terminal";
|
||||
}
|
||||
{
|
||||
key = "<leader>tf";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>lua Snacks.terminal.toggle(nil, { style = 'float' })<cr>";
|
||||
desc = "Toggle terminal (float)";
|
||||
}
|
||||
{
|
||||
key = "<leader>tg";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>lua Snacks.lazygit()<cr>";
|
||||
desc = "Lazygit";
|
||||
}
|
||||
{
|
||||
key = "<leader>ts";
|
||||
mode = "v";
|
||||
silent = true;
|
||||
action = ":<C-u>SttrTransform<CR>";
|
||||
desc = "String Transform";
|
||||
}
|
||||
{
|
||||
key = "<leader>tj";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = ":JwtTui<CR>";
|
||||
desc = "JWT TUI";
|
||||
}
|
||||
{
|
||||
key = "<leader>tj";
|
||||
mode = "v";
|
||||
silent = true;
|
||||
action = ":<C-u>JwtTuiOpen<CR>";
|
||||
desc = "JWT TUI";
|
||||
}
|
||||
|
||||
# UI
|
||||
{
|
||||
key = "<leader>uw";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>set wrap!<cr>";
|
||||
desc = "Toggle word wrapping";
|
||||
}
|
||||
{
|
||||
key = "<leader>ul";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>set linebreak!<cr>";
|
||||
desc = "Toggle linebreak";
|
||||
}
|
||||
{
|
||||
key = "<leader>us";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>set spell!<cr>";
|
||||
desc = "Toggle spellLazyGitcheck";
|
||||
}
|
||||
{
|
||||
key = "<leader>uc";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>set cursorline!<cr>";
|
||||
desc = "Toggle cursorline";
|
||||
}
|
||||
{
|
||||
key = "<leader>un";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>set number!<cr>";
|
||||
desc = "Toggle line numbers";
|
||||
}
|
||||
{
|
||||
key = "<leader>ur";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>set relativenumber!<cr>";
|
||||
desc = "Toggle relative line numbers";
|
||||
}
|
||||
{
|
||||
key = "<leader>ut";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>set showtabline=2<cr>";
|
||||
desc = "Show tabline";
|
||||
}
|
||||
{
|
||||
key = "<leader>uT";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>set showtabline=0<cr>";
|
||||
desc = "Hide tabline";
|
||||
}
|
||||
|
||||
# Todos
|
||||
{
|
||||
key = "<leader>xt";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>TodoTrouble<cr>";
|
||||
desc = "Todo (Trouble)";
|
||||
}
|
||||
|
||||
# Shell
|
||||
{
|
||||
key = "<leader>!";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
lua = true;
|
||||
desc = "Insert command output";
|
||||
action = ''
|
||||
function()
|
||||
local cmd = vim.fn.input("Command: ")
|
||||
if cmd == "" then return end
|
||||
local lines = vim.fn.systemlist(cmd)
|
||||
while #lines > 0 and lines[#lines] == "" do
|
||||
table.remove(lines)
|
||||
end
|
||||
if #lines == 0 then return end
|
||||
vim.api.nvim_put(lines, "l", true, true)
|
||||
end
|
||||
'';
|
||||
}
|
||||
{
|
||||
key = "<leader>!";
|
||||
mode = "v";
|
||||
silent = true;
|
||||
lua = true;
|
||||
desc = "Run command with selection";
|
||||
action = ''
|
||||
function()
|
||||
local start_line = vim.fn.line("'<")
|
||||
local end_line = vim.fn.line("'>")
|
||||
local lines = vim.api.nvim_buf_get_lines(0, start_line - 1, end_line, false)
|
||||
local input_text = table.concat(lines, "\n")
|
||||
|
||||
local cmd = vim.fn.input("$ ")
|
||||
if cmd == "" then return end
|
||||
|
||||
local result = vim.fn.system({"bash", "-c", cmd}, input_text)
|
||||
local output = vim.split(result, "\n", { plain = true })
|
||||
if output[#output] == "" then table.remove(output) end
|
||||
if #output == 0 then return end
|
||||
|
||||
vim.api.nvim_buf_set_lines(0, start_line - 1, end_line, false, output)
|
||||
end
|
||||
'';
|
||||
}
|
||||
|
||||
# QOL
|
||||
{
|
||||
key = ">";
|
||||
mode = "v";
|
||||
silent = true;
|
||||
action = ">gv";
|
||||
desc = "Indent and keep selection";
|
||||
}
|
||||
{
|
||||
key = "<";
|
||||
mode = "v";
|
||||
silent = true;
|
||||
action = "<gv";
|
||||
desc = "Dedent and keep selection";
|
||||
}
|
||||
|
||||
# Move
|
||||
{
|
||||
key = "<C-h>";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<C-w>h";
|
||||
desc = "Move to left window";
|
||||
}
|
||||
{
|
||||
key = "<C-j>";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<C-w>j";
|
||||
desc = "Move to bottom window";
|
||||
}
|
||||
{
|
||||
key = "<C-k>";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<C-w>k";
|
||||
desc = "Move to top window";
|
||||
}
|
||||
{
|
||||
key = "<C-l>";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<C-w>l";
|
||||
desc = "Move to right window";
|
||||
}
|
||||
|
||||
# Save
|
||||
{
|
||||
key = "<C-s>";
|
||||
mode = [
|
||||
"n"
|
||||
"i"
|
||||
"v"
|
||||
];
|
||||
silent = true;
|
||||
action = "<cmd>w<cr>";
|
||||
desc = "Save file";
|
||||
}
|
||||
|
||||
# Deactivate "esc"
|
||||
{
|
||||
key = "<Esc>";
|
||||
mode = [
|
||||
"n"
|
||||
"i"
|
||||
"v"
|
||||
];
|
||||
silent = true;
|
||||
action = "<Nop>";
|
||||
desc = "Disable Escape";
|
||||
}
|
||||
|
||||
# Disable Arrow Keys in Normal Mode and Middle click
|
||||
{
|
||||
key = "<Up>";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<Nop>";
|
||||
desc = "Disable Up Arrow";
|
||||
}
|
||||
{
|
||||
key = "<Down>";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<Nop>";
|
||||
desc = "Disable Down Arrow";
|
||||
}
|
||||
{
|
||||
key = "<Left>";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<Nop>";
|
||||
desc = "Disable Left Arrow";
|
||||
}
|
||||
{
|
||||
key = "<Right>";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<Nop>";
|
||||
desc = "Disable Right Arrow";
|
||||
}
|
||||
{
|
||||
key = "<MiddleMouse>";
|
||||
mode = [
|
||||
"n"
|
||||
"i"
|
||||
"v"
|
||||
];
|
||||
action = "<nop>";
|
||||
silent = true;
|
||||
}
|
||||
{
|
||||
key = "<2-MiddleMouse>";
|
||||
mode = [
|
||||
"n"
|
||||
"i"
|
||||
"v"
|
||||
];
|
||||
action = "<nop>";
|
||||
silent = true;
|
||||
}
|
||||
{
|
||||
key = "<3-MiddleMouse>";
|
||||
mode = [
|
||||
"n"
|
||||
"i"
|
||||
"v"
|
||||
];
|
||||
action = "<nop>";
|
||||
silent = true;
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
{...}: {
|
||||
vim = {
|
||||
diagnostics = {
|
||||
enable = true;
|
||||
config = {
|
||||
signs = {
|
||||
text = {
|
||||
"vim.diagnostic.severity.Error" = " ";
|
||||
"vim.diagnostic.severity.Warn" = " ";
|
||||
"vim.diagnostic.severity.Hint" = " ";
|
||||
"vim.diagnostic.severity.Info" = " ";
|
||||
};
|
||||
};
|
||||
underline = true;
|
||||
update_in_insert = true;
|
||||
virtual_text = true;
|
||||
};
|
||||
nvim-lint = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
treesitter = {
|
||||
enable = true;
|
||||
autotagHtml = true;
|
||||
context.enable = true;
|
||||
highlight.enable = true;
|
||||
textobjects.enable = true;
|
||||
};
|
||||
lsp = {
|
||||
enable = true;
|
||||
presets = {
|
||||
tailwindcss-language-server = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
trouble.enable = true;
|
||||
lspSignature.enable = true;
|
||||
lspconfig.enable = true;
|
||||
formatOnSave = false;
|
||||
mappings.format = null;
|
||||
inlayHints.enable = true;
|
||||
servers.nil.settings.nix.autoArchive = true;
|
||||
otter-nvim = {
|
||||
enable = true;
|
||||
setupOpts = {
|
||||
buffers.set_filetype = true;
|
||||
lsp = {
|
||||
diagnostic_update_event = [
|
||||
"BufWritePost"
|
||||
"InsertLeave"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
lspkind.enable = true;
|
||||
lspsaga = {
|
||||
enable = true;
|
||||
setupOpts = {
|
||||
ui = {
|
||||
code_action = "";
|
||||
};
|
||||
lightbulb = {
|
||||
sign = false;
|
||||
virtual_text = true;
|
||||
};
|
||||
symbol_in_winbar.enable = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
languages = {
|
||||
enableExtraDiagnostics = true;
|
||||
enableFormat = true;
|
||||
enableTreesitter = true;
|
||||
|
||||
python = {
|
||||
enable = true;
|
||||
lsp = {
|
||||
enable = true;
|
||||
servers = ["pyright"];
|
||||
};
|
||||
};
|
||||
astro.enable = true;
|
||||
go.enable = true;
|
||||
markdown = {
|
||||
enable = true;
|
||||
format.type = ["prettierd"];
|
||||
extensions = {
|
||||
markview-nvim = {
|
||||
enable = true;
|
||||
setupOpts = {
|
||||
preview = {
|
||||
hybrid_modes = ["n"];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
extraDiagnostics.enable = true;
|
||||
};
|
||||
typescript.enable = true;
|
||||
css.enable = true;
|
||||
svelte.enable = true;
|
||||
html.enable = true;
|
||||
bash.enable = true;
|
||||
nix.enable = true;
|
||||
lua.enable = true;
|
||||
};
|
||||
formatter = {
|
||||
conform-nvim = {
|
||||
enable = true;
|
||||
setupOpts.format_on_save = {
|
||||
lsp_format = "fallback";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
{lib, ...}: {
|
||||
vim.luaConfigRC.mini-clue = ''
|
||||
local miniclue = require('mini.clue')
|
||||
miniclue.setup({
|
||||
triggers = {
|
||||
{ mode = 'n', keys = '<Leader>' },
|
||||
{ mode = 'x', keys = '<Leader>' },
|
||||
{ mode = 'n', keys = 'g' },
|
||||
{ mode = 'x', keys = 'g' },
|
||||
{ mode = 'n', keys = "'" },
|
||||
{ mode = 'n', keys = '`' },
|
||||
{ mode = 'n', keys = '"' },
|
||||
{ mode = 'i', keys = '<C-r>' },
|
||||
{ mode = 'c', keys = '<C-r>' },
|
||||
{ mode = 'n', keys = '<C-w>' },
|
||||
{ mode = 'n', keys = 'z' },
|
||||
},
|
||||
clues = {
|
||||
miniclue.gen_clues.g(),
|
||||
miniclue.gen_clues.marks(),
|
||||
miniclue.gen_clues.registers(),
|
||||
miniclue.gen_clues.windows({ submode_resize = true }),
|
||||
miniclue.gen_clues.z(),
|
||||
{ mode = 'n', keys = '<Leader>f', desc = '+find' },
|
||||
{ mode = 'n', keys = '<Leader>s', desc = '+search' },
|
||||
{ mode = 'n', keys = '<Leader>t', desc = '+terminal' },
|
||||
{ mode = 'n', keys = '<Leader>u', desc = '+ui' },
|
||||
{ mode = 'n', keys = '<Leader>l', desc = '+lsp' },
|
||||
{ mode = 'n', keys = '<Leader>x', desc = '+trouble' },
|
||||
{ mode = 'n', keys = '<Leader>!', desc = 'shell' },
|
||||
{ mode = 'v', keys = '<Leader>!', desc = 'shell' },
|
||||
{ mode = 'n', keys = '<Leader>e', desc = 'yazi' },
|
||||
},
|
||||
window = { delay = 300 },
|
||||
})
|
||||
'';
|
||||
|
||||
vim.mini = {
|
||||
ai.enable = true;
|
||||
starter = {
|
||||
enable = true;
|
||||
setupOpts = {
|
||||
header = ''
|
||||
⣟⣯⣟⣯⡇⠀⣿⢩⣛⡼⣏⠀⠈⠋⠀⣈⡷⣙⢎⡳⣙⢮⣙⢮⣙⢎⡳⣙⢾⣿
|
||||
⢿⡾⣽⡞⣷⣤⣏⡳⡜⡼⠗⠁⢀⠀⠙⢧⠳⣍⢞⡱⣭⠲⣍⠶⣩⢞⡱⡭⣾⣿
|
||||
⠈⠻⠧⢿⣧⣿⠶⣵⢻⢞⡷⢲⡟⡶⢴⡭⢿⣜⣮⡱⢎⡳⣍⢞⡱⢮⡱⣳⣿⣽
|
||||
⠀⣰⣶⡏⢷⣈⣿⣸⣇⣾⣸⣿⣾⣹⣆⡹⡎⡶⢇⡿⣹⢷⣾⣈⠷⣇⢷⣿⣿⣹
|
||||
⣾⣻⣭⣿⣾⣿⣿⣟⣿⣿⡿⣽⡿⣿⢿⣿⣿⣿⣾⣶⣵⣾⠲⣭⢳⣞⣾⡿⣷⣿
|
||||
⣿⣿⣿⣯⣷⣿⣿⠿⢝⠚⠋⠉⠉⠉⠙⠚⠛⡾⢿⣿⣻⣿⣿⣶⣏⠶⣩⠿⣿⡈
|
||||
⣿⣟⣿⣻⣿⡏⠀⠀⠀⠳⡀⠀⠀⠀⠀⠰⠊⠀⠀⠈⠙⠳⣿⣿⣿⣿⣧⣻⣿⣿
|
||||
⠘⢻⣿⣿⣽⡇⠈⠧⣄⠀⠀⠀⠀⠀⠀⢀⣄⡤⠴⠚⠀⠀⠀⠙⢿⣷⡿⣿⣿⣿
|
||||
⠀⠠⢈⢛⣿⠀⠚⠉⠉⠱⣼⡷⠀⠀⠀⠀⠉⠉⠑⠶⠀⠀⠀⠀⠀⠻⣿⣿⣾⢿
|
||||
⠀⠡⠈⠉⠹⡀⠀⠀⡄⠀⣸⡀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣯⣿⢿
|
||||
⠀⠁⢶⣶⠀⢷⠀⠀⠉⠉⠀⠈⠉⠶⠆⠈⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣾⣿
|
||||
⠀⠡⢸⢹⠏⡍⠓⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣺⡟⠋⠉⢹⢭⢣
|
||||
⠀⠀⢸⣹⡏⠭⠭⠭⠙⣲⣦⣤⣤⣀⣀⣀⣀⣤⣤⣶⣞⠉⠙⠛⠷⢀⣀⠘⣎⠧
|
||||
⢁⣈⣀⣀⢀⣀⣀⣀⣼⠟⠹⢿⣯⣟⣿⣻⡿⠿⠛⢿⣿⣦⡀⠀⠀⠀⠀⠉⠉⠘
|
||||
'';
|
||||
footer = "";
|
||||
items = [
|
||||
{
|
||||
name = "files";
|
||||
action = lib.mkLuaInline "function() Snacks.picker.files() end";
|
||||
section = "";
|
||||
}
|
||||
{
|
||||
name = "directories";
|
||||
action = lib.mkLuaInline "function() Snacks.explorer() end";
|
||||
section = "";
|
||||
}
|
||||
{
|
||||
name = "tmp";
|
||||
action = lib.mkLuaInline ''
|
||||
function()
|
||||
local uuid = vim.fn.system("uuidgen"):match("(%S+)")
|
||||
vim.cmd("edit /tmp/" .. uuid .. ".md")
|
||||
end
|
||||
'';
|
||||
section = "";
|
||||
}
|
||||
{
|
||||
name = "recent";
|
||||
action = lib.mkLuaInline "function() Snacks.picker.recent() end";
|
||||
section = "";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
comment.enable = true;
|
||||
icons.enable = true;
|
||||
indentscope.enable = true;
|
||||
pairs.enable = true;
|
||||
diff.enable = true;
|
||||
git.enable = true;
|
||||
jump2d.enable = true;
|
||||
statusline.enable = true;
|
||||
clue.enable = true;
|
||||
surround.enable = true;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
{lib, ...}: {
|
||||
vim = {
|
||||
viAlias = false;
|
||||
vimAlias = true;
|
||||
withNodeJs = true;
|
||||
options = {
|
||||
autoindent = true;
|
||||
smartindent = true;
|
||||
shiftwidth = 2;
|
||||
foldlevel = 99;
|
||||
foldcolumn = "auto:1";
|
||||
mousescroll = "ver:1,hor:1";
|
||||
mousemoveevent = true;
|
||||
fillchars = "eob:‿,fold: ,foldopen:▼,foldsep:⸽,foldclose:⏵";
|
||||
signcolumn = "yes";
|
||||
tabstop = 2;
|
||||
softtabstop = 2;
|
||||
wrap = false;
|
||||
};
|
||||
globals.navic_silence = true;
|
||||
clipboard = {
|
||||
enable = true;
|
||||
registers = "unnamedplus";
|
||||
};
|
||||
luaConfigRC.osc52-clipboard = ''
|
||||
vim.g.clipboard = {
|
||||
name = 'OSC 52',
|
||||
copy = {
|
||||
['+'] = require('vim.ui.clipboard.osc52').copy '+',
|
||||
['*'] = require('vim.ui.clipboard.osc52').copy '*',
|
||||
},
|
||||
paste = {
|
||||
['+'] = require('vim.ui.clipboard.osc52').paste '+',
|
||||
['*'] = require('vim.ui.clipboard.osc52').paste '*',
|
||||
},
|
||||
}
|
||||
'';
|
||||
theme = {
|
||||
enable = true;
|
||||
name = lib.mkForce "catppuccin";
|
||||
style = lib.mkForce "mocha";
|
||||
transparent = lib.mkForce true;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,162 @@
|
||||
{
|
||||
vim = {
|
||||
utility = {
|
||||
snacks-nvim = {
|
||||
setupOpts = {
|
||||
picker.enabled = true;
|
||||
explorer.enabled = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
keymaps = [
|
||||
# Top Pickers & Explorer
|
||||
{
|
||||
key = "<leader> ";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>lua Snacks.picker.smart()<cr>";
|
||||
desc = "Smart Find Files";
|
||||
}
|
||||
{
|
||||
key = "<leader>E";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>lua Snacks.explorer()<cr>";
|
||||
desc = "File Explorer";
|
||||
}
|
||||
{
|
||||
key = "<leader>/";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>lua Snacks.picker.lines()<cr>";
|
||||
desc = "Buffer Lines";
|
||||
}
|
||||
|
||||
# Find
|
||||
{
|
||||
key = "<leader>fb";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>lua Snacks.picker.buffers()<cr>";
|
||||
desc = "Buffers";
|
||||
}
|
||||
{
|
||||
key = "<leader>ff";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>lua Snacks.picker.files()<cr>";
|
||||
desc = "Find Files";
|
||||
}
|
||||
{
|
||||
key = "<leader>fp";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>lua Snacks.picker.projects()<cr>";
|
||||
desc = "Projects";
|
||||
}
|
||||
{
|
||||
key = "<leader>fr";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>lua Snacks.picker.recent()<cr>";
|
||||
desc = "Recent";
|
||||
}
|
||||
{
|
||||
key = "<leader>f:";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>lua Snacks.picker.command_history()<cr>";
|
||||
desc = "Command History";
|
||||
}
|
||||
{
|
||||
key = "<leader>fn";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>lua Snacks.picker.notifications()<cr>";
|
||||
desc = "Notification History";
|
||||
}
|
||||
|
||||
# Grep
|
||||
{
|
||||
key = "<leader>sg";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>lua Snacks.picker.grep()<cr>";
|
||||
desc = "Grep";
|
||||
}
|
||||
{
|
||||
key = "<leader>st";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>lua Snacks.picker.todo_comments()<cr>";
|
||||
desc = "Todos";
|
||||
}
|
||||
{
|
||||
key = "<leader>sw";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>lua Snacks.picker.grep_word()<cr>";
|
||||
desc = "Visual selection or word";
|
||||
}
|
||||
{
|
||||
key = "<leader>sr";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>nohlsearch<cr>";
|
||||
desc = "Reset search";
|
||||
}
|
||||
|
||||
# LSP
|
||||
{
|
||||
key = "gd";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>lua Snacks.picker.lsp_definitions()<cr>";
|
||||
desc = "Goto Definition";
|
||||
}
|
||||
{
|
||||
key = "gD";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>lua Snacks.picker.lsp_declarations()<cr>";
|
||||
desc = "Goto Declaration";
|
||||
}
|
||||
{
|
||||
key = "gr";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>lua Snacks.picker.lsp_references()<cr>";
|
||||
desc = "References";
|
||||
nowait = true;
|
||||
}
|
||||
{
|
||||
key = "gI";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>lua Snacks.picker.lsp_implementations()<cr>";
|
||||
desc = "Goto Implementation";
|
||||
}
|
||||
{
|
||||
key = "gy";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>lua Snacks.picker.lsp_type_definitions()<cr>";
|
||||
desc = "Goto Type Definition";
|
||||
}
|
||||
{
|
||||
key = "<leader>ss";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>lua Snacks.picker.lsp_symbols()<cr>";
|
||||
desc = "LSP Symbols";
|
||||
}
|
||||
{
|
||||
key = "<leader>sS";
|
||||
mode = "n";
|
||||
silent = true;
|
||||
action = "<cmd>lua Snacks.picker.lsp_workspace_symbols()<cr>";
|
||||
desc = "LSP Workspace Symbols";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
vim.utility.snacks-nvim = {
|
||||
enable = true;
|
||||
setupOpts = {
|
||||
quickfile.enabled = true;
|
||||
statuscolumn.enabled = true;
|
||||
zen.enabled = true;
|
||||
bufdelete.enabled = true;
|
||||
gitsigns.enabled = true;
|
||||
animate.enabled = true;
|
||||
lazygit = {
|
||||
enabled = true;
|
||||
configure = false;
|
||||
};
|
||||
terminal.enabled = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
{pkgs, ...}: {
|
||||
vim = {
|
||||
luaConfigRC.remove-todo-keymaps = ''
|
||||
vim.keymap.del("n", "<leader>tdq")
|
||||
vim.keymap.del("n", "<leader>tdt")
|
||||
'';
|
||||
undoFile.enable = true;
|
||||
utility.yazi-nvim = {
|
||||
enable = true;
|
||||
mappings.openYazi = "<leader>e";
|
||||
};
|
||||
notes.todo-comments.enable = true;
|
||||
assistant.copilot = {
|
||||
enable = true;
|
||||
cmp.enable = true;
|
||||
};
|
||||
|
||||
autocomplete = {
|
||||
nvim-cmp = {
|
||||
enable = true;
|
||||
sources = {
|
||||
buffer = "[Buffer]";
|
||||
path = "[Path]";
|
||||
};
|
||||
sourcePlugins = [
|
||||
pkgs.vimPlugins.cmp-cmdline
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
snippets.luasnip.enable = true;
|
||||
ui = {
|
||||
noice.enable = true;
|
||||
colorizer.enable = true;
|
||||
};
|
||||
|
||||
visuals = {
|
||||
rainbow-delimiters.enable = true;
|
||||
};
|
||||
|
||||
extraPlugins = {
|
||||
sttr-nvim = {
|
||||
package = pkgs.vimUtils.buildVimPlugin {
|
||||
name = "sttr-nvim";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "anotherhadi";
|
||||
repo = "sttr.nvim";
|
||||
rev = "b41f2f51372222e23efbe5df9d72391cd933d4d1";
|
||||
hash = "sha256-JPv0NNNUUNPNJM5LHYjcmTvilbOKB3OxI2Q6wxVbTks=";
|
||||
};
|
||||
};
|
||||
setup = ''
|
||||
require("sttr").setup()
|
||||
'';
|
||||
};
|
||||
jwt-tui-nvim = {
|
||||
package = pkgs.vimUtils.buildVimPlugin {
|
||||
name = "jwt-tui-nvim";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "anotherhadi";
|
||||
repo = "jwt-tui.nvim";
|
||||
rev = "c5100cb2cdfaf333014076a1a5c4c6a778bf3983";
|
||||
hash = "sha256-qnQYZuQwyWkezhuyOorM67KBtatUboubofuT9A6McJI=";
|
||||
};
|
||||
};
|
||||
setup = ''
|
||||
require("jwt-tui").setup()
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user