nixos-config/home/modules/nixvim.nix

457 lines
19 KiB
Nix
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
pkgs,
lib,
config,
inputs,
outputs,
...
}: {
programs.nixvim = {
enable = true;
globals.mapleader = " ";
extraConfigLua = builtins.readFile ../config-files/nvim/init.lua;
# extraPlugins = with pkgs.vimPlugins; [headlines-nvim];
clipboard.providers.wl-copy.enable = true;
options = {
number = true; # Show line numbers
relativenumber = true; # Show relative line numbers
shiftwidth = 2; # Tab width should be 2
};
colorschemes.catppuccin.enable = true;
plugins = {
headlines.enable = true;
twilight.enable = true;
comment-nvim = {
enable = true;
};
indent-blankline.enable = true;
lualine.enable = true;
lsp-format = {enable = true;};
copilot-lua = {
enable = true;
suggestion = {
enabled = false;
};
panel.enabled = false;
};
copilot-cmp.enable = true;
neocord.enable = true;
rustaceanvim = {
enable = true;
settings = {
dap.autoloadConfigurations = true;
dap.adapter = let
code-lldb = pkgs.vscode-extensions.vadimcn.vscode-lldb;
in {
executable.command = "${code-lldb}/share/vscode/extensions/vadimcn.vscode-lldb/adapter/codelldb";
executable.args = [
"--liblldb"
"${code-lldb}/share/vscode/extensions/vadimcn.vscode-lldb/lldb/lib/liblldb.dylib"
"--port"
"31337"
];
type = "server";
port = "31337";
host = "127.0.0.1";
};
};
server = {
settings = {
inlayHints = {
closureStyle = "rust_analyzer";
};
typing.autoClosingAngleBrackets.enable = true;
};
};
};
lsp = {
enable = true;
inlayHints = true;
servers = {
typst-lsp.enable = true;
typos-lsp.enable = true;
docker-compose-language-service.enable = true;
pylsp.enable = true;
bashls.enable = true;
lua-ls.enable = true;
gopls.enable = true;
nushell.enable = true;
clangd.enable = true;
svelte.enable = true;
tsserver.enable = true;
java-language-server.enable = true;
hls.enable = true;
eslint.enable = true;
# rust-analyzer = {
# enable = true;
# installCargo = false;
# installRustc = false;
# };
nil_ls.enable = true;
};
};
dap = {
enable = true;
extensions = {
dap-virtual-text.enable = true;
dap-ui.enable = true;
};
};
gitsigns.enable = true;
fugitive.enable = true;
nix-develop.enable = true;
treesitter = {
enable = true;
folding = true;
indent = true;
nixvimInjections = true;
};
treesitter-refactor = {
enable = true;
smartRename.enable = true;
highlightCurrentScope.enable = true;
navigation.enable = true;
};
cursorline.enable = true;
cmp = {
enable = true;
autoEnableSources = true;
settings = {
snippet = {
expand = "function(args) require('luasnip').lsp_expand(args.body) end";
};
sources = [
{name = "nvim_lsp";}
{name = "path";}
{name = "buffer";}
{name = "luasnip";}
{name = "copilot";}
];
#mapping = {
# __raw = ''
# cmp.mapping.preset.insert({
# ['<Tab>'] =
# })
# '';
#};
mapping = {
"<CR>" = ''
cmp.mapping.confirm({ select = true })
'';
"<Tab>" = ''
function(fallback)
local luasnip = require('luasnip')
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expandable() then
luasnip.expand()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
else
fallback()
end
end
'';
};
};
};
telescope.enable = true;
telescope.extensions = {file-browser.enable = true;};
which-key.enable = true;
cmp-nvim-lsp.enable = true;
cmp-nvim-lua.enable = true;
noice.enable = true;
notify.enable = true;
luasnip.enable = true;
cmp_luasnip.enable = true;
neo-tree.enable = true;
# presence-nvim.enable = true;
crates-nvim.enable = true;
fidget.enable = true;
alpha = {
enable = true;
theme = null;
iconsEnabled = true;
layout = [
{
type = "padding";
val = 4;
}
{
type = "text";
# val = [
# " ▒██ ██▒ █████ ▄▄▄█████▓ ▄████▄ "
# " ▒▒ █ █ ▒░▒██▓ ██▒▓ ██▒ ▓▒▒██▀ ▀█ "
# " ░░ █ ░▒██▒ ██░▒ ▓██░ ▒░▒▓█ ▄ "
# " ░ █ █ ▒ ░██ █▀ ░░ ▓██▓ ░ ▒▓▓▄ ▄██▒ "
# " ▒██▒ ▒██▒░▒███▒█▄ ▒██▒ ░ ▒ ▓███▀ ░ "
# " ▒▒ ░ ░▓ ░░░ ▒▒░ ▒ ▒ ░░ ░ ░▒ ▒ ░ "
# " ░░ ░▒ ░ ░ ▒░ ░ ░ ░ ▒ "
# " ░ ░ ░ ░ ░ ░ "
# " ░ ░ ░ ░ ░ "
# " ░ "
# ];
val = [
" "
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
" "
];
#val = [
# " ███████████████ ██████████████████"
# " ███████████████ ██ "
# " ███████████████ ██████████████████"
# " ███████████████ ██ ██"
# " ███████████████ ██████████████████"
# " ███████████████ █ ██ █ "
# " ███████████████ █ ██ █ "
# " ███████████████ █ ██ █ "
# " ███████████████ "
# " ███████████████ ██████████████████"
# " ███████████████ ██ ██ "
# " ██████████████████████████ ██████████████████"
# " ██████████████████████████ ██ ██"
# " ██████████████████████████ ██████████████████"
# " ██████████████████████████ ██ ██ "
# " ██████████████████████████ ██████████████████"
# " ██████████████████████████ "
# " ██████████████████████████ ▀▀▀▀▀▀▀▀██▀▀▀▀▀▀▀▀"
# " ██████████████████████████ ▀▀▀▀▀▀▀▀██▀▀▀▀▀▀▀▀"
# " ██████████████████████████ ██████████████████"
# " ███████████████▀▀▀▀▀▀▀▀▀▀▀ ██ ██"
# " ███████████████ ██████████████████"
# " ███████████████ ▄▄▄▄▄▄▄▄██▄▄▄▄▄▄▄▄"
# " ████████████████ ▄▄▄▄▄▄▄▄██▄▄▄▄▄▄▄▄"
# " █████████████████ "
# " ██████████████████ ██████████████████"
# " ███████████████████ ██ "
# " ████████████████████ ██ "
# " █████████████████████ ██ "
# " ██████████████████████ ██ "
# " ███████████████████████ ██ "
# " ████████████████████████ ██████████████████"
#];
opts = {
position = "center";
hl = "Type";
};
}
{
type = "text";
# val = [
# " ███▄ █ ██▓▒██ ██▒ ██▒ █▓ ██▓ ███▄ ▄███▓"
# " ██ ▀█ █ ▓██▒▒▒ █ █ ▒░▓██░ █▒▓██▒▓██▒▀█▀ ██▒"
# "▓██ ▀█ ██▒▒██▒░░ █ ░ ▓██ █▒░▒██▒▓██ ▓██░"
# "▓██▒ ▐▌██▒░██░ ░ █ █ ▒ ▒██ █░░░██░▒██ ▒██ "
# "▒██░ ▓██░░██░▒██▒ ▒██▒ ▒▀█░ ░██░▒██▒ ░██▒"
# "░ ▒░ ▒ ▒ ░▓ ▒▒ ░ ░▓ ░ ░ ▐░ ░▓ ░ ▒░ ░ ░"
# "░ ░░ ░ ▒░ ▒ ░░░ ░▒ ░ ░ ░░ ▒ ░░ ░ ░"
# " ░ ░ ░ ▒ ░ ░ ░ ░░ ▒ ░░ ░ "
# " ░ ░ ░ ░ ░ ░ ░ "
# " ░ "
# ];
#val = [
# "TOHA HEAVY INDUSTRIES"
#];
val = [
"git@git.sr.ht:xqtc"
];
opts = {
position = "center";
hl = "Keyword";
};
}
{
type = "padding";
val = 8;
}
{
type = "group";
val = [
{
type = "text";
val = " To browse files press '<leader>ff'";
opts = {
position = "center";
};
}
];
opts = {
position = "center";
};
}
{
type = "padding";
val = 2;
}
{
type = "text";
val = "uwu";
opts = {
position = "center";
hl = "Keyword";
};
}
{
type = "padding";
val = 4;
}
#{
# type = "text";
# val = [
# "      />》, -―‐‐<^}"
# "     ./:::/,≠´::::::ヽ."
# "    /::::〃::::}::丿ハ"
# "   ./:::::i{l|/ ノ/ }::}"
# "   /:::::::瓜イ> ´< ,:ノ"
# "  ./::::::|ノヘ.{、 (_フ_ノイ_"
# "  |:::::::|}`ス / /"
# ". |::::::|(_:::つ/ ThinkPad / neovim!"
# ". ̄ ̄ ̄ ̄ ̄ ̄ ̄\/_____/ ̄ ̄ ̄ ̄ ̄"
# ];
# opts = {
# position = "center";
# hl = "Type";
# };
#}
];
opts = {
#noautocmd = true;
keymap = {
press = "<CR>";
press_queue = "<M-CR>";
};
};
};
bufferline.enable = true;
};
keymaps = [
{
mode = "n";
key = "<leader>ff";
options.silent = true;
action = "<cmd>Telescope find_files<CR>";
}
{
mode = "n";
key = "<leader>fe";
options.silent = true;
action = "<cmd>Telescope file_browser<CR>";
}
{
mode = "n";
key = "<leader>fss";
options.silent = true;
action = "<cmd>Telescope live_grep<CR>";
}
{
mode = "n";
key = "<leader>fsw";
options.silent = true;
action = "<cmd>Telescope lsp_dynamic_workspace_symbols<CR>";
}
{
mode = "n";
key = "<leader>fd";
options.silent = true;
action = "<cmd>Telescope diagnostics<CR>";
}
{
mode = "n";
key = "<leader>hh";
options.silent = true;
action = "<cmd>Alpha<CR>";
}
{
mode = "n";
key = "<leader>bb";
options.silent = true;
action = "<cmd>Telescope buffers<CR>";
}
{
mode = "n";
key = "<leader>Gp";
action = "<cmd>Git pull<CR>";
}
{
mode = "n";
key = "<leader>GP";
action = "<cmd>Git push<CR>";
}
{
mode = "n";
key = "<leader>Gc";
action = "<cmd>Git commit<CR>";
}
{
mode = "n";
key = "<leader>Ga";
action = "<cmd>Git add .<CR>";
}
{
mode = "n";
key = "<leader>Gd";
action = "<cmd>Git diff<CR>";
}
{
mode = "n";
key = "<leader>nt";
action = "<cmd>Neotree toggle left<CR>";
}
{
mode = "n";
key = "<leader>P";
action = ''"+P'';
}
{
mode = ["n" "v"];
key = "<leader>y";
action = ''"+y'';
}
{
mode = ["n"];
key = "<leader>Y";
action = ''"+Y'';
}
{
mode = ["n"];
key = "<leader>sr";
action = ''
function()
vim.lsp.buf.rename()
end
'';
lua = true;
}
];
};
}