Files
Moirai/config/default.nix
2025-03-16 13:20:39 -05:00

208 lines
3.7 KiB
Nix

{ pkgs, opts, ... }: {
# Import all your configuration modules here
imports = [ ./bufferline.nix ];
plugins = {
lualine.enable = true;
luasnip.enable = true;
barbar.enable = true;
nvim-tree.enable = true;
noice.enable = true;
mini.enable = true;
notify.enable = true;
telescope.enable = true;
treesitter.enable = true;
render-markdown.enable = true;
web-devicons.enable = true;
lsp = {
enable = true;
servers = {
#js/typescript
ts_ls.enable = true;
#c/c++
ccls.enable = true;
#nix
nil_ls.enable = true;
#python
pyright.enable = true;
#bash
bashls.enable = true;
#css
cssls.enable = true;
};
};
cmp = {
enable = true;
autoEnableSources = true;
settings = {
sources = [
{ name = "nvim_lsp"; }
{ name = "path"; }
# { name = "buffer"; }
{ name = "luasnip"; }
# { name = "cmdline"; }
];
mapping = {
"[ '<C-n>' ]" = "cmp.mapping.select_next_item()";
"[ '<C-p>' ]" = "cmp.mapping.select_prev_item()";
"[ '<C-y>' ]" = "cmp.mapping.complete()";
"[ '<C-e>' ]" = "cmp.mapping.abort()";
};
snippet.expand = ''
function(args)
require("luasnip").lsp_expand(args.body)
end
'';
};
};
};
globals = {
mapleader = " ";
maplocalleader = " ";
};
opts = {
nu = true;
rnu = true;
scrolloff = 12;
tabstop = 4;
softtabstop = 4;
shiftwidth = 4;
expandtab = true;
smartindent = true;
wrap = false;
hlsearch = false;
incsearch = true;
};
keymaps = [
{
mode = "n";
key = "<leader>ff";
action = "<cmd>Telescope find_files hidden=true<CR>";
}
{
mode = "n";
key = "<leader>fc";
action = "<cmd>Telescope treesitter<CR>";
}
{
mode = "n";
key = "<leader>t";
action = "<cmd>NvimTreeToggle<CR>";
}
{
mode = "n";
key = "<C-.>";
action = "<cmd>BufferNext<CR>";
}
{
mode = "n";
key = "<C-,>";
action = "<cmd>BufferPrevious<CR>";
}
{
mode = "n";
key = "<C-h>";
action = "<cmd>wincmd h<CR>";
}
{
mode = "n";
key = "<C-j>";
action = "<cmd>wincmd j<CR>";
}
{
mode = "n";
key = "<C-k>";
action = "<cmd>wincmd k<CR>";
}
{
mode = "n";
key = "<C-l>";
action = "<cmd>wincmd l<CR>";
}
{
mode = "n";
key = "Q";
action = "<nop>";
}
{
mode = "v";
key = "J";
action = ":m '>+1<CR>gv=gv";
}
{
mode = "v";
key = "K";
action = ":m '<-2<CR>gv=gv";
}
{
mode = "n";
key = "<leader>y";
action = "\"+y";
}
{
mode = "v";
key = "<leader>y";
action = "\"+y";
}
{
mode = "n";
key = "<leader>s";
action = ":%s/\\<<C-r><C-w>\\>/<C-r><C-w>/gI<Left><Left><Left>";
}
];
extraConfigLua = ''
vim.filetype.add({
pattern = { [".*/hypr/.*%.conf"] = "hyprlang" },
})
'';
extraPlugins = with pkgs.vimPlugins; [
pywal-nvim
tokyonight-nvim
llm-nvim
nvim-lspconfig
];
colorscheme = if opts.pywal then "pywal" else "tokyonight-storm";
}