Split interface/language plugins to file
This commit is contained in:
227
home/modules/neovim/interface.nix
Normal file
227
home/modules/neovim/interface.nix
Normal file
@ -0,0 +1,227 @@
|
||||
{
|
||||
lib,
|
||||
mylib,
|
||||
pkgs,
|
||||
...
|
||||
}: [
|
||||
{
|
||||
name = "lualine";
|
||||
pkg = pkgs.vimPlugins.lualine-nvim;
|
||||
lazy = false;
|
||||
config = ''
|
||||
function(_, opts)
|
||||
require("lualine").setup(opts)
|
||||
end
|
||||
'';
|
||||
opts = {
|
||||
extensions = ["fzf" "chadtree" "neo-tree" "toggleterm" "trouble"];
|
||||
|
||||
options = {
|
||||
always_divide_middle = true;
|
||||
globalstatus = true;
|
||||
ignore_focus = ["neo-tree" "chadtree"];
|
||||
section_separators = {
|
||||
left = "";
|
||||
right = "";
|
||||
# left = "";
|
||||
# right = "";
|
||||
};
|
||||
|
||||
component_separators = {
|
||||
left = "";
|
||||
right = "";
|
||||
# left = "";
|
||||
# right = "";
|
||||
};
|
||||
};
|
||||
|
||||
sections = {
|
||||
lualine_a = [
|
||||
{
|
||||
name = "mode";
|
||||
# extraConfig = {
|
||||
# separator = {
|
||||
# left = "";
|
||||
# };
|
||||
# right_padding = "2";
|
||||
# };
|
||||
}
|
||||
];
|
||||
lualine_b = ["branch" "diff" "diagnostics"];
|
||||
lualine_c = [
|
||||
{
|
||||
name = "filename";
|
||||
extraConfig = {
|
||||
path = 1;
|
||||
};
|
||||
}
|
||||
];
|
||||
|
||||
lualine_x = ["filetype" "encoding" "fileformat"];
|
||||
lualine_y = ["progress" "searchcount" "selectioncount"];
|
||||
lualine_z = [
|
||||
{
|
||||
name = "location";
|
||||
# extraConfig = {
|
||||
# separator = {
|
||||
# right = "";
|
||||
# };
|
||||
# left_padding = "2";
|
||||
# };
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
tabline = {
|
||||
lualine_a = ["buffers"];
|
||||
lualine_z = ["tabs"];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
{
|
||||
name = "noice";
|
||||
pkg = pkgs.vimPlugins.noice-nvim;
|
||||
dependencies = [
|
||||
{
|
||||
name = "nui"; # For noice
|
||||
pkg = pkgs.vimPlugins.nui-nvim;
|
||||
lazy = false;
|
||||
}
|
||||
];
|
||||
lazy = false;
|
||||
config = ''
|
||||
function(_, opts)
|
||||
require("noice").setup(opts)
|
||||
end
|
||||
'';
|
||||
opts = {
|
||||
presets = {
|
||||
bottom_search = false;
|
||||
command_palette = true;
|
||||
long_message_to_split = true;
|
||||
inc_rename = true;
|
||||
lsp_doc_border = true;
|
||||
};
|
||||
|
||||
lsp = {
|
||||
documentation = {
|
||||
opts = {
|
||||
lang = "markdown";
|
||||
replace = true;
|
||||
render = "plain";
|
||||
border = "rounded"; # single or rounded
|
||||
format = ["{message}"];
|
||||
win_options = {
|
||||
concealcursor = "n";
|
||||
conceallevel = 3;
|
||||
};
|
||||
};
|
||||
view = "hover";
|
||||
};
|
||||
|
||||
override = {
|
||||
"vim.lsp.util.convert_input_to_markdown_lines" = true;
|
||||
"vim.lsp.util.stylize_markdown" = true;
|
||||
"cmp.entry.get_documentation" = true;
|
||||
};
|
||||
};
|
||||
|
||||
notify = {
|
||||
enabled = true;
|
||||
};
|
||||
|
||||
popupmenu = {
|
||||
enabled = true;
|
||||
backend = "nui"; # cmp completion is broken
|
||||
};
|
||||
|
||||
# cmdline.enabled = false;
|
||||
# messages.enabled = false;
|
||||
|
||||
routes = [
|
||||
# Hide inline search count info
|
||||
{
|
||||
filter = {
|
||||
event = "msg_show";
|
||||
kind = "search_count";
|
||||
};
|
||||
opts = {skip = true;};
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
{
|
||||
name = "notify";
|
||||
pkg = pkgs.vimPlugins.nvim-notify;
|
||||
lazy = false;
|
||||
config = ''
|
||||
function(_, opts)
|
||||
vim.notify = require("notify")
|
||||
require("notify").setup(opts)
|
||||
end
|
||||
'';
|
||||
}
|
||||
|
||||
{
|
||||
name = "telescope";
|
||||
pkg = pkgs.vimPlugins.telescope-nvim;
|
||||
dependencies = [
|
||||
{
|
||||
name = "plenary"; # For telescope
|
||||
pkg = pkgs.vimPlugins.plenary-nvim;
|
||||
}
|
||||
{
|
||||
name = "telescope-undo";
|
||||
pkg = pkgs.vimPlugins.telescope-undo-nvim;
|
||||
}
|
||||
{
|
||||
name = "telescope-ui-select";
|
||||
pkg = pkgs.vimPlugins.telescope-ui-select-nvim;
|
||||
}
|
||||
{
|
||||
name = "telescope-fzf-native";
|
||||
pkg = pkgs.vimPlugins.telescope-fzf-native-nvim;
|
||||
}
|
||||
];
|
||||
lazy = false;
|
||||
config = let
|
||||
extensions = mylib.generators.toLuaObject [
|
||||
"undo"
|
||||
"ui-select"
|
||||
"fzf"
|
||||
];
|
||||
in ''
|
||||
function(_, opts)
|
||||
local telescope = require("telescope")
|
||||
telescope.setup(opts)
|
||||
|
||||
for i, extension in ipairs(${extensions}) do
|
||||
telescope.load_extension(extension)
|
||||
end
|
||||
end
|
||||
'';
|
||||
opts = {
|
||||
defaults = {
|
||||
mappings = {
|
||||
i = {
|
||||
"<Esc>" = {__raw = ''function(...) return require("telescope.actions").close(...) end'';};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
{
|
||||
name = "which-key";
|
||||
pkg = pkgs.vimPlugins.which-key-nvim;
|
||||
lazy = false;
|
||||
priority = 100;
|
||||
config = ''
|
||||
function(_, opts)
|
||||
require("which-key").setup(opts)
|
||||
end
|
||||
'';
|
||||
}
|
||||
]
|
Reference in New Issue
Block a user