136 lines
3.1 KiB
Nix
136 lines
3.1 KiB
Nix
{ config, lib, pkgs, ... }:
|
|
|
|
let
|
|
cfg = config.modules.editors.neovim;
|
|
in {
|
|
options.modules.editors.neovim = {
|
|
enable = lib.mkOption {
|
|
default = false;
|
|
example = true;
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
home.programs.nixvim = {
|
|
enable = true;
|
|
defaultEditor = true;
|
|
|
|
viAlias = true;
|
|
vimAlias = true;
|
|
|
|
options = {
|
|
number = true;
|
|
tabstop = 2;
|
|
shiftwidth = 2;
|
|
expandtab = true;
|
|
foldlevel = 99;
|
|
splitbelow = true;
|
|
splitright = true;
|
|
undofile = true;
|
|
updatetime = 100;
|
|
};
|
|
|
|
globals = {
|
|
mapleader = ",";
|
|
maplocalleader = ",";
|
|
};
|
|
|
|
clipboard = {
|
|
register = "unnamedplus";
|
|
|
|
providers.wl-copy.enable = true;
|
|
};
|
|
|
|
plugins.comment-nvim.enable = true;
|
|
|
|
plugins.hmts.enable = true;
|
|
|
|
plugins.lightline.enable = true;
|
|
|
|
plugins.luasnip.enable = true;
|
|
|
|
plugins.lsp = {
|
|
enable = true;
|
|
servers = {
|
|
bashls.enable = true;
|
|
ccls.enable = true;
|
|
cssls.enable = true;
|
|
eslint.enable = true;
|
|
gopls.enable = true;
|
|
html.enable = true;
|
|
lua-ls.enable = true;
|
|
pylsp.enable = true;
|
|
nixd.enable = true;
|
|
rust-analyzer = {
|
|
enable = true;
|
|
installCargo = true;
|
|
installRustc = true;
|
|
};
|
|
tsserver.enable = true;
|
|
};
|
|
};
|
|
|
|
plugins.nvim-autopairs.enable = true;
|
|
|
|
plugins.nvim-cmp = {
|
|
enable = true;
|
|
autoEnableSources = true;
|
|
sources = [
|
|
{ name = "nvim_lsp"; }
|
|
{ name = "path"; }
|
|
{ name = "buffer"; }
|
|
];
|
|
mapping = {
|
|
"<Tab>" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})";
|
|
"<S-Tab>" = "cmp.mapping(cmp.mapping.select_prev_item(), {'i', 's'})";
|
|
"<CR>" = "cmp.mapping.confirm({ select = true })";
|
|
};
|
|
};
|
|
|
|
plugins.telescope = {
|
|
enable = true;
|
|
keymaps = {
|
|
"<leader>ff" = "find_files";
|
|
"<leader>fg" = "live_grep";
|
|
"<leader>b" = "buffers";
|
|
"<leader>fh" = "help_tags";
|
|
"<C-p>" = "git_files";
|
|
"<C-f>" = "live_grep";
|
|
};
|
|
keymapsSilent = true;
|
|
};
|
|
|
|
plugins.treesitter = {
|
|
enable = true;
|
|
|
|
nixvimInjections = true;
|
|
|
|
folding = true;
|
|
indent = true;
|
|
};
|
|
|
|
plugins.treesitter-refactor = {
|
|
enable = true;
|
|
highlightDefinitions = {
|
|
enable = true;
|
|
clearOnCursorMove = false;
|
|
};
|
|
};
|
|
|
|
plugins.undotree.enable = true;
|
|
|
|
# plugins.gitsigns.enable = true;
|
|
# plugins.gitgutter.enable = true;
|
|
# plugins.goyo.enable = true;
|
|
# plugins.fugitive.enable = true;
|
|
# plugins.fzf-lua.enable = true;
|
|
# plugins.neo-tree.enable = true;
|
|
# plugins.none-ls.enable = true;
|
|
# plugins.nvim-tree.enable = true;
|
|
# plugins.oil.enable = true;
|
|
# plugins.project-nvim.enable = true;
|
|
# plugins.surround.enable = true;
|
|
};
|
|
};
|
|
}
|