feat: add more plugins
This commit is contained in:
parent
f1890f15be
commit
44bcf963b2
2 changed files with 307 additions and 249 deletions
|
@ -22,12 +22,6 @@ in
|
|||
];
|
||||
|
||||
# programs.neovim = {
|
||||
# enable = true;
|
||||
# package = inputs.neovim-nightly-overlay.packages.${pkgs.system}.default;
|
||||
# vimAlias = true;
|
||||
# vimdiffAlias = true;
|
||||
# withNodeJs = true;
|
||||
# withPython3 = true;
|
||||
# extraPackages = with pkgs;
|
||||
# [
|
||||
# alejandra
|
||||
|
@ -49,23 +43,39 @@ in
|
|||
# taplo
|
||||
# yamllint
|
||||
# ];
|
||||
# extraLuaConfig = readFile ./options.lua;
|
||||
# lazy.enable = true;
|
||||
# };
|
||||
|
||||
programs.nixvim = {
|
||||
programs.nixvim = lib.mkMerge [
|
||||
{
|
||||
enable = true;
|
||||
package = inputs.neovim-nightly-overlay.packages.${pkgs.system}.default;
|
||||
vimAlias = true;
|
||||
|
||||
colorschemes.catppuccin.enable = true;
|
||||
colorschemes.catppuccin.settings.flavour = "macchiato";
|
||||
|
||||
extraConfigLuaPre = readFile ./options.lua;
|
||||
performance = {
|
||||
byteCompileLua = {
|
||||
enable = true;
|
||||
configs = true;
|
||||
initLua = true;
|
||||
nvimRuntime = true;
|
||||
plugins = true;
|
||||
};
|
||||
combinePlugins.enable = true;
|
||||
};
|
||||
}
|
||||
{
|
||||
colorschemes.catppuccin = {
|
||||
enable = true;
|
||||
settings.flavour = "macchiato";
|
||||
};
|
||||
}
|
||||
{
|
||||
plugins.lualine.enable = true;
|
||||
|
||||
plugins.cmp.autoEnableSources = true;
|
||||
plugins.cmp.enable = true;
|
||||
plugins.cmp.settings.sources = [
|
||||
}
|
||||
{
|
||||
plugins.cmp = {
|
||||
autoEnableSources = true;
|
||||
enable = true;
|
||||
settings.sources = [
|
||||
{ priority = 1; name = "async_path"; }
|
||||
{ priority = 1; name = "buffer"; }
|
||||
{ priority = 2; name = "nvim_lsp"; }
|
||||
|
@ -73,7 +83,7 @@ in
|
|||
{ priority = 4; name = "luasnip"; }
|
||||
{ priority = 4; name = "vimtex"; }
|
||||
];
|
||||
plugins.cmp.settings.mapping = {
|
||||
settings.mapping = {
|
||||
__raw = ''
|
||||
cmp.mapping.preset.insert({
|
||||
['<C-b>'] = cmp.mapping.scroll_docs(-4),
|
||||
|
@ -120,9 +130,12 @@ in
|
|||
})
|
||||
'';
|
||||
};
|
||||
|
||||
plugins.luasnip.enable = true;
|
||||
plugins.luasnip.settings = {
|
||||
};
|
||||
}
|
||||
{
|
||||
plugins.luasnip = {
|
||||
enable = true;
|
||||
settings = {
|
||||
history = true;
|
||||
update_events = "TextChanged,TextChangedI";
|
||||
delete_check_events = "TextChanged";
|
||||
|
@ -135,12 +148,15 @@ in
|
|||
}'';
|
||||
ft_func.__raw = ''require("luasnip.extras.filetype_functions").from_pos_or_filetype'';
|
||||
};
|
||||
|
||||
plugins.lsp.enable = true;
|
||||
plugins.lsp.inlayHints = true;
|
||||
plugins.lsp.servers.nil-ls.enable = true;
|
||||
plugins.lsp.servers.nixd.enable = true;
|
||||
plugins.lsp.servers.nixd.extraOptions.settings.nixd = {
|
||||
};
|
||||
}
|
||||
{
|
||||
plugins.lsp = {
|
||||
enable = true;
|
||||
inlayHints = true;
|
||||
servers.nil-ls.enable = true;
|
||||
servers.nixd.enable = true;
|
||||
servers.nixd.extraOptions.settings.nixd = {
|
||||
nixpkgs = {
|
||||
expr = "import <nixpkgs> { }";
|
||||
};
|
||||
|
@ -156,6 +172,9 @@ in
|
|||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
{
|
||||
plugins.lspsaga = {
|
||||
enable = true;
|
||||
codeAction.keys.quit = "<esc>";
|
||||
|
@ -189,9 +208,11 @@ in
|
|||
}
|
||||
];
|
||||
};
|
||||
|
||||
}
|
||||
{
|
||||
plugins.nvim-ufo.enable = true;
|
||||
|
||||
}
|
||||
{
|
||||
plugins.treesitter = {
|
||||
enable = true;
|
||||
folding = true;
|
||||
|
@ -199,48 +220,71 @@ in
|
|||
settings.indent.enable = true;
|
||||
settings.highlight.enable = true;
|
||||
};
|
||||
|
||||
plugins.which-key.enable = true;
|
||||
plugins.lastplace.enable = true;
|
||||
plugins.comment.enable = true;
|
||||
plugins.ts-context-commentstring.enable = true;
|
||||
|
||||
performance.combinePlugins.standalonePlugins = [
|
||||
"nvim-treesitter"
|
||||
];
|
||||
}
|
||||
{ plugins.which-key.enable = true; }
|
||||
{ plugins.lastplace.enable = true; }
|
||||
{ plugins.comment.enable = true; }
|
||||
{ plugins.ts-context-commentstring.enable = true; }
|
||||
{
|
||||
plugins.vimtex = {
|
||||
enable = true;
|
||||
settings.view_method = "zathura";
|
||||
};
|
||||
|
||||
plugins.todo-comments.enable = true;
|
||||
plugins.todo-comments.keymaps.todoTelescope.key = "<leader>fc";
|
||||
|
||||
plugins.conform-nvim.enable = true;
|
||||
plugins.conform-nvim.settings.formatters_by_ft = {
|
||||
}
|
||||
{
|
||||
plugins.todo-comments = {
|
||||
enable = true;
|
||||
keymaps.todoTelescope.key = "<leader>fc";
|
||||
};
|
||||
}
|
||||
{
|
||||
plugins.conform-nvim = {
|
||||
enable = true;
|
||||
settings.formatters_by_ft = {
|
||||
"*" = [ "codespell" "trim_whitespace" ];
|
||||
elixir = [ "mix" ];
|
||||
gleam = [ "gleam" ];
|
||||
go = [ "gofmt" ];
|
||||
json = [ "jq" ];
|
||||
lua = [ "stylua" ];
|
||||
nix = [ [ "nixpkgs_fmt" "alejandra" ] ];
|
||||
python = [ [ "ruff_fix" "isort" ] [ "ruff_format" "black" ] ];
|
||||
nix.__raw = ''{ "nixpkgs_fmt", "alejandra", stop_after_first=true }'';
|
||||
python.__raw = ''
|
||||
function(bufnr)
|
||||
return { first("ruff_organize_imports", "isort"), first("ruff_format", "black")}
|
||||
end
|
||||
'';
|
||||
rust = [ "rustfmt" ];
|
||||
sh = [ "shfmt" ];
|
||||
tex = [ "latexindent" ];
|
||||
toml = [ "taplo" ];
|
||||
yaml = [ "yamlfix" ];
|
||||
};
|
||||
|
||||
keymaps = [
|
||||
{ key = "<esc>"; action = "<cmd>noh<cr><esc>"; options.desc = "Escape and clear hlsearch"; mode = [ "i" "n" ]; }
|
||||
];
|
||||
};
|
||||
opts.formatexpr = "v:lua.require'conform'.formatexpr()";
|
||||
extraConfigLuaPre = ''
|
||||
---@param bufnr integer
|
||||
---@param ... string
|
||||
---@return string
|
||||
local function first(bufnr, ...)
|
||||
local conform = require("conform")
|
||||
for i = 1, select("#", ...) do
|
||||
local formatter = select(i, ...)
|
||||
if conform.get_formatter_info(formatter, bufnr).available then
|
||||
return formatter
|
||||
end
|
||||
end
|
||||
return select(1, ...)
|
||||
end
|
||||
|
||||
extraConfigLua = ''
|
||||
vim.api.nvim_create_user_command("Format", function(opts)
|
||||
require("conform").format({ formatters = opts.fargs })
|
||||
end, {
|
||||
nargs = "+",
|
||||
complete = function()
|
||||
local formatters_by_ft = require("conform").formatters_by_ft
|
||||
local names = formatters_by_ft[vim.bo.filetype] or formatters_by_ft["_"] or {}
|
||||
names = vim.list_extend(names, formatters_by_ft["*"] or {})
|
||||
names = vim.tbl_flatten(names)
|
||||
|
@ -254,12 +298,24 @@ in
|
|||
end,
|
||||
})
|
||||
'';
|
||||
|
||||
plugins.oil.enable = true;
|
||||
|
||||
plugins.telescope.enable = true;
|
||||
plugins.telescope.extensions.fzf-native.enable = true;
|
||||
plugins.telescope.keymaps = {
|
||||
performance.combinePlugins.standalonePlugins = [
|
||||
"conform.nvim"
|
||||
];
|
||||
keymaps = [
|
||||
{ key = "<leader>cf"; action.__raw = ''function() require("conform").format() end''; options.desc = "Format current file"; }
|
||||
];
|
||||
}
|
||||
{
|
||||
keymaps = [
|
||||
{ key = "<esc>"; action = "<cmd>noh<cr><esc>"; options.desc = "Escape and clear hlsearch"; mode = [ "i" "n" ]; }
|
||||
];
|
||||
}
|
||||
{ plugins.oil.enable = true; }
|
||||
{
|
||||
plugins.telescope = {
|
||||
enable = true;
|
||||
extensions.fzf-native.enable = true;
|
||||
keymaps = {
|
||||
"<leader>ff" = {
|
||||
action = "find_files";
|
||||
options.desc = "Find files";
|
||||
|
@ -285,27 +341,29 @@ in
|
|||
options.desc = "Recent files";
|
||||
};
|
||||
};
|
||||
|
||||
plugins.nvim-autopairs.enable = true;
|
||||
|
||||
plugins.surround.enable = true;
|
||||
|
||||
extraConfigLuaPre = readFile ./options.lua;
|
||||
performance = {
|
||||
byteCompileLua = {
|
||||
enable = true;
|
||||
configs = true;
|
||||
initLua = true;
|
||||
nvimRuntime = true;
|
||||
plugins = true;
|
||||
};
|
||||
combinePlugins.enable = true;
|
||||
combinePlugins.standalonePlugins = [
|
||||
"nvim-treesitter"
|
||||
"conform.nvim"
|
||||
}
|
||||
{ plugins.nvim-autopairs.enable = true; }
|
||||
{ plugins.surround.enable = true; }
|
||||
{
|
||||
plugins.lint.enable = true;
|
||||
# TODO: add linters
|
||||
plugins.lint.lintersByFt = { };
|
||||
}
|
||||
{
|
||||
plugins.marks.enable = true;
|
||||
plugins.marks.defaultMappings = false;
|
||||
}
|
||||
{
|
||||
plugins.hmts.enable = true;
|
||||
performance.combinePlugins.standalonePlugins = [ "hmts.nvim" ];
|
||||
}
|
||||
{ plugins.gitsigns.enable = true; }
|
||||
{ plugins.fugitive.enable = true; }
|
||||
{ plugins.friendly-snippets.enable = true; }
|
||||
{ plugins.direnv.enable = true; }
|
||||
{ plugins.crates-nvim.enable = true; }
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@ vim.opt.termguicolors = true
|
|||
vim.opt.undofile = true
|
||||
vim.opt.undolevels = 10000
|
||||
vim.opt.updatetime = 300
|
||||
vim.opt.foldlevel = 2
|
||||
vim.opt.foldlevel = 99
|
||||
vim.opt_local.spell = true
|
||||
vim.opt_local.spelllang = { "en", "de_20" } -- all English regions and new German spelling
|
||||
|
||||
|
|
Loading…
Reference in a new issue