Add neovim config
This commit is contained in:
249
config.nix
Normal file
249
config.nix
Normal file
@@ -0,0 +1,249 @@
|
||||
{ pkgs, inputs, ... }:
|
||||
{
|
||||
colorschemes.tokyonight.enable = true;
|
||||
|
||||
opts = {
|
||||
number = true;
|
||||
relativenumber = true;
|
||||
|
||||
# Show whitespace
|
||||
list = true;
|
||||
listchars.__raw = "{ tab = '» ', trail = '·', nbsp = '␣', lead = '·'}";
|
||||
|
||||
# Start scrolling when the cursor is X lines away from edge
|
||||
scrolloff = 10;
|
||||
|
||||
ignorecase = true;
|
||||
smartcase = true;
|
||||
|
||||
cindent = true;
|
||||
|
||||
signcolumn = "yes";
|
||||
};
|
||||
|
||||
clipboard.providers.wl-copy.enable = true;
|
||||
clipboard.providers.xclip.enable = true;
|
||||
|
||||
plugins = {
|
||||
dashboard = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
theme = "hyper";
|
||||
|
||||
config = {
|
||||
header = [
|
||||
"███╗ ██╗██╗██╗ ██╗██╗ ██╗██╗███╗ ███╗"
|
||||
"████╗ ██║██║╚██╗██╔╝██║ ██║██║████╗ ████║"
|
||||
"██╔██╗ ██║██║ ╚███╔╝ ██║ ██║██║██╔████╔██║"
|
||||
"██║╚██╗██║██║ ██╔██╗ ╚██╗ ██╔╝██║██║╚██╔╝██║"
|
||||
"██║ ╚████║██║██╔╝ ██╗ ╚████╔╝ ██║██║ ╚═╝ ██║"
|
||||
"╚═╝ ╚═══╝╚═╝╚═╝ ╚═╝ ╚═══╝ ╚═╝╚═╝ ╚═╝"
|
||||
""
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
telescope = {
|
||||
enable = true;
|
||||
|
||||
keymaps = {
|
||||
"<C-f>" = "live_grep";
|
||||
"<C-p>" = "git_files";
|
||||
"<C-o>" = "find_files";
|
||||
};
|
||||
|
||||
extensions = {
|
||||
fzf-native = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
fuzzy = true;
|
||||
override_file_sorter = true;
|
||||
override_generic_sorter = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Needed for telescope
|
||||
web-devicons.enable = true;
|
||||
|
||||
lualine = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
options = {
|
||||
component_separators = "|";
|
||||
section_separators = "";
|
||||
globalstatus = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
neo-tree = {
|
||||
enable = true;
|
||||
closeIfLastWindow = true;
|
||||
filesystem = {
|
||||
filteredItems = {
|
||||
visible = true;
|
||||
hideDotfiles = false;
|
||||
hideGitignored = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
neogit.enable = true;
|
||||
|
||||
tiny-inline-diagnostic = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
options = {
|
||||
show_source.enabled = true;
|
||||
settings.auto_start = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
coq-nvim = {
|
||||
enable = true;
|
||||
installArtifacts = true;
|
||||
settings.auto_start = "shut-up";
|
||||
|
||||
luaConfig.post = ''
|
||||
vim.g.coq_settings = {
|
||||
keymap = { jump_to_mark = "" },
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
nvim-autopairs.enable = true;
|
||||
comment.enable = true;
|
||||
sleuth.enable = true;
|
||||
|
||||
rustaceanvim.enable = true;
|
||||
|
||||
mkdnflow = {
|
||||
enable = true;
|
||||
|
||||
mappings = {
|
||||
MkdnEnter = {
|
||||
key = "<CR>";
|
||||
modes = [ "n" "v" "i" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
lsp = {
|
||||
enable = true;
|
||||
|
||||
keymaps.diagnostic = {
|
||||
"<leader>j" = "goto_next";
|
||||
"<leader>k" = "goto_prev";
|
||||
};
|
||||
|
||||
servers = {
|
||||
typos_lsp.enable = true;
|
||||
markdown_oxide.enable = true;
|
||||
|
||||
ltex.enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
extraPlugins = [
|
||||
(pkgs.vimUtils.buildVimPlugin {
|
||||
name = "hml";
|
||||
src = inputs.hml;
|
||||
})
|
||||
|
||||
(pkgs.vimUtils.buildVimPlugin {
|
||||
name = "typst-preview";
|
||||
src = inputs.typst-preview;
|
||||
})
|
||||
];
|
||||
|
||||
extraConfigLua = ''
|
||||
require("hml").setup()
|
||||
require("typst-preview").setup()
|
||||
'';
|
||||
|
||||
extraPackages = with pkgs; [
|
||||
# Telescope
|
||||
ripgrep
|
||||
# typst-preview
|
||||
typst
|
||||
poppler-utils # (pdfinfo)
|
||||
];
|
||||
|
||||
keymaps = [
|
||||
{
|
||||
action = "<Cmd>Dashboard<CR>";
|
||||
key = "<leader>d";
|
||||
}
|
||||
{
|
||||
action = "<Cmd>Neotree toggle right<CR>";
|
||||
key = "<leader>f";
|
||||
}
|
||||
{
|
||||
action = "<Cmd>sp<CR><Cmd>wincmd j<CR><Cmd>term<CR>15<C-w>-i";
|
||||
key = "<leader>t";
|
||||
}
|
||||
{
|
||||
# Exit terminal mode
|
||||
action = "<C-\\><C-n>";
|
||||
key = "<C-e>";
|
||||
mode = [ "t" ];
|
||||
}
|
||||
{
|
||||
action = "<Cmd>vsplit<CR>";
|
||||
key = "<leader>v";
|
||||
}
|
||||
{
|
||||
action = "<Cmd>split<CR>";
|
||||
key = "<leader>h";
|
||||
}
|
||||
{
|
||||
action = "<Cmd>tabnew<CR>";
|
||||
key = "<leader>n";
|
||||
}
|
||||
{
|
||||
action = "<Cmd>tabn<CR>";
|
||||
key = "<C-]>";
|
||||
}
|
||||
{
|
||||
action = "<Cmd>tabp<CR>";
|
||||
key = "<C-[>";
|
||||
}
|
||||
{
|
||||
action = "<Cmd>lua require(\"typst-preview\").start()<CR>";
|
||||
key = "<C-m>s";
|
||||
}
|
||||
{
|
||||
action = "<Cmd>lua require(\"typst-preview\").stop()<CR>";
|
||||
key = "<C-m>q";
|
||||
}
|
||||
{
|
||||
action = "<Cmd>lua require(\"typst-preview\").prev_page()<CR>";
|
||||
key = "<C-m>k";
|
||||
}
|
||||
{
|
||||
action = "<Cmd>lua require(\"typst-preview\").next_page()<CR>";
|
||||
key = "<C-m>j";
|
||||
}
|
||||
] ++ (
|
||||
builtins.concatMap (k: [
|
||||
{
|
||||
action = "<Cmd>wincmd ${k}<CR>";
|
||||
key = "<C-${k}>";
|
||||
}
|
||||
{
|
||||
action = "<C-\\><C-n><Cmd>wincmd ${k} <CR>";
|
||||
key = "<C-${k}>";
|
||||
mode = [ "t" ];
|
||||
}
|
||||
]) ["h" "j" "k" "l"]
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user