Michael Thomson a2ab0fce66
neotest
Signed-off-by: Michael Thomson <michael@michaelthomson.dev>
2024-11-19 08:33:30 -05:00

299 lines
6.3 KiB
Nix

{
inputs,
pkgs,
config,
...
}: {
imports = [
inputs.nixvim.homeManagerModules.nixvim
];
home.packages = with pkgs; [
alejandra
ripgrep
];
programs.nixvim = {
enable = true;
defaultEditor = true;
colorschemes = {
kanagawa = {
enable = true;
};
};
globals = {
mapleader = " ";
maplocalleader = " ";
};
opts = {
number = true;
relativenumber = true;
mouse = "a";
showmode = false;
laststatus = 3;
swapfile = false;
clipboard = {
register = "unnamedplus";
};
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>";
}
];
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;
};
};
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()
if luasnip.expand_or_locally_jumpable() then
luasnip.expand_or_jump()
end
end, { 'i', 's' })
'';
"<C-h>" = ''
cmp.mapping(function()
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 = {
formatting = {
command = ["alejandra"];
};
options = {
nix-darwin = {
expr = "(builtins.getFlake (\"git+file://\" + toString ./.)).darwinConfigurations.macbook.options";
};
home-manager = {
expr = "(import <home-manager/modules> { configuration = ~/.config/home-manager/home.nix; pkgs = import <nixpkgs> {}; }).options";
};
};
};
};
ts_ls = {
enable = true;
};
eslint = {
enable = true;
};
html = {
enable = true;
};
cssls = {
enable = true;
};
stylelint_lsp = {
enable = true;
};
volar = {
enable = true;
tslsIntegration = 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;
};
};
};
};
};
}