nixos-config/home/modules/nixvim.nix
2024-08-04 20:57:21 +02:00

470 lines
20 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 = {
wakatime.enable = true;
headlines.enable = true;
twilight.enable = true;
comment-nvim = {
enable = true;
};
indent-blankline.enable = true;
lualine = {
enable = true;
disabledFiletypes.statusline = ["neo-tree"];
componentSeparators = {
left = "";
right = "";
};
sectionSeparators = {
left = "";
right = "";
};
};
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;
};
};
};
rustaceanvim.settings.server.default_settings.rust-analyzer.diagnostics.disabled = ["inactive-code"];
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 theme=ivy<CR>";
}
{
mode = "n";
key = "<leader>fe";
options.silent = true;
action = "<cmd>Telescope file_browser theme=ivy<CR>";
}
{
mode = "n";
key = "<leader>fss";
options.silent = true;
action = "<cmd>Telescope live_grep theme=ivy<CR>";
}
{
mode = "n";
key = "<leader>fsw";
options.silent = true;
action = "<cmd>Telescope lsp_dynamic_workspace_symbols theme=ivy<CR>";
}
{
mode = "n";
key = "<leader>fd";
options.silent = true;
action = "<cmd>Telescope diagnostics theme=ivy<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 theme=ivy<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;
}
];
};
}