503 lines
11 KiB
Nix
503 lines
11 KiB
Nix
{
|
|
inputs,
|
|
pkgs,
|
|
config,
|
|
...
|
|
}: {
|
|
imports = [
|
|
inputs.nixvim.homeManagerModules.nixvim
|
|
];
|
|
|
|
home.packages = with pkgs; [
|
|
alejandra
|
|
ripgrep
|
|
];
|
|
|
|
programs.nixvim = {
|
|
enable = true;
|
|
defaultEditor = true;
|
|
vimdiffAlias = true;
|
|
|
|
colorschemes = {
|
|
kanagawa = {
|
|
enable = true;
|
|
};
|
|
};
|
|
|
|
globals = {
|
|
mapleader = " ";
|
|
maplocalleader = " ";
|
|
};
|
|
|
|
opts = {
|
|
number = true;
|
|
relativenumber = true;
|
|
mouse = "a";
|
|
showmode = false;
|
|
laststatus = 3;
|
|
swapfile = false;
|
|
|
|
breakindent = true;
|
|
undofile = true;
|
|
ignorecase = true;
|
|
smartcase = true;
|
|
signcolumn = "yes";
|
|
updatetime = 50;
|
|
timeoutlen = 300;
|
|
inccommand = "split";
|
|
cursorline = true;
|
|
scrolloff = 10;
|
|
hlsearch = true;
|
|
foldlevel = 99;
|
|
};
|
|
|
|
keymaps = [
|
|
{
|
|
mode = "n";
|
|
key = "<leader>fe";
|
|
action = "<cmd>Oil<CR>";
|
|
}
|
|
{
|
|
mode = "n";
|
|
key = "<leader>ff";
|
|
action = "<cmd>Pick files<CR>";
|
|
}
|
|
{
|
|
mode = "n";
|
|
key = "<leader>fg";
|
|
action = "<cmd>Pick grep_live<CR>";
|
|
}
|
|
{
|
|
mode = "n";
|
|
key = "<leader>u";
|
|
action = "<cmd>UndotreeToggle<CR>";
|
|
}
|
|
{
|
|
mode = "n";
|
|
key = "<leader>zf";
|
|
action = "<cmd>ZkNotes<CR>";
|
|
}
|
|
{
|
|
mode = "n";
|
|
key = "<leader>zt";
|
|
action = "<cmd>ZkTags<CR>";
|
|
}
|
|
{
|
|
mode = "n";
|
|
key = "<leader>zn";
|
|
action = "<cmd>ZkNew<CR>";
|
|
}
|
|
# gitsigns
|
|
{
|
|
mode = "n";
|
|
key = "]c";
|
|
action.__raw = ''
|
|
function()
|
|
if vim.wo.diff then
|
|
vim.cmd.normal { ']c', bang = true }
|
|
else
|
|
require('gitsigns').nav_hunk 'next'
|
|
end
|
|
end
|
|
'';
|
|
options = {
|
|
desc = "Jump to next git [C]hange";
|
|
};
|
|
}
|
|
{
|
|
mode = "n";
|
|
key = "[c";
|
|
action.__raw = ''
|
|
function()
|
|
if vim.wo.diff then
|
|
vim.cmd.normal { '[c', bang = true }
|
|
else
|
|
require('gitsigns').nav_hunk 'prev'
|
|
end
|
|
end
|
|
'';
|
|
options = {
|
|
desc = "Jump to previous git [C]hange";
|
|
};
|
|
}
|
|
{
|
|
mode = "v";
|
|
key = "<leader>hs";
|
|
action.__raw = ''
|
|
function()
|
|
require('gitsigns').stage_hunk { vim.fn.line '.', vim.fn.line 'v' }
|
|
end
|
|
'';
|
|
options = {
|
|
desc = "stage git hunk";
|
|
};
|
|
}
|
|
{
|
|
mode = "v";
|
|
key = "<leader>hr";
|
|
action.__raw = ''
|
|
function()
|
|
require('gitsigns').reset_hunk { vim.fn.line '.', vim.fn.line 'v' }
|
|
end
|
|
'';
|
|
options = {
|
|
desc = "reset git hunk";
|
|
};
|
|
}
|
|
{
|
|
mode = "n";
|
|
key = "<leader>hs";
|
|
action.__raw = ''
|
|
function()
|
|
require('gitsigns').stage_hunk()
|
|
end
|
|
'';
|
|
options = {
|
|
desc = "git [s]tage hunk";
|
|
};
|
|
}
|
|
{
|
|
mode = "n";
|
|
key = "<leader>hr";
|
|
action.__raw = ''
|
|
function()
|
|
require('gitsigns').reset_hunk()
|
|
end
|
|
'';
|
|
options = {
|
|
desc = "git [r]eset hunk";
|
|
};
|
|
}
|
|
{
|
|
mode = "n";
|
|
key = "<leader>hS";
|
|
action.__raw = ''
|
|
function()
|
|
require('gitsigns').stage_buffer()
|
|
end
|
|
'';
|
|
options = {
|
|
desc = "git [S]tage buffer";
|
|
};
|
|
}
|
|
{
|
|
mode = "n";
|
|
key = "<leader>hu";
|
|
action.__raw = ''
|
|
function()
|
|
require('gitsigns').undo_stage_hunk()
|
|
end
|
|
'';
|
|
options = {
|
|
desc = "git [u]ndo stage hunk";
|
|
};
|
|
}
|
|
{
|
|
mode = "n";
|
|
key = "<leader>hR";
|
|
action.__raw = ''
|
|
function()
|
|
require('gitsigns').reset_buffer()
|
|
end
|
|
'';
|
|
options = {
|
|
desc = "git [R]eset buffer";
|
|
};
|
|
}
|
|
{
|
|
mode = "n";
|
|
key = "<leader>hp";
|
|
action.__raw = ''
|
|
function()
|
|
require('gitsigns').preview_hunk()
|
|
end
|
|
'';
|
|
options = {
|
|
desc = "git [p]review hunk";
|
|
};
|
|
}
|
|
{
|
|
mode = "n";
|
|
key = "<leader>hb";
|
|
action.__raw = ''
|
|
function()
|
|
require('gitsigns').blame_line()
|
|
end
|
|
'';
|
|
options = {
|
|
desc = "git [b]lame line";
|
|
};
|
|
}
|
|
{
|
|
mode = "n";
|
|
key = "<leader>hd";
|
|
action.__raw = ''
|
|
function()
|
|
require('gitsigns').diffthis()
|
|
end
|
|
'';
|
|
options = {
|
|
desc = "git [d]iff against index";
|
|
};
|
|
}
|
|
{
|
|
mode = "n";
|
|
key = "<leader>hD";
|
|
action.__raw = ''
|
|
function()
|
|
require('gitsigns').diffthis '@'
|
|
end
|
|
'';
|
|
options = {
|
|
desc = "git [D]iff against last commit";
|
|
};
|
|
}
|
|
# Toggles
|
|
{
|
|
mode = "n";
|
|
key = "<leader>tb";
|
|
action.__raw = ''
|
|
function()
|
|
require('gitsigns').toggle_current_line_blame()
|
|
end
|
|
'';
|
|
options = {
|
|
desc = "[T]oggle git show [b]lame line";
|
|
};
|
|
}
|
|
{
|
|
mode = "n";
|
|
key = "<leader>tD";
|
|
action.__raw = ''
|
|
function()
|
|
require('gitsigns').toggle_deleted()
|
|
end
|
|
'';
|
|
options = {
|
|
desc = "[T]oggle git show [D]eleted";
|
|
};
|
|
}
|
|
];
|
|
|
|
plugins = {
|
|
web-devicons.enable = true;
|
|
sleuth = {
|
|
enable = true;
|
|
};
|
|
treesitter = {
|
|
enable = true;
|
|
folding = true;
|
|
settings = {
|
|
highlight = {
|
|
enable = true;
|
|
additional_vim_regex_highlighting = true;
|
|
};
|
|
indent = {
|
|
enable = true;
|
|
};
|
|
autotag = {
|
|
enable = true;
|
|
};
|
|
};
|
|
};
|
|
gitsigns = {
|
|
enable = true;
|
|
settings = {
|
|
signs = {
|
|
add = {text = "+";};
|
|
change = {text = "~";};
|
|
delete = {text = "_";};
|
|
topdelete = {text = "‾";};
|
|
changedelete = {text = "~";};
|
|
};
|
|
};
|
|
};
|
|
harpoon = {
|
|
enable = true;
|
|
keymaps = {
|
|
addFile = "<leader>a";
|
|
toggleQuickMenu = "<leader>e";
|
|
navNext = "<leader>k";
|
|
navPrev = "<leader>j";
|
|
};
|
|
};
|
|
mini = {
|
|
enable = true;
|
|
modules = {
|
|
ai = {
|
|
n_lines = 500;
|
|
};
|
|
surround = {};
|
|
statusline = {
|
|
use_icons = true;
|
|
};
|
|
comment = {};
|
|
trailspace = {};
|
|
pick = {};
|
|
};
|
|
};
|
|
zk = {
|
|
enable = true;
|
|
settings = {
|
|
picker = "minipick";
|
|
};
|
|
};
|
|
render-markdown = {
|
|
enable = true;
|
|
};
|
|
friendly-snippets = {
|
|
enable = true;
|
|
};
|
|
lspkind = {
|
|
enable = true;
|
|
cmp = {
|
|
enable = true;
|
|
};
|
|
};
|
|
luasnip = {
|
|
enable = true;
|
|
};
|
|
cmp = {
|
|
enable = true;
|
|
|
|
settings = {
|
|
snippet = {
|
|
expand = ''
|
|
function(args)
|
|
require('luasnip').lsp_expand(args.body)
|
|
end
|
|
'';
|
|
};
|
|
completion = {
|
|
completeopt = "menu,menuone,noinsert";
|
|
};
|
|
mapping = {
|
|
"<C-n>" = "cmp.mapping.select_next_item()";
|
|
"<C-p>" = "cmp.mapping.select_prev_item()";
|
|
"<C-b>" = "cmp.mapping.scroll_docs(-4)";
|
|
"<C-f>" = "cmp.mapping.scroll_docs(4)";
|
|
"<C-y>" = "cmp.mapping.confirm { select = true }";
|
|
"<C-Space>" = "cmp.mapping.complete {}";
|
|
"<C-l>" = ''
|
|
cmp.mapping(function()
|
|
local luasnip = require('luasnip')
|
|
if luasnip.expand_or_locally_jumpable() then
|
|
luasnip.expand_or_jump()
|
|
end
|
|
end, { 'i', 's' })
|
|
'';
|
|
"<C-h>" = ''
|
|
cmp.mapping(function()
|
|
local luasnip = require('luasnip')
|
|
if luasnip.locally_jumpable(-1) then
|
|
luasnip.jump(-1)
|
|
end
|
|
end, { 'i', 's' })
|
|
'';
|
|
};
|
|
sources = [
|
|
{
|
|
name = "luasnip";
|
|
}
|
|
{
|
|
name = "nvim_lsp";
|
|
}
|
|
{
|
|
name = "path";
|
|
}
|
|
];
|
|
};
|
|
};
|
|
oil = {
|
|
enable = true;
|
|
};
|
|
undotree = {
|
|
enable = true;
|
|
};
|
|
tmux-navigator = {
|
|
enable = true;
|
|
};
|
|
cmp-nvim-lsp = {
|
|
enable = true;
|
|
};
|
|
fidget = {
|
|
enable = true;
|
|
};
|
|
lsp = {
|
|
enable = true;
|
|
servers = {
|
|
nixd = {
|
|
enable = true;
|
|
settings = {
|
|
nixpkgs = {
|
|
expr = "(builtins.getFlake (\"git+file://\" + toString ./.)).inputs.nixpkgs { }";
|
|
};
|
|
formatting = {
|
|
command = ["alejandra"];
|
|
};
|
|
options = {
|
|
nixos = {
|
|
expr = "(builtins.getFlake (\"git+file://\" + toString ./.)).nixosConfigurations.desktop.options";
|
|
};
|
|
nix-darwin = {
|
|
expr = "(builtins.getFlake (\"git+file://\" + toString ./.)).darwinConfigurations.macbook.options";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
ts_ls = {
|
|
enable = true;
|
|
};
|
|
eslint = {
|
|
enable = true;
|
|
};
|
|
html = {
|
|
enable = true;
|
|
};
|
|
cssls = {
|
|
enable = true;
|
|
};
|
|
stylelint_lsp = {
|
|
enable = true;
|
|
};
|
|
volar = {
|
|
enable = true;
|
|
tslsIntegration = true;
|
|
};
|
|
gopls = {
|
|
enable = true;
|
|
};
|
|
bashls = {
|
|
enable = true;
|
|
};
|
|
};
|
|
keymaps = {
|
|
diagnostic = {
|
|
"[d" = "goto_next";
|
|
"]d" = "goto_prev";
|
|
"<leader>d" = "open_float";
|
|
};
|
|
lspBuf = {
|
|
"K" = "hover";
|
|
"gd" = "definition";
|
|
"gr" = "references";
|
|
"<leader>rn" = "rename";
|
|
"<leader>ca" = "code_action";
|
|
};
|
|
};
|
|
};
|
|
neotest = {
|
|
enable = true;
|
|
adapters = {
|
|
jest = {
|
|
enable = true;
|
|
};
|
|
go = {
|
|
enable = true;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|