add some more plugins
This commit is contained in:
parent
d5c62d938c
commit
45548c8f5f
11 changed files with 440 additions and 24 deletions
|
|
@ -1,5 +1,4 @@
|
|||
{ config, lib, ...}: {
|
||||
|
||||
_: {
|
||||
imports = [
|
||||
# General Configuration
|
||||
./settings.nix
|
||||
|
|
@ -8,22 +7,32 @@
|
|||
# Themes
|
||||
./plugins/themes/default.nix
|
||||
|
||||
# Completion
|
||||
./plugins/cmp/cmp.nix
|
||||
./plugins/cmp/cmp-copilot.nix
|
||||
./plugins/cmp/lspkind.nix
|
||||
|
||||
# Editor plugins and configurations
|
||||
./plugins/editor/neo-tree.nix
|
||||
./plugins/editor/treesitter.nix
|
||||
./plugins/editor/undotree.nix
|
||||
./plugins/editor/illuminate.nix
|
||||
|
||||
# UI plugins
|
||||
./plugins/ui/bufferline.nix
|
||||
./plugins/ui/lualine.nix
|
||||
|
||||
# LSP
|
||||
./plugins/lsp/lsp.nix
|
||||
./plugins/lsp/conform.nix
|
||||
./plugins/lsp/none-ls.nix
|
||||
./plugins/lsp/fidget.nix
|
||||
|
||||
# Git
|
||||
./plugins/git/lazygit.nix
|
||||
|
||||
# Utils
|
||||
./plugins/utils/telescope.nix
|
||||
./plugins/utils/whichkey.nix
|
||||
];
|
||||
}
|
||||
|
|
|
|||
17
config/plugins/cmp/cmp-copilot.nix
Normal file
17
config/plugins/cmp/cmp-copilot.nix
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
plugins.copilot-cmp = {
|
||||
enable = true;
|
||||
};
|
||||
plugins.copilot-lua = {
|
||||
enable = true;
|
||||
suggestion = {enabled = false;};
|
||||
panel = {enabled = false;};
|
||||
};
|
||||
|
||||
extraConfigLua = ''
|
||||
require("copilot").setup({
|
||||
suggestion = { enabled = false },
|
||||
panel = { enabled = false },
|
||||
})
|
||||
'';
|
||||
}
|
||||
122
config/plugins/cmp/cmp.nix
Normal file
122
config/plugins/cmp/cmp.nix
Normal file
|
|
@ -0,0 +1,122 @@
|
|||
{
|
||||
plugins = {
|
||||
cmp-emoji = {enable = true;};
|
||||
cmp = {
|
||||
enable = true;
|
||||
settings = {
|
||||
autoEnableSources = true;
|
||||
experimental = {ghost_text = true;};
|
||||
performance = {
|
||||
debounce = 60;
|
||||
fetchingTimeout = 200;
|
||||
maxViewEntries = 30;
|
||||
};
|
||||
snippet = {expand = "luasnip";};
|
||||
formatting = {fields = ["kind" "abbr" "menu"];};
|
||||
sources = [
|
||||
{name = "git";}
|
||||
{name = "nvim_lsp";}
|
||||
{name = "emoji";}
|
||||
{
|
||||
name = "buffer"; # text within current buffer
|
||||
option.get_bufnrs.__raw = "vim.api.nvim_list_bufs";
|
||||
keywordLength = 3;
|
||||
}
|
||||
{name = "copilot";}
|
||||
{
|
||||
name = "path"; # file system paths
|
||||
keywordLength = 3;
|
||||
}
|
||||
{
|
||||
name = "luasnip"; # snippets
|
||||
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 })";
|
||||
};
|
||||
};
|
||||
};
|
||||
cmp-nvim-lsp = {enable = true;}; # lsp
|
||||
cmp-buffer = {enable = true;};
|
||||
cmp-path = {enable = true;}; # file system paths
|
||||
cmp_luasnip = {enable = true;}; # snippets
|
||||
cmp-cmdline = {enable = false;}; # autocomplete for cmdline
|
||||
};
|
||||
extraConfigLua = ''
|
||||
luasnip = require("luasnip")
|
||||
kind_icons = {
|
||||
Text = "",
|
||||
Method = "",
|
||||
Function = "",
|
||||
Constructor = "",
|
||||
Field = "",
|
||||
Variable = "",
|
||||
Class = "",
|
||||
Interface = "",
|
||||
Module = "",
|
||||
Property = "",
|
||||
Unit = "",
|
||||
Value = "",
|
||||
Enum = "",
|
||||
Keyword = "",
|
||||
Snippet = "",
|
||||
Color = "",
|
||||
File = "",
|
||||
Reference = "",
|
||||
Folder = "",
|
||||
EnumMember = "",
|
||||
Constant = "",
|
||||
Struct = "",
|
||||
Event = "",
|
||||
Operator = "",
|
||||
TypeParameter = "",
|
||||
}
|
||||
|
||||
local cmp = require'cmp'
|
||||
|
||||
-- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore).
|
||||
cmp.setup.cmdline({'/', "?" }, {
|
||||
sources = {
|
||||
{ name = 'buffer' }
|
||||
}
|
||||
})
|
||||
|
||||
-- Set configuration for specific filetype.
|
||||
cmp.setup.filetype('gitcommit', {
|
||||
sources = cmp.config.sources({
|
||||
{ name = 'cmp_git' }, -- You can specify the `cmp_git` source if you were installed it.
|
||||
}, {
|
||||
{ name = 'buffer' },
|
||||
})
|
||||
})
|
||||
|
||||
-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
|
||||
cmp.setup.cmdline(':', {
|
||||
sources = cmp.config.sources({
|
||||
{ name = 'path' }
|
||||
}, {
|
||||
{ name = 'cmdline' }
|
||||
}),
|
||||
-- formatting = {
|
||||
-- format = function(_, vim_item)
|
||||
-- vim_item.kind = cmdIcons[vim_item.kind] or "FOO"
|
||||
-- return vim_item
|
||||
-- end
|
||||
-- }
|
||||
}) '';
|
||||
}
|
||||
12
config/plugins/cmp/lspkind.nix
Normal file
12
config/plugins/cmp/lspkind.nix
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
plugins.lspkind = {
|
||||
enable = true;
|
||||
symbolMap = {
|
||||
Copilot = "";
|
||||
};
|
||||
extraOptions = {
|
||||
maxwidth = 50;
|
||||
ellipsis_char = "...";
|
||||
};
|
||||
};
|
||||
}
|
||||
13
config/plugins/editor/illuminate.nix
Normal file
13
config/plugins/editor/illuminate.nix
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
plugins.illuminate = {
|
||||
enable = true;
|
||||
underCursor = false;
|
||||
filetypesDenylist = [
|
||||
"Outline"
|
||||
"TelescopePrompt"
|
||||
"alpha"
|
||||
"harpoon"
|
||||
"reason"
|
||||
];
|
||||
};
|
||||
}
|
||||
20
config/plugins/editor/undotree.nix
Normal file
20
config/plugins/editor/undotree.nix
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
plugins.undotree = {
|
||||
enable = true;
|
||||
settings = {
|
||||
autoOpenDiff = true;
|
||||
focusOnToggle = true;
|
||||
};
|
||||
};
|
||||
keymaps = [
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>ut";
|
||||
action = "<cmd>UndotreeToggle<CR>";
|
||||
options = {
|
||||
silent = true;
|
||||
desc = "Undotree";
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
||||
99
config/plugins/lsp/fidget.nix
Normal file
99
config/plugins/lsp/fidget.nix
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
{
|
||||
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";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
16
config/plugins/snippets/luasnip.nix
Normal file
16
config/plugins/snippets/luasnip.nix
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#TODO: Find out why we get an error when we have luasnip enabled, disabled for now!
|
||||
{pkgs, ...}: {
|
||||
plugins.luasnip = {
|
||||
enable = false;
|
||||
extraConfig = {
|
||||
enable_autosnippets = true;
|
||||
store_selection_keys = "<Tab>";
|
||||
};
|
||||
fromVscode = [
|
||||
{
|
||||
lazyLoad = true;
|
||||
paths = "${pkgs.vimPlugins.friendly-snippets}";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
103
config/plugins/ui/lualine.nix
Normal file
103
config/plugins/ui/lualine.nix
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
_: {
|
||||
plugins.lualine = {
|
||||
enable = true;
|
||||
globalstatus = true;
|
||||
disabledFiletypes = {
|
||||
statusline = ["dashboard" "alpha"];
|
||||
};
|
||||
theme = {
|
||||
normal = {
|
||||
a = {
|
||||
bg = "#b4befe";
|
||||
fg = "#1c1d21";
|
||||
};
|
||||
b = {
|
||||
bg = "nil";
|
||||
};
|
||||
c = {
|
||||
bg = "nil";
|
||||
};
|
||||
z = {
|
||||
bg = "nil";
|
||||
};
|
||||
y = {
|
||||
bg = "nil";
|
||||
};
|
||||
};
|
||||
};
|
||||
sections = {
|
||||
lualine_a = [
|
||||
{
|
||||
name = "mode";
|
||||
fmt = "string.lower";
|
||||
color = {
|
||||
fg = "none";
|
||||
bg = "none";
|
||||
};
|
||||
}
|
||||
];
|
||||
lualine_b = [
|
||||
{
|
||||
name = "branch";
|
||||
icon = "";
|
||||
color = {
|
||||
fg = "none";
|
||||
bg = "none";
|
||||
};
|
||||
}
|
||||
"diff"
|
||||
];
|
||||
lualine_c = [
|
||||
{
|
||||
name = "diagnostic";
|
||||
extraConfig = {
|
||||
symbols = {
|
||||
error = " ";
|
||||
warn = " ";
|
||||
info = " ";
|
||||
hint = " ";
|
||||
};
|
||||
};
|
||||
color = {
|
||||
fg = "none";
|
||||
bg = "none";
|
||||
};
|
||||
}
|
||||
];
|
||||
lualine_x = [
|
||||
{
|
||||
name = "filetype";
|
||||
extraConfig = {
|
||||
icon_only = true;
|
||||
};
|
||||
}
|
||||
];
|
||||
lualine_y = [
|
||||
{
|
||||
name = "filename";
|
||||
extraConfig = {
|
||||
symbols = {
|
||||
modified = "";
|
||||
readonly = "";
|
||||
unnamed = "";
|
||||
};
|
||||
};
|
||||
color = {
|
||||
fg = "none";
|
||||
bg = "none";
|
||||
};
|
||||
separator.left = "";
|
||||
}
|
||||
];
|
||||
lualine_z = [
|
||||
{
|
||||
name = "location";
|
||||
color = {
|
||||
fg = "none";
|
||||
bg = "none";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
5
config/plugins/utils/whichkey.nix
Normal file
5
config/plugins/utils/whichkey.nix
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
plugins.which-key = {
|
||||
enable = true;
|
||||
};
|
||||
}
|
||||
42
flake.lock
generated
42
flake.lock
generated
|
|
@ -9,11 +9,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1711099426,
|
||||
"narHash": "sha256-HzpgM/wc3aqpnHJJ2oDqPBkNsqWbW0WfWUO8lKu8nGk=",
|
||||
"lastModified": 1713532798,
|
||||
"narHash": "sha256-wtBhsdMJA3Wa32Wtm1eeo84GejtI43pMrFrmwLXrsEc=",
|
||||
"owner": "numtide",
|
||||
"repo": "devshell",
|
||||
"rev": "2d45b54ca4a183f2fdcf4b19c895b64fbf620ee8",
|
||||
"rev": "12e914740a25ea1891ec619bb53cf5e6ca922e40",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
@ -212,11 +212,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1712759992,
|
||||
"narHash": "sha256-2APpO3ZW4idlgtlb8hB04u/rmIcKA8O7pYqxF66xbNY=",
|
||||
"lastModified": 1713732794,
|
||||
"narHash": "sha256-AYCofb8Zu4Mbc1lHDtju/uxeARawRijmOueAqEMEfMU=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "31357486b0ef6f4e161e002b6893eeb4fafc3ca9",
|
||||
"rev": "670d9ecc3e46a6e3265c203c2d136031a3d3548e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
@ -233,11 +233,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1711763326,
|
||||
"narHash": "sha256-sXcesZWKXFlEQ8oyGHnfk4xc9f2Ip0X/+YZOq3sKviI=",
|
||||
"lastModified": 1713543876,
|
||||
"narHash": "sha256-olEWxacm1xZhAtpq+ZkEyQgR4zgfE7ddpNtZNvubi3g=",
|
||||
"owner": "lnl7",
|
||||
"repo": "nix-darwin",
|
||||
"rev": "36524adc31566655f2f4d55ad6b875fb5c1a4083",
|
||||
"rev": "9e7c20ffd056e406ddd0276ee9d89f09c5e5f4ed",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
@ -248,11 +248,11 @@
|
|||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1712791164,
|
||||
"narHash": "sha256-3sbWO1mbpWsLepZGbWaMovSO7ndZeFqDSdX0hZ9nVyw=",
|
||||
"lastModified": 1713714899,
|
||||
"narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "1042fd8b148a9105f3c0aca3a6177fd1d9360ba5",
|
||||
"rev": "6143fc5eeb9c4f00163267708e26191d1e918932",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
@ -309,11 +309,11 @@
|
|||
"pre-commit-hooks": "pre-commit-hooks"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1713008785,
|
||||
"narHash": "sha256-fblaj6/83OQYrD1UHBjLapxjGQaC4edouX4g2X8CVhk=",
|
||||
"lastModified": 1713856119,
|
||||
"narHash": "sha256-TfNc8vxF7IaRhTlMgOeUN01y7QoBx50MYmGU1sSU6Vw=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixvim",
|
||||
"rev": "21c233919d747d3375e3a173b65f7f26ccf01256",
|
||||
"rev": "c826d146c65bfa8164f31931cf54278b99f5a3a0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
@ -337,11 +337,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1712897695,
|
||||
"narHash": "sha256-nMirxrGteNAl9sWiOhoN5tIHyjBbVi5e2tgZUgZlK3Y=",
|
||||
"lastModified": 1713775815,
|
||||
"narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=",
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"rev": "40e6053ecb65fcbf12863338a6dcefb3f55f1bf8",
|
||||
"rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
@ -361,11 +361,11 @@
|
|||
"nixpkgs-stable": "nixpkgs-stable"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1712897695,
|
||||
"narHash": "sha256-nMirxrGteNAl9sWiOhoN5tIHyjBbVi5e2tgZUgZlK3Y=",
|
||||
"lastModified": 1713775815,
|
||||
"narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=",
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"rev": "40e6053ecb65fcbf12863338a6dcefb3f55f1bf8",
|
||||
"rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue