1
Files
flake-nixinator/home/modules/neovim/interface.nix

228 lines
4.7 KiB
Nix

{
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
'';
}
]