restructure
This commit is contained in:
parent
447acf4d50
commit
4961629dd5
|
@ -10,3 +10,4 @@ nix run git+https://git.4o1x5.dev/4o1x5/neo2005
|
||||||
|
|
||||||
- [Awgxorg's structure](https://github.com/Ahwxorg/nixvim-config)
|
- [Awgxorg's structure](https://github.com/Ahwxorg/nixvim-config)
|
||||||
- [Nixvim, making this project possible](https://github.com/nix-community/nixvim)
|
- [Nixvim, making this project possible](https://github.com/nix-community/nixvim)
|
||||||
|
- [Akari nixvim](https://github.com/spector700/Akari/)
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
{
|
{
|
||||||
# Import all your configuration modules here
|
|
||||||
imports = [
|
imports = [
|
||||||
./plugins.nix
|
|
||||||
./options.nix
|
./options.nix
|
||||||
./keymaps.nix
|
./keymaps.nix
|
||||||
|
|
||||||
|
./plugins
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{ pkgs, ... }: {
|
{ pkgs, ... }: {
|
||||||
|
|
||||||
#colorschemes.cyberdream.enable = true;
|
colorschemes.oxocarbon.enable = true;
|
||||||
colorscheme = "shades_of_purple";
|
colorscheme = "shades_of_purple";
|
||||||
|
|
||||||
opts = {
|
opts = {
|
||||||
|
@ -11,13 +11,5 @@
|
||||||
# Set <Space> as leader
|
# Set <Space> as leader
|
||||||
globals.mapleader = " ";
|
globals.mapleader = " ";
|
||||||
|
|
||||||
autoCmd = [
|
|
||||||
# Start aw-watcher-vim on startup
|
|
||||||
{
|
|
||||||
command = ":AWStart'";
|
|
||||||
event = [
|
|
||||||
"VimEnter"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,375 +0,0 @@
|
||||||
{ pkgs, ... }: {
|
|
||||||
|
|
||||||
|
|
||||||
plugins.none-ls = {
|
|
||||||
enable = true;
|
|
||||||
sources = {
|
|
||||||
code_actions = {
|
|
||||||
statix.enable = true;
|
|
||||||
gitsigns.enable = true;
|
|
||||||
};
|
|
||||||
diagnostics = {
|
|
||||||
statix.enable = true;
|
|
||||||
deadnix.enable = true;
|
|
||||||
pylint.enable = true;
|
|
||||||
checkstyle.enable = true;
|
|
||||||
};
|
|
||||||
formatting = {
|
|
||||||
alejandra.enable = true;
|
|
||||||
stylua.enable = true;
|
|
||||||
shfmt.enable = true;
|
|
||||||
nixpkgs_fmt.enable = true;
|
|
||||||
google_java_format.enable = false;
|
|
||||||
prettier = {
|
|
||||||
enable = true;
|
|
||||||
disableTsServerFormatter = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
completion = {
|
|
||||||
luasnip.enable = true;
|
|
||||||
spell.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
# Persistence
|
|
||||||
plugins.persistence.enable = true;
|
|
||||||
|
|
||||||
|
|
||||||
# Language server
|
|
||||||
plugins.lsp =
|
|
||||||
{
|
|
||||||
enable = true;
|
|
||||||
servers = {
|
|
||||||
ts-ls.enable = true; # TS/JS
|
|
||||||
cssls.enable = true; # CSS
|
|
||||||
tailwindcss.enable = true; # TailwindCSS
|
|
||||||
html.enable = true; # HTML
|
|
||||||
astro.enable = true; # AstroJS
|
|
||||||
phpactor.enable = true; # PHP
|
|
||||||
svelte.enable = false; # Svelte
|
|
||||||
vuels.enable = false; # Vue
|
|
||||||
pyright.enable = true; # Python
|
|
||||||
marksman.enable = true; # Markdown
|
|
||||||
nil_ls.enable = true; # Nix
|
|
||||||
dockerls.enable = true; # Docker
|
|
||||||
bashls.enable = true; # Bash
|
|
||||||
clangd.enable = true; # C/C++
|
|
||||||
csharp_ls.enable = true; # C#
|
|
||||||
yamlls.enable = true; # YAML
|
|
||||||
lua-ls = {
|
|
||||||
# Lua
|
|
||||||
enable = true;
|
|
||||||
settings.telemetry.enable = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
#Rust
|
|
||||||
rust-analyzer = {
|
|
||||||
enable = true;
|
|
||||||
# Flip these in case rust is installed systemvise
|
|
||||||
installRustc = false;
|
|
||||||
installCargo = false;
|
|
||||||
settings.completion.callable.snippets = "add_parentheses";
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
# Highlight word under cursor
|
|
||||||
plugins.illuminate = {
|
|
||||||
enable = true;
|
|
||||||
underCursor = false;
|
|
||||||
filetypesDenylist = [
|
|
||||||
"Outline"
|
|
||||||
"TelescopePrompt"
|
|
||||||
"alpha"
|
|
||||||
"harpoon"
|
|
||||||
"reason"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Startup dashboard
|
|
||||||
plugins.alpha = {
|
|
||||||
enable = true;
|
|
||||||
theme = "dashboard";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Auto-tagging
|
|
||||||
plugins.ts-autotag = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
# Needed for autotagging
|
|
||||||
plugins.treesitter = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# "Smooth" scrolling
|
|
||||||
plugins.neoscroll = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
# A better command window
|
|
||||||
plugins.noice.enable = true;
|
|
||||||
|
|
||||||
# Terminal
|
|
||||||
plugins.toggleterm = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
hide_numbers = false;
|
|
||||||
autochdir = true;
|
|
||||||
close_on_exit = true;
|
|
||||||
direction = "horizontal";
|
|
||||||
open_mapping = "[[<c-t>]]";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
# Autocomplete
|
|
||||||
plugins.cmp = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
autoEnableSources = true;
|
|
||||||
experimental = { ghost_text = true; };
|
|
||||||
performance = {
|
|
||||||
debounce = 60;
|
|
||||||
fetchingTimeout = 200;
|
|
||||||
maxViewEntries = 30;
|
|
||||||
};
|
|
||||||
|
|
||||||
formatting = { fields = [ "kind" "abbr" "menu" ]; };
|
|
||||||
sources = [
|
|
||||||
{ name = "nvim_lsp"; }
|
|
||||||
{
|
|
||||||
name = "buffer"; # text within current buffer
|
|
||||||
option.get_bufnrs.__raw = "vim.api.nvim_list_bufs";
|
|
||||||
keywordLength = 3;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "path"; # file system paths
|
|
||||||
keywordLength = 3;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
window = {
|
|
||||||
completion = { border = "solid"; };
|
|
||||||
documentation = { border = "solid"; };
|
|
||||||
};
|
|
||||||
|
|
||||||
mapping = {
|
|
||||||
"<Tab>" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})";
|
|
||||||
"<C-j>" = "cmp.mapping.select_next_item()";
|
|
||||||
"<C-k>" = "cmp.mapping.select_prev_item()";
|
|
||||||
"<C-e>" = "cmp.mapping.abort()";
|
|
||||||
"<C-b>" = "cmp.mapping.scroll_docs(-4)";
|
|
||||||
"<C-f>" = "cmp.mapping.scroll_docs(4)";
|
|
||||||
"<C-Space>" = "cmp.mapping.complete()";
|
|
||||||
"<CR>" = "cmp.mapping.confirm({ select = true })";
|
|
||||||
"<S-CR>" = "cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = true })";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
plugins.cmp-nvim-lsp = {
|
|
||||||
enable = true; # LSP
|
|
||||||
};
|
|
||||||
plugins.cmp-buffer = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
plugins.cmp-path = {
|
|
||||||
enable = true; # file system paths
|
|
||||||
};
|
|
||||||
plugins.cmp_luasnip = {
|
|
||||||
enable = true; # snippets
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# highlites colors (like #FFF)
|
|
||||||
plugins.colorizer = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Highlight TODO FIXME comments
|
|
||||||
plugins.todo-comments.enable = true;
|
|
||||||
|
|
||||||
|
|
||||||
# Inline git blame
|
|
||||||
plugins.gitsigns = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
current_line_blame = true;
|
|
||||||
trouble = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Inline error display
|
|
||||||
plugins.trouble = {
|
|
||||||
enable = true;
|
|
||||||
settings = { };
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
# when adding " or any letter the selected word gets wrapped in it
|
|
||||||
plugins.vim-surround.enable = true;
|
|
||||||
|
|
||||||
# File tree
|
|
||||||
plugins.chadtree = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Status bar
|
|
||||||
plugins.lualine = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# a cool summary searcher
|
|
||||||
plugins.navbuddy.enable = true;
|
|
||||||
|
|
||||||
|
|
||||||
# languages
|
|
||||||
plugins.nix.enable = true;
|
|
||||||
|
|
||||||
plugins.fidget = {
|
|
||||||
enable = true;
|
|
||||||
logger = {
|
|
||||||
level = "warn"; # “off”, “error”, “warn”, “info”, “debug”, “trace”
|
|
||||||
floatPrecision = 0.01; # Limit the number of decimals displayed for floats
|
|
||||||
};
|
|
||||||
progress = {
|
|
||||||
pollRate = 0; # How and when to poll for progress messages
|
|
||||||
suppressOnInsert = true; # Suppress new messages while in insert mode
|
|
||||||
ignoreDoneAlready = false; # Ignore new tasks that are already complete
|
|
||||||
ignoreEmptyMessage = false; # Ignore new tasks that don't contain a message
|
|
||||||
clearOnDetach =
|
|
||||||
# Clear notification group when LSP server detaches
|
|
||||||
''
|
|
||||||
function(client_id)
|
|
||||||
local client = vim.lsp.get_client_by_id(client_id)
|
|
||||||
return client and client.name or nil
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
notificationGroup =
|
|
||||||
# How to get a progress message's notification group key
|
|
||||||
''
|
|
||||||
function(msg) return msg.lsp_client.name end
|
|
||||||
'';
|
|
||||||
ignore = [ ]; # List of LSP servers to ignore
|
|
||||||
lsp = {
|
|
||||||
progressRingbufSize = 0; # Configure the nvim's LSP progress ring buffer size
|
|
||||||
};
|
|
||||||
display = {
|
|
||||||
renderLimit = 16; # How many LSP messages to show at once
|
|
||||||
doneTtl = 3; # How long a message should persist after completion
|
|
||||||
doneIcon = "✔"; # Icon shown when all LSP progress tasks are complete
|
|
||||||
doneStyle = "Constant"; # Highlight group for completed LSP tasks
|
|
||||||
progressTtl = "math.huge"; # How long a message should persist when in progress
|
|
||||||
progressIcon = {
|
|
||||||
pattern = "dots";
|
|
||||||
period = 1;
|
|
||||||
}; # Icon shown when LSP progress tasks are in progress
|
|
||||||
progressStyle = "WarningMsg"; # Highlight group for in-progress LSP tasks
|
|
||||||
groupStyle = "Title"; # Highlight group for group name (LSP server name)
|
|
||||||
iconStyle = "Question"; # Highlight group for group icons
|
|
||||||
priority = 30; # Ordering priority for LSP notification group
|
|
||||||
skipHistory = true; # Whether progress notifications should be omitted from history
|
|
||||||
formatMessage = ''
|
|
||||||
require ("fidget.progress.display").default_format_message
|
|
||||||
''; # How to format a progress message
|
|
||||||
formatAnnote = ''
|
|
||||||
function (msg) return msg.title end
|
|
||||||
''; # How to format a progress annotation
|
|
||||||
formatGroupName = ''
|
|
||||||
function (group) return tostring (group) end
|
|
||||||
''; # How to format a progress notification group's name
|
|
||||||
overrides = {
|
|
||||||
rust_analyzer = {
|
|
||||||
name = "rust-analyzer";
|
|
||||||
};
|
|
||||||
}; # Override options from the default notification config
|
|
||||||
};
|
|
||||||
};
|
|
||||||
notification = {
|
|
||||||
pollRate = 10; # How frequently to update and render notifications
|
|
||||||
filter = "info"; # “off”, “error”, “warn”, “info”, “debug”, “trace”
|
|
||||||
historySize = 128; # Number of removed messages to retain in history
|
|
||||||
overrideVimNotify = true;
|
|
||||||
redirect = ''
|
|
||||||
function(msg, level, opts)
|
|
||||||
if opts and opts.on_open then
|
|
||||||
return require("fidget.integration.nvim-notify").delegate(msg, level, opts)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
configs = {
|
|
||||||
default = "require('fidget.notification').default_config";
|
|
||||||
};
|
|
||||||
|
|
||||||
window = {
|
|
||||||
normalHl = "Comment";
|
|
||||||
winblend = 0;
|
|
||||||
border = "none"; # none, single, double, rounded, solid, shadow
|
|
||||||
zindex = 45;
|
|
||||||
maxWidth = 0;
|
|
||||||
maxHeight = 0;
|
|
||||||
xPadding = 1;
|
|
||||||
yPadding = 0;
|
|
||||||
align = "bottom";
|
|
||||||
relative = "editor";
|
|
||||||
};
|
|
||||||
view = {
|
|
||||||
stackUpwards = true; # Display notification items from bottom to top
|
|
||||||
iconSeparator = " "; # Separator between group name and icon
|
|
||||||
groupSeparator = "---"; # Separator between notification groups
|
|
||||||
groupSeparatorHl =
|
|
||||||
# Highlight group used for group separator
|
|
||||||
"Comment";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
extraPlugins = with pkgs; [
|
|
||||||
# TODO add gen.nvim
|
|
||||||
{
|
|
||||||
plugin = pkgs.vimUtils.buildVimPlugin {
|
|
||||||
pname = "aw-watcher-vim";
|
|
||||||
version = "1.0.0"; # dummy version
|
|
||||||
src = pkgs.fetchFromGitHub {
|
|
||||||
owner = "ActivityWatch";
|
|
||||||
repo = "aw-watcher-vim";
|
|
||||||
rev = "4ba86d05a940574000c33f280fd7f6eccc284331";
|
|
||||||
hash = "sha256-I7YYvQupeQxWr2HEpvba5n91+jYvJrcWZhQg+5rI908=";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
# Shades of purple
|
|
||||||
# TODO self implement this color scheme as this one doesn't really represent the original one.
|
|
||||||
{
|
|
||||||
plugin = pkgs.vimUtils.buildVimPlugin {
|
|
||||||
pname = "shades-of-purple";
|
|
||||||
version = "1.0.0"; # dummy version
|
|
||||||
src = pkgs.fetchFromGitHub {
|
|
||||||
owner = "Rigellute";
|
|
||||||
repo = "shades-of-purple.vim";
|
|
||||||
rev = "e806d38190a6a2e8b9244824c2953d6567f141f3";
|
|
||||||
hash = "sha256-iiGASgVlIXnnUNBlp9viKgDBfHiOP5P/yJx9XyELT9g=";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
# Gen for local ollama ai, and autocomplete
|
|
||||||
{
|
|
||||||
plugin = pkgs.vimUtils.buildVimPlugin {
|
|
||||||
pname = "gen.nvim";
|
|
||||||
version = "1.0.0"; # dummy version
|
|
||||||
src = pkgs.fetchFromGitHub {
|
|
||||||
owner = "David-Kunz";
|
|
||||||
repo = "gen.nvim";
|
|
||||||
rev = "b9721662daedd880ca0a0358cf6ffbff60617ab3";
|
|
||||||
hash = "sha256-Cyx0QBQjp+ilEEMqs4OWuuJ0x5t4bRalJ2NuemvxDKo=";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
# TODO config for gen
|
|
||||||
#config ='''';
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
}
|
|
27
config/plugins/aw/default.nix
Normal file
27
config/plugins/aw/default.nix
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
{ pkgs, ... }: {
|
||||||
|
|
||||||
|
extraPlugins = with pkgs; [
|
||||||
|
{
|
||||||
|
plugin = pkgs.vimUtils.buildVimPlugin {
|
||||||
|
pname = "aw-watcher-vim";
|
||||||
|
version = "1.0.0"; # dummy version
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "ActivityWatch";
|
||||||
|
repo = "aw-watcher-vim";
|
||||||
|
rev = "4ba86d05a940574000c33f280fd7f6eccc284331";
|
||||||
|
hash = "sha256-I7YYvQupeQxWr2HEpvba5n91+jYvJrcWZhQg+5rI908=";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
autoCmd = [
|
||||||
|
# Start aw-watcher-vim on startup
|
||||||
|
{
|
||||||
|
command = ":AWStart'";
|
||||||
|
event = [
|
||||||
|
"VimEnter"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
11
config/plugins/default.nix
Normal file
11
config/plugins/default.nix
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{ pkgs, ... }: {
|
||||||
|
imports = [
|
||||||
|
./lsp
|
||||||
|
./telescope
|
||||||
|
./ui
|
||||||
|
./aw
|
||||||
|
];
|
||||||
|
|
||||||
|
# Persistence
|
||||||
|
plugins.persistence.enable = true;
|
||||||
|
}
|
162
config/plugins/lsp/default.nix
Normal file
162
config/plugins/lsp/default.nix
Normal file
|
@ -0,0 +1,162 @@
|
||||||
|
{ pkgs, lib, ... }: {
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
./trouble.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
# Autocomplete
|
||||||
|
plugins.cmp = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
autoEnableSources = true;
|
||||||
|
experimental = { ghost_text = true; };
|
||||||
|
performance = {
|
||||||
|
debounce = 60;
|
||||||
|
fetchingTimeout = 200;
|
||||||
|
maxViewEntries = 30;
|
||||||
|
};
|
||||||
|
|
||||||
|
formatting = { fields = [ "kind" "abbr" "menu" ]; };
|
||||||
|
sources = [
|
||||||
|
{ name = "nvim_lsp"; }
|
||||||
|
{
|
||||||
|
name = "buffer"; # text within current buffer
|
||||||
|
option.get_bufnrs.__raw = "vim.api.nvim_list_bufs";
|
||||||
|
keywordLength = 3;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "path"; # file system paths
|
||||||
|
keywordLength = 3;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
window = {
|
||||||
|
completion = { border = "solid"; };
|
||||||
|
documentation = { border = "solid"; };
|
||||||
|
};
|
||||||
|
|
||||||
|
mapping = {
|
||||||
|
"<Tab>" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})";
|
||||||
|
"<C-j>" = "cmp.mapping.select_next_item()";
|
||||||
|
"<C-k>" = "cmp.mapping.select_prev_item()";
|
||||||
|
"<C-e>" = "cmp.mapping.abort()";
|
||||||
|
"<C-b>" = "cmp.mapping.scroll_docs(-4)";
|
||||||
|
"<C-f>" = "cmp.mapping.scroll_docs(4)";
|
||||||
|
"<C-Space>" = "cmp.mapping.complete()";
|
||||||
|
"<CR>" = "cmp.mapping.confirm({ select = true })";
|
||||||
|
"<S-CR>" = "cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = true })";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
plugins.cmp-nvim-lsp = {
|
||||||
|
enable = true; # LSP
|
||||||
|
};
|
||||||
|
plugins.cmp-buffer = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
plugins.cmp-path = {
|
||||||
|
enable = true; # file system paths
|
||||||
|
};
|
||||||
|
plugins.cmp_luasnip = {
|
||||||
|
enable = true; # snippets
|
||||||
|
};
|
||||||
|
|
||||||
|
# Language server
|
||||||
|
plugins.lsp =
|
||||||
|
{
|
||||||
|
enable = true;
|
||||||
|
servers = {
|
||||||
|
ts_ls.enable = true; # TS/JS
|
||||||
|
cssls.enable = true; # CSS
|
||||||
|
tailwindcss.enable = true; # TailwindCSS
|
||||||
|
html.enable = true; # HTML
|
||||||
|
astro.enable = true; # AstroJS
|
||||||
|
phpactor.enable = true; # PHP
|
||||||
|
svelte.enable = false; # Svelte
|
||||||
|
vuels.enable = false; # Vue
|
||||||
|
pyright.enable = true; # Python
|
||||||
|
marksman.enable = true; # Markdown
|
||||||
|
nil_ls.enable = true; # Nix
|
||||||
|
dockerls.enable = true; # Docker
|
||||||
|
bashls.enable = true; # Bash
|
||||||
|
clangd.enable = true; # C/C++
|
||||||
|
csharp_ls.enable = true; # C#
|
||||||
|
yamlls.enable = true; # YAML
|
||||||
|
lua_ls = {
|
||||||
|
enable = true;
|
||||||
|
settings.telemetry.enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
#Rust
|
||||||
|
rust-analyzer = {
|
||||||
|
enable = true;
|
||||||
|
# Flip these in case rust is installed systemvise
|
||||||
|
installRustc = false;
|
||||||
|
installCargo = false;
|
||||||
|
settings.completion.callable.snippets = "add_parentheses";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
plugins.none-ls = {
|
||||||
|
enable = true;
|
||||||
|
sources = {
|
||||||
|
code_actions = {
|
||||||
|
statix.enable = true;
|
||||||
|
gitsigns.enable = true;
|
||||||
|
};
|
||||||
|
diagnostics = {
|
||||||
|
statix.enable = true;
|
||||||
|
deadnix.enable = true;
|
||||||
|
pylint.enable = true;
|
||||||
|
checkstyle.enable = true;
|
||||||
|
};
|
||||||
|
formatting = {
|
||||||
|
alejandra.enable = true;
|
||||||
|
stylua.enable = true;
|
||||||
|
shfmt.enable = true;
|
||||||
|
nixpkgs_fmt.enable = true;
|
||||||
|
google_java_format.enable = false;
|
||||||
|
prettier = {
|
||||||
|
enable = true;
|
||||||
|
disableTsServerFormatter = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
completion = {
|
||||||
|
luasnip.enable = true;
|
||||||
|
spell.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
plugins.nix.enable = true;
|
||||||
|
|
||||||
|
# Auto formatter
|
||||||
|
plugins.conform-nvim = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
format_on_save = {
|
||||||
|
lspFallback = true;
|
||||||
|
timeoutMs = 500;
|
||||||
|
};
|
||||||
|
formatters_by_ft = {
|
||||||
|
# Use the "_" filetype to run formatters on filetypes that don't have other formatters configured.
|
||||||
|
"_" = [
|
||||||
|
"squeeze_blanks"
|
||||||
|
"trim_whitespace"
|
||||||
|
"trim_newlines"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Auto-tagging
|
||||||
|
plugins.ts-autotag = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
# Needed for autotagging
|
||||||
|
plugins.treesitter = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
}
|
50
config/plugins/lsp/trouble.nix
Normal file
50
config/plugins/lsp/trouble.nix
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
{ pkgs, ... }: {
|
||||||
|
plugins.trouble = {
|
||||||
|
enable = true;
|
||||||
|
settings.auto_close = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
keymaps = [
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
key = "<leader>x";
|
||||||
|
action = "+diagnostics/quickfix";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
key = "<leader>xx";
|
||||||
|
action = "<cmd>TroubleToggle<cr>";
|
||||||
|
options = {
|
||||||
|
silent = true;
|
||||||
|
desc = "Document Diagnostics (Trouble)";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
key = "<leader>xX";
|
||||||
|
action = "<cmd>TroubleToggle workspace_diagnostics<cr>";
|
||||||
|
options = {
|
||||||
|
silent = true;
|
||||||
|
desc = "Workspace Diagnostics (Trouble)";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
key = "<leader>xt";
|
||||||
|
action = "<cmd>TroubleToggle todo<cr>";
|
||||||
|
options = {
|
||||||
|
silent = true;
|
||||||
|
desc = "Todo (Trouble)";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
key = "<leader>xq";
|
||||||
|
action = "<cmd>TodoQuickFix<cr>";
|
||||||
|
options = {
|
||||||
|
silent = true;
|
||||||
|
desc = "Quickfix List (Trouble)";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
22
config/plugins/telescope/default.nix
Normal file
22
config/plugins/telescope/default.nix
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{ pkgs, ... }: {
|
||||||
|
plugins.telescope = {
|
||||||
|
enable = true;
|
||||||
|
extensions = {
|
||||||
|
fzf-native.enable = true;
|
||||||
|
undo.enable = true;
|
||||||
|
ui-select = {
|
||||||
|
settings = {
|
||||||
|
specific_opts = {
|
||||||
|
codeactions = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
keymaps = {
|
||||||
|
"<leader><space>" = {
|
||||||
|
action = "find_files";
|
||||||
|
options.desc = "Find project files";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
181
config/plugins/ui/default.nix
Normal file
181
config/plugins/ui/default.nix
Normal file
|
@ -0,0 +1,181 @@
|
||||||
|
{ pkgs, ... }: {
|
||||||
|
# "Smooth" scrolling
|
||||||
|
plugins.neoscroll = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
# A better command window
|
||||||
|
plugins.noice.enable = true;
|
||||||
|
|
||||||
|
# Terminal
|
||||||
|
plugins.toggleterm = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
hide_numbers = false;
|
||||||
|
autochdir = true;
|
||||||
|
close_on_exit = true;
|
||||||
|
direction = "horizontal";
|
||||||
|
open_mapping = "[[<c-t>]]";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Cool indent lines, inspired straight from rainbow-indent on vscode
|
||||||
|
plugins.indent-blankline = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
scope = {
|
||||||
|
show_end = false;
|
||||||
|
show_exact_scope = true;
|
||||||
|
show_start = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# highlites colors (like #FFF)
|
||||||
|
plugins.colorizer = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Highlight TODO FIXME comments
|
||||||
|
plugins.todo-comments.enable = true;
|
||||||
|
|
||||||
|
|
||||||
|
# Inline git blame
|
||||||
|
plugins.gitsigns = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
current_line_blame = true;
|
||||||
|
trouble = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
plugins.trouble = {
|
||||||
|
enable = true;
|
||||||
|
settings = { };
|
||||||
|
};
|
||||||
|
|
||||||
|
# Clean notifications
|
||||||
|
plugins.fidget = {
|
||||||
|
enable = true;
|
||||||
|
logger = {
|
||||||
|
level = "warn"; # “off”, “error”, “warn”, “info”, “debug”, “trace”
|
||||||
|
floatPrecision = 0.01; # Limit the number of decimals displayed for floats
|
||||||
|
};
|
||||||
|
progress = {
|
||||||
|
pollRate = 0; # How and when to poll for progress messages
|
||||||
|
suppressOnInsert = true; # Suppress new messages while in insert mode
|
||||||
|
ignoreDoneAlready = false; # Ignore new tasks that are already complete
|
||||||
|
ignoreEmptyMessage = false; # Ignore new tasks that don't contain a message
|
||||||
|
clearOnDetach =
|
||||||
|
# Clear notification group when LSP server detaches
|
||||||
|
''
|
||||||
|
function(client_id)
|
||||||
|
local client = vim.lsp.get_client_by_id(client_id)
|
||||||
|
return client and client.name or nil
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
notificationGroup =
|
||||||
|
# How to get a progress message's notification group key
|
||||||
|
''
|
||||||
|
function(msg) return msg.lsp_client.name end
|
||||||
|
'';
|
||||||
|
ignore = [ ]; # List of LSP servers to ignore
|
||||||
|
lsp = {
|
||||||
|
progressRingbufSize = 0; # Configure the nvim's LSP progress ring buffer size
|
||||||
|
};
|
||||||
|
display = {
|
||||||
|
renderLimit = 16; # How many LSP messages to show at once
|
||||||
|
doneTtl = 3; # How long a message should persist after completion
|
||||||
|
doneIcon = "✔"; # Icon shown when all LSP progress tasks are complete
|
||||||
|
doneStyle = "Constant"; # Highlight group for completed LSP tasks
|
||||||
|
progressTtl = "math.huge"; # How long a message should persist when in progress
|
||||||
|
progressIcon = {
|
||||||
|
pattern = "dots";
|
||||||
|
period = 1;
|
||||||
|
}; # Icon shown when LSP progress tasks are in progress
|
||||||
|
progressStyle = "WarningMsg"; # Highlight group for in-progress LSP tasks
|
||||||
|
groupStyle = "Title"; # Highlight group for group name (LSP server name)
|
||||||
|
iconStyle = "Question"; # Highlight group for group icons
|
||||||
|
priority = 30; # Ordering priority for LSP notification group
|
||||||
|
skipHistory = true; # Whether progress notifications should be omitted from history
|
||||||
|
formatMessage = ''
|
||||||
|
require ("fidget.progress.display").default_format_message
|
||||||
|
''; # How to format a progress message
|
||||||
|
formatAnnote = ''
|
||||||
|
function (msg) return msg.title end
|
||||||
|
''; # How to format a progress annotation
|
||||||
|
formatGroupName = ''
|
||||||
|
function (group) return tostring (group) end
|
||||||
|
''; # How to format a progress notification group's name
|
||||||
|
overrides = {
|
||||||
|
rust_analyzer = {
|
||||||
|
name = "rust-analyzer";
|
||||||
|
};
|
||||||
|
}; # Override options from the default notification config
|
||||||
|
};
|
||||||
|
};
|
||||||
|
notification = {
|
||||||
|
pollRate = 10; # How frequently to update and render notifications
|
||||||
|
filter = "info"; # “off”, “error”, “warn”, “info”, “debug”, “trace”
|
||||||
|
historySize = 128; # Number of removed messages to retain in history
|
||||||
|
overrideVimNotify = true;
|
||||||
|
redirect = ''
|
||||||
|
function(msg, level, opts)
|
||||||
|
if opts and opts.on_open then
|
||||||
|
return require("fidget.integration.nvim-notify").delegate(msg, level, opts)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
configs = {
|
||||||
|
default = "require('fidget.notification').default_config";
|
||||||
|
};
|
||||||
|
|
||||||
|
window = {
|
||||||
|
normalHl = "Comment";
|
||||||
|
winblend = 0;
|
||||||
|
border = "none"; # none, single, double, rounded, solid, shadow
|
||||||
|
zindex = 45;
|
||||||
|
maxWidth = 0;
|
||||||
|
maxHeight = 0;
|
||||||
|
xPadding = 1;
|
||||||
|
yPadding = 0;
|
||||||
|
align = "bottom";
|
||||||
|
relative = "editor";
|
||||||
|
};
|
||||||
|
view = {
|
||||||
|
stackUpwards = true; # Display notification items from bottom to top
|
||||||
|
iconSeparator = " "; # Separator between group name and icon
|
||||||
|
groupSeparator = "---"; # Separator between notification groups
|
||||||
|
groupSeparatorHl =
|
||||||
|
# Highlight group used for group separator
|
||||||
|
"Comment";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
# File tree
|
||||||
|
plugins.chadtree = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
# Status bar
|
||||||
|
plugins.lualine = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
# Startup dashboard
|
||||||
|
plugins.alpha = {
|
||||||
|
enable = true;
|
||||||
|
theme = "dashboard";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Highlight word under cursor
|
||||||
|
plugins.illuminate = {
|
||||||
|
enable = true;
|
||||||
|
underCursor = false;
|
||||||
|
filetypesDenylist = [
|
||||||
|
"Outline"
|
||||||
|
"TelescopePrompt"
|
||||||
|
"alpha"
|
||||||
|
"harpoon"
|
||||||
|
"reason"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue