nixos-config/home/modules/nixvim.nix

177 lines
4.1 KiB
Nix
Raw Normal View History

2024-02-12 20:08:44 +01:00
{ pkgs, lib, config, inputs, outputs, ... }:
{
programs.nixvim = {
enable = true;
globals.mapleader = " ";
extraConfigLua = builtins.readFile ../config-files/nvim/init.lua;
clipboard.providers.wl-copy.enable = true;
options = {
number = true; # Show line numbers
relativenumber = true; # Show relative line numbers
shiftwidth = 2; # Tab width should be 2
};
colorschemes.catppuccin.enable = true;
plugins = {
lualine.enable = true;
lsp-format = {
enable = true;
};
lsp = {
enable = true;
servers = {
lua-ls.enable = true;
clangd.enable = true;
svelte.enable = true;
tsserver.enable = true;
eslint.enable = true;
rust-analyzer = {
enable = true;
installLanguageServer = false;
installCargo = false;
installRustc = false;
};
nil_ls.enable = true;
};
};
gitsigns.enable = true;
fugitive.enable = true;
treesitter = {
enable = true;
folding = true;
indent = true;
nixvimInjections = true;
};
treesitter-refactor = {
enable = true;
smartRename.enable = true;
highlightCurrentScope.enable = true;
navigation.enable = true;
};
cursorline.enable = true;
#nvim-cmp = {
# enable = true;
# sources = [
# {name = "nvim_lsp";}
# {name = "path";}
# {name = "buffer";}
# ];
#};
nvim-cmp = {
enable = true;
autoEnableSources = true;
sources = [
{name = "nvim_lsp";}
{name = "path";}
{name = "buffer";}
{name = "luasnip";}
];
snippet.expand = "luasnip";
mapping = {
"<CR>" = "cmp.mapping.confirm({ select = true })";
"<Tab>" = {
action = ''
function(fallback)
local luasnip = require 'luasnip'
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expandable() then
luasnip.expand()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
else
fallback()
end
end
'';
modes = [ "i" "s" ];
};
};
};
telescope.enable = true;
telescope.extensions = {
file_browser.enable = true;
};
which-key.enable = true;
cmp-nvim-lsp.enable = true;
cmp-nvim-lua.enable = true;
noice.enable = true;
notify.enable = true;
luasnip.enable = true;
neo-tree.enable = true;
presence-nvim.enable = true;
crates-nvim.enable = true;
fidget.enable = true;
alpha = {
enable = true;
theme = "startify";
};
bufferline.enable = true;
};
keymaps = [
{
mode = "n";
key = "<leader>ff";
options.silent = true;
action = "<cmd>Telescope file_browser<CR>";
}
{
mode = "n";
key = "<leader>bb";
options.silent = true;
action = "<cmd>Telescope buffers<CR>";
}
{
mode = "n";
key = "<leader>Gp";
action = "<cmd>Git pull<CR>";
}
{
mode = "n";
key = "<leader>GP";
action = "<cmd>Git push<CR>";
}
{
mode = "n";
key = "<leader>Gc";
action = "<cmd>Git commit<CR>";
}
{
mode = "n";
key = "<leader>Ga";
action = "<cmd>Git add .<CR>";
}
{
mode = "n";
key = "<leader>Gd";
action = "<cmd>Git diff<CR>";
}
{
mode = "n";
key = "<leader>nt";
action = "<cmd>Neotree toggle left<CR>";
}
{
mode = "n";
key = "<leader>P";
action = "\"+p";
}
{
mode = [ "n" "v" ];
key = "<leader>y";
action = "[[\"+y]]";
}
{
mode = [ "n" ];
key = "<leader>Y";
action = "[[\"+Y]]";
}
];
};
}