2024-03-01 08:23:28 +01:00
|
|
|
{ inputs, pkgs, ... }: {
|
|
|
|
imports = [ inputs.nixvim.homeManagerModules.nixvim ];
|
2024-02-14 21:49:54 +01:00
|
|
|
|
|
|
|
# Nixvim
|
|
|
|
programs.nixvim = {
|
|
|
|
enable = true;
|
|
|
|
viAlias = true;
|
|
|
|
vimAlias = true;
|
|
|
|
|
2024-03-16 18:17:16 +01:00
|
|
|
keymaps = [
|
|
|
|
{
|
|
|
|
action = "<cmd>Oil<cr>";
|
|
|
|
key = "<leader>e";
|
|
|
|
options = { silent = true; };
|
|
|
|
}
|
|
|
|
{
|
2024-03-16 18:24:39 +01:00
|
|
|
action = "<cmd>lua require('conform').format({ bufnr = buf, lsp_fallback = true })<cr>";
|
2024-03-16 18:17:16 +01:00
|
|
|
key = "<leader>f";
|
|
|
|
options = { silent = true; };
|
|
|
|
}
|
|
|
|
];
|
2024-02-21 21:30:13 +01:00
|
|
|
|
2024-02-14 21:49:54 +01:00
|
|
|
options = {
|
|
|
|
hlsearch = false;
|
|
|
|
incsearch = true;
|
|
|
|
number = true;
|
|
|
|
relativenumber = true;
|
|
|
|
tabstop = 4;
|
|
|
|
softtabstop = 4;
|
|
|
|
shiftwidth = 4;
|
|
|
|
expandtab = true;
|
|
|
|
smartindent = true;
|
|
|
|
mouse = "";
|
|
|
|
breakindent = true;
|
|
|
|
undofile = true;
|
|
|
|
swapfile = true;
|
|
|
|
ignorecase = true;
|
|
|
|
smartcase = true;
|
|
|
|
signcolumn = "yes";
|
|
|
|
completeopt = "menuone,noselect";
|
|
|
|
updatetime = 50;
|
|
|
|
timeoutlen = 300;
|
|
|
|
colorcolumn = "80";
|
|
|
|
showmode = false;
|
|
|
|
laststatus = 3;
|
|
|
|
splitbelow = true;
|
|
|
|
splitright = true;
|
|
|
|
};
|
|
|
|
|
2024-03-01 08:23:28 +01:00
|
|
|
globals = {
|
2024-02-14 21:49:54 +01:00
|
|
|
mapleader = " ";
|
|
|
|
maplocalleader = ";";
|
|
|
|
};
|
|
|
|
|
2024-03-01 08:23:28 +01:00
|
|
|
extraConfigLuaPre = ''
|
|
|
|
vim.loader.enable()
|
|
|
|
'';
|
|
|
|
|
2024-02-14 21:49:54 +01:00
|
|
|
extraConfigLuaPost = ''
|
2024-03-16 18:24:39 +01:00
|
|
|
vim.notify = require("mini.notify").make_notify()
|
2024-03-01 08:23:28 +01:00
|
|
|
'';
|
2024-03-16 13:13:51 +01:00
|
|
|
extraPackages = with pkgs; [ stylua isort black nixfmt jq shfmt ];
|
2024-02-14 21:49:54 +01:00
|
|
|
plugins = {
|
2024-03-10 20:13:50 +01:00
|
|
|
conform-nvim = {
|
|
|
|
enable = true;
|
|
|
|
formattersByFt = {
|
2024-03-16 13:13:51 +01:00
|
|
|
json = [ "jq" ];
|
2024-03-10 20:13:50 +01:00
|
|
|
lua = [ "stylua" ];
|
|
|
|
python = [ "isort" "black" ];
|
|
|
|
nix = [ "nixfmt" ];
|
2024-03-16 13:13:51 +01:00
|
|
|
sh = [ "shfmt" ];
|
2024-03-10 20:13:50 +01:00
|
|
|
};
|
|
|
|
};
|
|
|
|
lint = {
|
|
|
|
enable = true;
|
|
|
|
lintersByFt = {
|
|
|
|
python = [ "mypy" ];
|
|
|
|
ruby = [ "ruby" ];
|
|
|
|
};
|
|
|
|
};
|
2024-03-01 08:23:28 +01:00
|
|
|
harpoon = {
|
2024-02-14 21:49:54 +01:00
|
|
|
enable = true;
|
|
|
|
keymaps = {
|
|
|
|
addFile = "<leader>a";
|
|
|
|
toggleQuickMenu = "<C-e>";
|
2024-03-01 08:23:28 +01:00
|
|
|
navFile = {
|
|
|
|
"1" = "<C-j>";
|
|
|
|
"2" = "<C-k>";
|
|
|
|
"3" = "<C-l>";
|
|
|
|
"4" = "<C-;>";
|
|
|
|
};
|
2024-02-14 21:49:54 +01:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
oil = {
|
|
|
|
enable = true;
|
|
|
|
defaultFileExplorer = true;
|
|
|
|
extraOptions = { show_hidden = true; };
|
|
|
|
};
|
|
|
|
|
|
|
|
treesitter.enable = true;
|
|
|
|
|
|
|
|
gitsigns = {
|
|
|
|
enable = true;
|
|
|
|
signs = {
|
|
|
|
add.text = "▎";
|
2024-03-01 08:23:28 +01:00
|
|
|
change.text = "▎";
|
|
|
|
changedelete.text = "▎";
|
|
|
|
delete.text = "▎";
|
|
|
|
topdelete.text = "▎";
|
|
|
|
untracked.text = "▎";
|
2024-02-14 21:49:54 +01:00
|
|
|
};
|
|
|
|
onAttach.function = ''
|
|
|
|
function(buffer)
|
|
|
|
local gs = package.loaded.gitsigns
|
|
|
|
|
|
|
|
local function map(mode, l, r, desc)
|
|
|
|
vim.keymap.set(mode, l, r, { buffer = buffer, desc = desc })
|
|
|
|
end
|
|
|
|
|
|
|
|
-- stylua: ignore start
|
|
|
|
map("n", "]g", gs.next_hunk, "Next git hunk")
|
|
|
|
map("n", "[g", gs.prev_hunk, "Previous git hunk")
|
|
|
|
end
|
2024-03-01 08:23:28 +01:00
|
|
|
'';
|
2024-02-14 21:49:54 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
mini = {
|
|
|
|
enable = true;
|
2024-03-01 08:23:28 +01:00
|
|
|
modules = {
|
|
|
|
statusline = { set_vim_settings = false; };
|
|
|
|
comment = { };
|
|
|
|
notify = { };
|
|
|
|
};
|
2024-02-14 21:49:54 +01:00
|
|
|
};
|
|
|
|
|
2024-03-01 08:23:28 +01:00
|
|
|
telescope = {
|
2024-02-14 21:49:54 +01:00
|
|
|
enable = true;
|
2024-03-01 08:23:28 +01:00
|
|
|
extensions = {
|
|
|
|
fzf-native = {
|
2024-02-14 21:49:54 +01:00
|
|
|
enable = true;
|
|
|
|
fuzzy = true;
|
|
|
|
overrideGenericSorter = true;
|
|
|
|
overrideFileSorter = true;
|
|
|
|
caseMode = "smart_case";
|
|
|
|
};
|
2024-03-01 08:23:28 +01:00
|
|
|
ui-select.enable = true;
|
|
|
|
};
|
2024-02-14 21:49:54 +01:00
|
|
|
keymaps = {
|
|
|
|
"<leader>pf" = "find_files";
|
|
|
|
"<C-p>" = "git_files";
|
|
|
|
"<leader>vh" = "help_tags";
|
|
|
|
"<leader>ps" = "grep_string";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
lsp = {
|
|
|
|
enable = true;
|
|
|
|
servers = {
|
|
|
|
lua-ls.enable = true;
|
|
|
|
nil_ls.enable = true;
|
|
|
|
marksman.enable = true;
|
2024-03-03 10:32:54 +01:00
|
|
|
gopls.enable = true;
|
2024-03-07 19:17:20 +01:00
|
|
|
pyright.enable = true;
|
2024-02-14 21:49:54 +01:00
|
|
|
};
|
|
|
|
keymaps = {
|
|
|
|
diagnostic = {
|
|
|
|
"<leader>vd" = "open_float";
|
|
|
|
"[d" = "goto_next";
|
|
|
|
"]d" = "goto_prev";
|
|
|
|
};
|
|
|
|
lspBuf = {
|
|
|
|
K = "hover";
|
|
|
|
gd = "definition";
|
|
|
|
gD = "declaration";
|
|
|
|
gi = "implementation";
|
|
|
|
"<leader>lca" = "code_action";
|
|
|
|
"<leader>lrn" = "rename";
|
|
|
|
"<C-h>" = "signature_help";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
preConfig = ''
|
|
|
|
local function sign_define(args)
|
|
|
|
vim.fn.sign_define(args.name, {
|
|
|
|
texthl = args.name,
|
|
|
|
text = args.text,
|
|
|
|
numhl = "",
|
|
|
|
})
|
|
|
|
end
|
2024-03-01 08:23:28 +01:00
|
|
|
|
2024-02-14 21:49:54 +01:00
|
|
|
sign_define({ name = "DiagnosticSignError", text = "E" })
|
|
|
|
sign_define({ name = "DiagnosticSignWarn", text = "W" })
|
|
|
|
sign_define({ name = "DiagnosticSignHint", text = "H" })
|
|
|
|
sign_define({ name = "DiagnosticSignInfo", text = "I" })
|
2024-03-01 08:23:28 +01:00
|
|
|
'';
|
2024-02-14 21:49:54 +01:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
colorschemes.catppuccin = {
|
|
|
|
enable = true;
|
|
|
|
flavour = "frappe";
|
|
|
|
styles = {
|
|
|
|
functions = [ "bold" ];
|
|
|
|
keywords = [ "bold" ];
|
|
|
|
};
|
|
|
|
};
|
2024-03-01 08:23:28 +01:00
|
|
|
extraPlugins = with pkgs.vimPlugins; [ vim-snippets ];
|
2024-02-14 21:49:54 +01:00
|
|
|
};
|
|
|
|
}
|