Compare commits

..

70 Commits

Author SHA1 Message Date
447dd9c22f fixed conform hopefully 2026-06-28 13:54:09 +01:00
45739fc4cf updated flake 2026-06-28 13:35:44 +01:00
a2cc4a6c45 fixed markdown nonsense 2026-06-20 14:11:13 +01:00
ab1f2bf154 grammar 2026-06-20 14:10:02 +01:00
7dde0c9e27 Added a readme 2026-06-20 14:07:43 +01:00
d96d14b91c updated flake to be better lol 2026-06-20 13:30:19 +01:00
e46d931775 updated flake 2026-06-14 17:14:13 +01:00
d34bc98d24 updated nvim pack 2026-06-14 17:13:30 +01:00
0ad3049af0 added some cool stuff and fixed the bullshit that broke blink 2026-05-28 15:19:52 +01:00
3ad87440a0 fixed some stuff 2026-05-27 11:41:33 +01:00
4751798619 fixed blink dependancy and removed unused plugins 2026-05-12 10:39:25 +01:00
677d978932 made tabs better to use in general, telescope buffer picker navigates to open pane 2026-05-08 17:59:12 +01:00
1b887d67bc scrolloff needs to be set before scrolleof initialises 2026-05-06 13:53:08 +01:00
188b15d360 added typescript 2026-05-04 18:56:46 +01:00
2e4e260731 added svelte linting 2026-05-04 14:28:22 +01:00
67ef68769a fixed svelte highlighting 2026-05-03 20:13:58 +01:00
85b26f78b1 added svelte lsp 2026-05-03 19:59:47 +01:00
09f5dd3037 changed some treesitter nonsense 2026-05-03 19:58:07 +01:00
169c146b1f changed some nonsense, will see if works 2026-05-03 18:07:14 +01:00
98c809990b fixed scrolloff for real this time, but no more scrolleof :( 2026-05-02 10:46:21 +01:00
f5fb5c83d8 fixed scrolloff, scrolleof not working 2026-04-30 10:03:37 +01:00
dc5b162d20 updated flake 2026-04-17 23:09:57 +01:00
8786a18cd1 added definition bind 2026-04-17 23:09:05 +01:00
2b0b099f5e all functionality restored, switching to vim.pack 2026-04-16 10:03:17 +01:00
e2555ad8d0 fixed mini sessions and added telescope 2026-04-16 10:00:14 +01:00
ac461d7a6c made lazydev load only when in a lua file 2026-04-16 09:59:52 +01:00
b76db809f2 added a load of nonsense and fixed the flake 2026-04-10 20:55:51 +01:00
6f7793bde4 almost everything 2026-04-10 15:27:58 +01:00
624fefdd18 an attempt was made 2026-04-10 12:15:22 +01:00
761f890b10 blank slate 2026-04-09 20:35:13 +01:00
cfc5baa8ad less of a rewrite, more of a restructure 2026-04-07 14:06:49 +01:00
7eae05c8e2 added zsh 2026-04-02 10:49:14 +01:00
5720ab20dc updated flake and some other stuff 2026-04-02 10:47:43 +01:00
3a71912e22 added A to list of shit that indents properly 2026-03-31 09:59:15 +01:00
f5b4ee85a4 added rust nonsense 2026-03-30 11:21:24 +01:00
9e02247d65 fixed weird background on code blocks in neorg 2026-03-29 14:40:26 +01:00
1d69673e62 added scrolloff for end of file and blogging stuff 2026-03-22 11:37:00 +00:00
570ab4dc51 added macro indicator to lualine 2026-03-21 11:28:10 +00:00
86752af3e9 added css formatting 2026-03-20 21:45:55 +00:00
68a7427e80 changed flake.nix 2026-03-05 11:11:10 +00:00
7a05a15b29 made hidden files appear in live grep 2026-03-01 13:14:52 +00:00
ac6d7e8b07 cleaned up new autocommand 2026-02-27 16:44:58 +00:00
93c0eb4679 added git notification 2026-02-27 15:24:51 +00:00
679201030a flake.loxk 2026-02-26 22:22:00 +00:00
7e0dee57fa added flake.nix 2026-02-26 22:19:55 +00:00
d611081d65 changed a load of shit 2026-02-22 16:30:46 +00:00
4f87617051 added inline snacks latex rendering for norg 2026-02-20 15:12:27 +00:00
c43cfedb3b added symbol inserter 2026-02-19 12:20:47 +00:00
de48076947 lots of nonsense, neorg and autosave now in a usable state 2026-02-17 17:15:37 +00:00
eee5b39eb1 i need to get a job wtf even are these changes 2026-02-16 09:35:17 +00:00
83e835bf41 lots of polishing and command mode works again 2026-02-14 13:59:36 +00:00
ea9e351c83 got carried away and now have noice (also neorg works great, theres some shit with python idk 2026-02-13 22:25:54 +00:00
ac4759406c omg neorg works nowww 2026-02-13 20:13:08 +00:00
7f6429312c changed some stuff, still not working :( 2026-02-13 15:25:19 +00:00
voidarclabs
2a39dd7c15 treesitter not working :( 2026-02-12 22:29:48 +00:00
voidarclabs
3833828409 replaced auto-session with mini.session 2026-02-12 11:48:21 +00:00
voidarclabs
ed4b90be18 test 2026-02-12 10:04:55 +00:00
voidarclabs
fccf2bdbae disabled line wrapping 2026-02-08 22:11:54 +00:00
voidarclabs
9d65fdc908 made symlinked files show up in telescope file picker 2026-01-04 19:30:52 +00:00
voidarclabs
e563553a57 added nix formatting 2026-01-04 16:46:53 +00:00
voidarclabs
c1a605ef20 fixed lazydev 2025-11-25 11:46:29 +00:00
voidarclabs
6e88ad861f added nixd 2025-11-22 21:27:16 +00:00
voidarclabs
f24a1029aa major improvements, better stuff overall 2025-11-22 21:22:44 +00:00
voidarclabs
189ba01b97 lsp fix maybe 2025-11-22 17:44:57 +00:00
voidarclabs
24c0f370d0 better scrolloff management 2025-11-04 19:05:15 +00:00
voidarclabs
36a5a0a2c7 fixed C-u and C-d behaviour 2025-11-03 14:15:49 +00:00
voidarclabs
2574ea9578 actual progress omg 2025-10-19 16:42:42 +01:00
voidarclabs
85676d4153 restructure and more plugins 2025-08-22 13:37:35 +01:00
voidarclabs
7afd0cc72f basic theme, mini and completion tools. config still needed 2025-08-21 20:45:04 +01:00
voidarclabs
7f0f2b93f6 fresh start (finally) 2025-08-21 19:15:38 +01:00
30 changed files with 1077 additions and 439 deletions

1
.gitignore vendored
View File

@@ -1 +1,2 @@
lazy-lock.json lazy-lock.json
.session

102
README.md Normal file
View File

@@ -0,0 +1,102 @@
# NVIM For Voidfiles
Built using vim.pack and lots of mini plugins
## Installation
### Try with no install
Run the following command:
```bash
nix run git+https://git.voidarc.co.uk/voidarc/nvim#remote
```
This will use NVIM_APPNAME="nvim-remote", and pull config from the git repo without you having to install it to your system.
You will have to wait for the initial plugin install, so I advise just pressing "always" when prompted. Due to autocommands,
when the plugins have installed you will have to restart nvim with the same run command to enter the editor properly.
### Install into nix config without adding config
You can add the repo to your flake like this:
```nix
{
inputs = {
nvim-voidarc.url = "git+https://git.voidarc.co.uk/voidarc/nvim"
}
}
```
And then add this to your package list:
```nix
inputs.nvim-voidarc.packages.${stdenv.hostPlatform.system}.remote
```
I don't recommend making it follow the system nixpkgs as treesitter needs unstable in order to work properly.
### Install into nix config and add local config
Clone this repo into your nvim config directory (make sure to back up beforehand):
```
git clone https://git.voidarc.co.uk/voidarc/nvim ~/.config/nvim
```
Then add that folder as an input to your flake:
```nix
{
inputs = {
nvim-voidarc.url = "git+file:///home/username/.config/nvim";
}
}
```
Adjust the path and the username to what they are on your system. The input should be the path of the directory
that contains the flake, in this case the flake's path would be `/home/username/.config/nvim/flake.nix`.
Then add the default package to your system package:
```nix
inputs.nvim-voidarc.packages.${stdenv.hostPlatform.system}.default
```
Adding the remote package here will still work, but defeats the point of cloning it locally.
## Usage
This is a very esoteric config. I am quite opinionated, so there isn't any nice stuff like a homepage or which-keys.
Instead, there is efficiency. This is the minimum amount of pacakges required in order to support full functionality,
while also being highly extensible and adaptable to any programming language that I could want to program in.
### Keybinds
All keybinds can be found in the `lua/config/binds.lua` file, with a few exceptions. The `Keybind` function is a shorthand for the vim api.
All default vim bindings remain untouched, with almost all of the set binds having a leader prefix.
The leader key is space, configurable at the top of the `init.lua` file. When referring to the leader key, assume I mean space.
#### Navigation
- \<leader\>ff - Open Telescope fuzzy finder
- \<leader\>fn - Open Telescope file manager
- \<leader\>fg - Telescope live grep (only works in git repos afaik)
- \<leader\>fb - Telescope list of open buffers
- \<leader\>bd - Delete focused buffer
If a file is open, Telescope is configured to jump to the pane/tab where that file is open, rather than open it in the current pane.
This allows for a more consistent editing experience, such as having seperate tabs for backend and frontend files.
- \<C-t\>l - Next tab
- \<C-t\>h - Previous tab
- \<C-t\>j - New tab to the right
- \<C-t\>q - Close tab (Keeps buffers open)
Instead of using \<C-t\>j, I prefer to find the file in Telescope and use <C-t>, which opens the file in a new tab. This ovverides the
regular Telescope behaviour of jumping to the relevant pane, which only applies to enter. Similarly, <C-v> in Telescope opens the
selected file in a split to the right in the current tab. All <C-w> binds for navigating windows remain unchanged
#### Editing
- \<leader\>d - Open vim.lsp.diagnostic float menu
- gd - Go to definition of function
- ss - Open flash.nvim menu
Flash nvim has no leader key for ease of access. Non-text based flash functions are available according to the binds, but I don't use them.
#### Session management
- \<leader\>qj - Save session and exit
- \<leader\>qd - Delete session and exit
Both of these commands run `wqa`, meaning that even when deleting a session no data is ever lost (not that autosave isn't on by default lol).
When opening nvim in a folder with a `.session` file, the session will automatically be restored, including window layout. For more info, see
the mini.sessions documentation. Sessions autosave, but it is faster to use the save keybind than quit all windows one by one or run `:wqa`

27
flake.lock generated Normal file
View File

@@ -0,0 +1,27 @@
{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1782467914,
"narHash": "sha256-pGvFkM8N0xEkIIXDe5YYfbEAvHrk4IxBrjB/x8OomhE=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e73de5be04e0eff4190a1432b946d469c794e7b4",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

94
flake.nix Normal file
View File

@@ -0,0 +1,94 @@
{
description = "Neovim with LSP dev shell";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
};
outputs =
{ self, nixpkgs }:
let
system = "x86_64-linux"; # change if needed
pkgs = import nixpkgs { inherit system; };
pkgList = with pkgs; [
# LSPs
lua-language-server
vscode-langservers-extracted
emmet-language-server
svelte-language-server
rust-analyzer
ast-grep
prettier
black
alejandra
rustfmt
python313Packages.python-lsp-server
typescript-language-server
tailwindcss-language-server
stylua
nixd
# other tools
lua5_1
tree-sitter
ripgrep
gcc
fzf
gnumake
imagemagick
luarocks
];
nvimRemoteConfig = pkgs.runCommand "nvim-remote-config" { } ''
mkdir -p $out/nvim-remote
cp ${./init.lua} $out/nvim-remote/init.lua
cp -r ${./lua} $out/nvim-remote/lua
'';
mkWrappedNvim =
{
name,
extraWrapArgs ? "",
}:
pkgs.symlinkJoin {
inherit name;
paths = [ pkgs.neovim ];
buildInputs = [ pkgs.makeWrapper ];
meta.mainProgram = "nvim";
postBuild = ''
wrapProgram $out/bin/nvim \
--prefix PATH : ${pkgs.lib.makeBinPath pkgList} \
--set TREE_SITTER_LIB_PATH "${pkgs.tree-sitter}/lib" \
${extraWrapArgs}
'';
};
nvim-wrapped = mkWrappedNvim { name = "nvim"; };
nvim-remote = mkWrappedNvim {
name = "nvim-remote";
extraWrapArgs = ''
--set NVIM_APPNAME "nvim-remote" \
--set XDG_CONFIG_HOME "${nvimRemoteConfig}"
'';
};
in
{
packages.${system} = {
default = nvim-wrapped;
remote = nvim-remote;
};
devShells.${system}.default = pkgs.mkShell {
packages = [
nvim-wrapped
];
shellHook = ''
export TREE_SITTER_LIB_PATH="${pkgs.tree-sitter}/lib"
export DEVSHELL_NAME="󱄅 flake/#89dceb| neovim/green"
'';
};
};
}

View File

@@ -1,49 +1,54 @@
vim.g.mapleader = "<Space>" vim.g.mapleader = " "
vim.g.maplocalleader = ","
require("config.lazy") -- Scrolloff
local scrolloff = math.floor(vim.o.lines / 2) - 3
vim.opt.scrolloff = scrolloff
vim.opt.splitbelow = true require("plugins.init")
require("config.autocmd")
require("config.binds")
-- Colorcheme
vim.cmd.colorscheme("catppuccin-mocha") vim.cmd.colorscheme("catppuccin-mocha")
vim.opt.splitright = true -- Line numbers
vim.opt.cursorline = true vim.opt.cursorline = true
vim.wo.relativenumber = true vim.wo.relativenumber = true
vim.wo.number = true vim.wo.number = true
vim.api.nvim_set_hl(0, "LineNr", { fg = "#6c7086" }) -- overlay0 vim.api.nvim_set_hl(0, "LineNr", { fg = "#6c7086" }) -- overlay0
vim.api.nvim_set_hl(0, "CursorLineNr", { fg = "#cba6f7", bold = true }) -- mauve vim.api.nvim_set_hl(0, "CursorLineNr", { fg = "#cba6f7", bold = true }) -- mauve
vim.keymap.set("n", "<left>", '<cmd>echo "Use h to move!!"<CR>') -- Windows
vim.keymap.set("n", "<right>", '<cmd>echo "Use l to move!!"<CR>') vim.opt.splitbelow = true
vim.keymap.set("n", "<up>", '<cmd>echo "Use k to move!!"<CR>') vim.opt.splitright = true
vim.keymap.set("n", "<down>", '<cmd>echo "Use j to move!!"<CR>') vim.o.winborder = "rounded"
vim.keymap.set("n", "<leader>w", "<C-w>") -- Sane tab management
vim.keymap.set("n", "<leader>wd", "<cmd>lua Snacks.dashboard()<CR>") vim.opt.tabstop = 2
vim.keymap.set("n", "<leader>l", "<cmd>bnext<CR>") vim.opt.softtabstop = 2
vim.keymap.set("n", "<leader>h", "<cmd>bprev<CR>") vim.opt.shiftwidth = 2
vim.keymap.set("n", "<leader>j", "<cmd>lua MiniFiles.open()<CR>") vim.opt.expandtab = false
vim.keymap.set("n", "<leader>f", "<cmd>Pick files<cr>")
vim.keymap.set("n", "<leader>g", "<cmd>Pick grep_live<cr>")
vim.keymap.set("n", "<leader>u", "<cmd>UndotreeToggle<cr><cmd>UndotreeFocus<cr>")
vim.keymap.set("n", "<leader>k", "<cmd>lua Snacks.lazygit()<CR>")
vim.keymap.set("n", "<leader>x", "<cmd>FloatermKill<CR>")
vim.keymap.set("i", "jj", "<Esc>")
vim.opt.tabstop = 4
vim.opt.softtabstop = 4
vim.opt.shiftwidth = 4
vim.opt.expandtab = true
-- Undo management
vim.opt.swapfile = false vim.opt.swapfile = false
vim.opt.backup = false vim.opt.backup = false
vim.opt.undodir = os.getenv("HOME") .. "/.vim/undodir" vim.opt.undodir = os.getenv("HOME") .. "/.vim/undodir"
vim.opt.undofile = true vim.opt.undofile = true
-- Better Highlighting
vim.opt.hlsearch = false vim.opt.hlsearch = false
vim.opt.incsearch = true vim.opt.incsearch = true
require("leap").set_default_mappings() -- Nowrap
vim.opt.wrap = false
-- Indent
vim.o.autoindent = true
-- Undotree
vim.cmd("packadd nvim.undotree")
vim.keymap.set("n", "<leader>u", require("undotree").open)
-- Local project config
vim.o.exrc = true

82
lua/config/autocmd.lua Normal file
View File

@@ -0,0 +1,82 @@
-- Autocommand to check git status
vim.api.nvim_create_autocmd("VimEnter", {
callback = function()
-- Verify if the current directory is a git repo
local is_git = os.execute("git rev-parse --is-inside-work-tree > /dev/null 2>&1")
if is_git ~= 0 then
return
end
-- Perform an async fetch to avoid startup lag
vim.fn.jobstart("git fetch", {
on_exit = function()
-- Get the number of commits the remote is ahead of local HEAD
local count = vim.fn.system("git rev-list --count HEAD..@{u} 2>/dev/null"):gsub("%s+", "")
if count ~= "" and tonumber(count) > 0 then
vim.schedule(function()
vim.notify(
"󰊢 " .. count .. " new commit(s) available on remote.",
vim.log.levels.INFO,
{ title = "Git Status", icon = "󰊢" }
)
end)
end
end,
})
end,
})
vim.api.nvim_create_autocmd("FileType", {
pattern = { "svelte" },
callback = function()
vim.treesitter.start()
end,
})
local cursorline_group = vim.api.nvim_create_augroup("CursorLineControl", { clear = true })
vim.api.nvim_create_autocmd({ "WinEnter", "BufEnter" }, {
group = cursorline_group,
callback = function()
vim.opt_local.cursorline = true
end,
})
vim.api.nvim_create_autocmd({ "WinLeave" }, {
group = cursorline_group,
callback = function()
vim.opt_local.cursorline = false
end,
})
local group = vim.api.nvim_create_augroup("autosave", {})
-- Notification to say when a file is saved by autosave
vim.api.nvim_create_autocmd("User", {
pattern = "AutoSaveWritePre",
group = group,
callback = function(opts)
if opts.data.saved_buffer ~= nil then
local filename = vim.fn.expand("%:t")
print("Saved '" .. filename .. "' at " .. vim.fn.strftime("%H:%M:%S"))
end
end,
})
-- Notification when enabling/disabling autosave for a buffer
vim.api.nvim_create_autocmd("User", {
pattern = "AutoSaveEnable",
group = group,
callback = function()
print("AutoSave enabled")
end,
})
vim.api.nvim_create_autocmd("User", {
pattern = "AutoSaveDisable",
group = group,
callback = function()
print("AutoSave disabled")
end,
})

104
lua/config/binds.lua Normal file
View File

@@ -0,0 +1,104 @@
-- Keymap function
function Keymap(mode, key, binding, opts)
local options = { noremap = true, silent = true }
if opts then
options = vim.tbl_extend("force", options, opts)
end
vim.keymap.set(mode, key, binding, options)
end
Keymap("n", "q:", ":") -- remove nonsense command
Keymap("n", "<leader>bd", function() -- delete buffer
vim.cmd("bd")
vim.cmd("echo 'Buffer deleted'")
end)
for _, bind in ipairs({ "i", "a", "A" }) do
-- Pass { expr = true } as the fourth argument
Keymap("n", bind, function()
if vim.fn.getline("."):match("^%s*$") then
return [["_cc]]
else
return bind
end
end, { expr = true })
end
Keymap("i", "<C-BS>", "<C-W>") -- C-Backscpace for whole words
Keymap("n", "<leader>d", "<cmd>lua vim.diagnostic.open_float()<CR>") -- Diagnostics for Linter
Keymap("n", "gd", "<cmd>lua vim.lsp.buf.definition()<CR>") -- Diagnostics for Linter
-- Flash keymaps
Keymap("n", "ss", function()
require("flash").jump()
end)
Keymap("n", "S", function()
require("flash").treesitter()
end)
Keymap("n", "<leader>r", function()
require("flash").remote()
end)
Keymap("n", "<leader>R", function()
require("flash").treesitter_search()
end)
-- Mini Session Keybinds
Keymap("n", "<leader>qj", function() -- quit and save session local
require("mini.sessions").write(".session")
vim.cmd("wqa")
end)
Keymap("n", "<leader>qd", function() -- quit and delete session
require("mini.sessions").delete(".session")
vim.cmd("wqa")
end)
-- Telescope
local builtin = require("telescope.builtin")
Keymap("n", "<leader>ff", function()
builtin.find_files({ hidden = true })
end)
Keymap("n", "<space>fn", function()
local full_path = vim.api.nvim_buf_get_name(0)
local dir = vim.fn.fnamemodify(full_path, ":h")
require("telescope").extensions.file_browser.file_browser({
path = dir,
})
end)
Keymap("n", "<space>fs", function() -- select sessions
MiniSessions.select()
end)
Keymap("n", "<space>fd", function() -- select sessions
MiniSessions.select("delete")
end)
Keymap("n", "<leader>fg", function()
builtin.live_grep({ hidden = true })
end)
Keymap("n", "<leader>fb", function()
builtin.buffers({ show_all_buffers = true })
end)
-- Tab binds
Keymap("n", "<C-T>l", function()
vim.cmd("tabnext")
end)
Keymap("n", "<C-T>h", function()
vim.cmd("tabprevious")
end)
Keymap("n", "<C-T>j", function()
vim.cmd("tabnew")
end)
Keymap("n", "<C-T>q", function()
vim.cmd("tabclose")
end)

View File

@@ -1,35 +0,0 @@
-- Bootstrap lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
if vim.v.shell_error ~= 0 then
vim.api.nvim_echo({
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
{ out, "WarningMsg" },
{ "\nPress any key to exit..." },
}, true, {})
vim.fn.getchar()
os.exit(1)
end
end
vim.opt.rtp:prepend(lazypath)
-- Make sure to setup `mapleader` and `maplocalleader` before
-- loading lazy.nvim so that mappings are correct.
-- This is also a good place to setup other settings (vim.opt)
vim.g.mapleader = " "
vim.g.maplocalleader = "\\"
-- Setup lazy.nvim
require("lazy").setup({
spec = {
-- import your plugins
{ import = "plugins" },
},
-- Configure any other settings here. See the documentation for more details.
-- colorscheme that will be used when installing plugins.
install = { colorscheme = { "catppuccin-mocha" } },
-- automatically check for plugin updates
checker = { enabled = true },
})

View File

@@ -1,5 +0,0 @@
return {
{ "catppuccin/nvim", name = "catppuccin", priority = 1000, opts = {
transparent_background = true,
} },
}

View File

@@ -0,0 +1,52 @@
vim.pack.add({
{ src = "https://github.com/stevearc/conform.nvim", name = "conform" },
{ src = "https://github.com/mfussenegger/nvim-lint", name = "lint" },
})
require("conform").setup({
formatters_by_ft = {
lua = { "stylua" },
javascript = { "prettier" },
typescriptreact = { "prettier" },
typescript = { "prettier" },
html = { "prettier" },
svelte = { "prettier" },
python = { "black" },
nix = { "alejandra" },
css = { "prettier" },
rust = { "rustfmt" },
},
format_on_save = true,
undojoin = true,
})
local lint = require("lint")
-- Only show diagnostics close to the cursor
vim.diagnostic.config({
virtual_text = {
spacing = 4,
prefix = function(diagnostic)
local icons = {
[vim.diagnostic.severity.ERROR] = "",
[vim.diagnostic.severity.WARN] = "󰉀 ",
[vim.diagnostic.severity.INFO] = "",
[vim.diagnostic.severity.HINT] = "󰌵 ",
}
return icons[diagnostic.severity] or ""
end,
},
signs = false,
underline = true,
update_in_insert = false,
})
-- Auto-run the linter only for the configured filetypes
vim.api.nvim_create_autocmd("BufWritePost", {
callback = function()
local ft = vim.bo.filetype
if lint.linters_by_ft[ft] then
lint.try_lint()
end
end,
})

View File

@@ -0,0 +1,133 @@
vim.pack.add({
{ src = "https://github.com/neovim/nvim-lspconfig", name = "lspconfig" },
{ src = "https://github.com/saghen/blink.cmp", name = "blink" },
{ src = "https://github.com/saghen/blink.lib", name = "blink-lib" },
})
local hostname = vim.uv.os_gethostname()
local lowerHostname = string.lower(hostname)
vim.lsp.config("nixd", {
cmd = { "nixd" },
filetypes = { "nix" },
root_markers = { "flake.nix", ".git" },
settings = {
nixd = {
nixpkgs = {
expr = "import <nixpkgs> { }",
},
formatting = {
command = { "alejandra" },
},
options = {
nixos = {
expr = '(builtins.getFlake "~/.dotfiles/.nixos").nixosConfigurations.'
.. lowerHostname
.. ".options",
},
},
},
},
})
vim.lsp.config("lua_ls", {
settings = {
Lua = {
-- Tell the server to let Neovim handle snippet expansion
completion = {
callSnippet = "Replace",
},
-- Use LuaJIT (which Neovim uses)
runtime = {
version = "LuaJIT",
},
},
},
})
vim.lsp.enable({
"lua_ls",
"ts_ls",
"pylsp",
"cssls",
"svelte",
"nixd",
"rust_analyzer",
"emmet_language_server",
})
vim.o.pumborder = "rounded"
require("blink.cmp").setup({
fuzzy = { implementation = "lua" },
signature = {
enabled = false,
},
completion = {
trigger = {
show_on_insert = true,
show_on_trigger_character = true,
show_on_keyword = true,
show_on_backspace = true,
},
list = {
selection = {
preselect = false,
auto_insert = true,
},
},
menu = {
auto_show = true,
border = "rounded",
min_width = 35,
auto_show_delay_ms = 100,
},
},
-- Keymaps
keymap = {
["<Tab>"] = { "select_next", "snippet_forward", "fallback" },
},
sources = {
default = {
"lsp", -- (Equivalent to cmp-nvim-lsp)
"snippets", -- (Handled by the snippets config, replaces cmp_luasnip source)
"buffer", -- (Equivalent to cmp-buffer)
"path", -- (Equivalent to cmp-path)
},
providers = {
-- lazydev = {
-- name = "LazyDev",
-- module = "lazydev.integrations.blink",
-- -- make lazydev completions top priority (see `:h blink.cmp`)
-- score_offset = 100,
-- },
},
},
})
vim.api.nvim_create_autocmd("FileType", { -- Lazy load lazydev when in lua file (no pun intended)
pattern = "lua",
callback = function()
vim.pack.add({
{ src = "https://github.com/folke/lazydev.nvim", name = "lazydev" },
})
require("lazydev").setup()
require("blink.cmp").setup({ -- Reload blink with lazydev as a source
sources = {
-- add lazydev to your completion providers
default = { "lazydev", "lsp", "path", "snippets", "buffer" },
providers = {
lazydev = {
name = "LazyDev",
module = "lazydev.integrations.blink",
-- make lazydev completions top priority (see `:h blink.cmp`)
score_offset = 100,
},
},
},
})
end,
})

View File

@@ -0,0 +1,25 @@
vim.pack.add({ { src = "https://github.com/nvim-treesitter/nvim-treesitter", name = "treesitter" } })
require("nvim-treesitter").setup({
highlight = { enable = true },
indent = { enable = true },
})
require("nvim-treesitter").install({
"bash",
"html",
"svelte",
"latex",
"javascript",
"json",
"lua",
"markdown",
"markdown_inline",
"query",
"regex",
"tsx",
"typescript",
"python",
"vim",
"yaml",
})

View File

@@ -1,147 +0,0 @@
return {
-- LSP Configuration
{
"neovim/nvim-lspconfig",
dependencies = {
"williamboman/mason.nvim",
"williamboman/mason-lspconfig.nvim",
},
config = function()
require("mason").setup()
require("mason-lspconfig").setup({
ensure_installed = { "ts_ls", "lua_ls", "pyright", "rust_analyzer", "eslint" }, -- Add your desired LSPs
automatic_installation = true,
})
local lspconfig = require("lspconfig")
lspconfig.lua_ls.setup({})
--Enable (broadcasting) snippet capability for completion
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities.textDocument.completion.completionItem.snippetSupport = true
vim.lsp.config("qmlls", {
default_config = {
cmd = { "qmlls" },
filetypes = { "qml" },
root_dir = lspconfig.util.root_pattern(".git", "."),
}
}
)
vim.lsp.config("cssls", {
capabilities = capabilities,
})
lspconfig.pyright.setup({})
lspconfig.cssls.setup({})
lspconfig.qmlls.setup({})
lspconfig.ts_ls.setup({
capabilities = capabilities,
})
lspconfig.rust_analyzer.setup({})
lspconfig.emmet_ls.setup({
capabilities = require("cmp_nvim_lsp").default_capabilities(),
filetypes = { "html", "css", "javascriptreact", "typescriptreact" }, -- Add more if needed
init_options = {
html = {
options = {
["bem.enabled"] = true,
},
},
},
})
end,
},
-- Autocompletion
{
"hrsh7th/nvim-cmp",
dependencies = {
"hrsh7th/cmp-nvim-lsp",
"hrsh7th/cmp-buffer",
"hrsh7th/cmp-path",
"hrsh7th/cmp-cmdline",
"L3MON4D3/LuaSnip",
"saadparwaiz1/cmp_luasnip", -- Completion for snippets
},
config = function()
local cmp = require("cmp")
local luasnip = require("luasnip")
cmp.setup({
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
mapping = cmp.mapping.preset.insert({
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
else
fallback()
end
end, { "i", "s" }),
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, { "i", "s" }),
["<CR>"] = cmp.mapping.confirm({ select = true }), -- Confirm selection with Enter
}),
sources = cmp.config.sources({
{ name = "nvim_lsp" }, -- This should provide LSP completions like for ESLint
-- { name = "luasnip" },
{ name = "buffer" },
{ name = "path" },
}),
})
end,
},
-- Linting
{
"mfussenegger/nvim-lint",
config = function()
local lint = require("lint")
-- Explicitly define linters for each file type (without ast_grep)
lint.linters_by_ft = {
python = { "flake8" },
javascript = { "eslint" },
typescript = { "eslint" },
}
-- Auto-run the linter only for the configured filetypes
vim.api.nvim_create_autocmd("BufWritePost", {
pattern = "!*.lua",
callback = function()
local ft = vim.bo.filetype
if lint.linters_by_ft[ft] then
lint.try_lint()
end
end,
})
end,
},
-- autoformatting
{
"stevearc/conform.nvim",
config = function()
require("conform").setup({
formatters_by_ft = {
lua = { "stylua" },
javascript = { "prettier" },
python = { "black" },
},
format_on_save = true,
})
end,
},
}

35
lua/plugins/init.lua Normal file
View File

@@ -0,0 +1,35 @@
local plugins = {}
-- 1. Setup paths
local lua_path = vim.fn.stdpath("config") .. "/lua"
local plugin_dir = lua_path .. "/plugins"
-- 2. Use ** to search recursively for all .lua files
local files = vim.fn.split(vim.fn.globpath(plugin_dir, "**/*.lua"), "\n")
for _, file in ipairs(files) do
-- Get path relative to the 'lua' directory
-- Example: /home/user/.config/nvim/lua/plugins/ui/statusline.lua
-- Becomes: plugins/ui/statusline.lua
local relative_path = file:sub(#lua_path + 2)
-- Remove the .lua extension
local module_path = relative_path:gsub("%.lua$", "")
-- Convert path slashes to Lua dots (plugins/ui/statusline -> plugins.ui.statusline)
module_path = module_path:gsub("/", ".")
-- 3. The Guard: Don't require the current file (plugins.init)
if not module_path:match("%.init$") and module_path ~= "plugins" then
local status_ok, module_content = pcall(require, module_path)
if status_ok then
table.insert(plugins, module_content)
else
-- Optional: notify if a file failed to load
vim.notify("Error loading " .. module_path .. ": " .. module_content, vim.log.levels.ERROR)
end
end
end
return plugins

View File

@@ -1,3 +0,0 @@
return {
"ggandor/leap.nvim",
}

View File

@@ -1,60 +0,0 @@
return {
"nvim-lualine/lualine.nvim",
dependencies = { "nvim-tree/nvim-web-devicons" },
config = function()
require("lualine").setup({
options = {
icons_enabled = true,
theme = "auto",
component_separators = { left = "", right = "" },
section_separators = { left = "", right = "" },
disabled_filetypes = {
statusline = {},
winbar = {},
},
ignore_focus = {},
always_divide_middle = true,
always_show_tabline = true,
globalstatus = false,
refresh = {
statusline = 1000,
tabline = 1000,
winbar = 1000,
refresh_time = 16, -- ~60fps
events = {
"WinEnter",
"BufEnter",
"BufWritePost",
"SessionLoadPost",
"FileChangedShellPost",
"VimResized",
"Filetype",
"CursorMoved",
"CursorMovedI",
"ModeChanged",
},
},
},
sections = {
lualine_a = { "mode" },
lualine_b = { "branch", "diff", "diagnostics" },
lualine_c = { "buffers" },
lualine_x = { "encoding", "fileformat", "filetype" },
lualine_y = { "lsp_status" },
lualine_z = { "location" },
},
inactive_sections = {
lualine_a = {},
lualine_b = {},
lualine_c = { "filename" },
lualine_x = { "location" },
lualine_y = {},
lualine_z = {},
},
tabline = {},
winbar = {},
inactive_winbar = {},
extensions = {},
})
end,
}

View File

@@ -1,57 +0,0 @@
return {
"echasnovski/mini.nvim",
version = "*", -- or a specific tag
config = function()
-- Only load the modules you want
require("mini.animate").setup({
cursor = {
enable = false,
},
})
require("mini.pairs").setup()
require("mini.files").setup()
require("mini.cursorword").setup({
content = {
active = true,
},
})
require("mini.notify").setup()
require("mini.move").setup({
mappings = {
down = "J",
up = "K",
},
})
require("mini.surround").setup({
mappings = {
add = "<leader>sa",
delete = "<leader>sd", -- Delete surrounding
find = "<leader>sf", -- Find surrounding (to the right)
find_left = "<leader>sF", -- Find surrounding (to the left)
highlight = "<leader>sh", -- Highlight surrounding
replace = "<leader>sr", -- Replace surrounding
update_n_lines = "<leader>sn", -- Update `n_lines`
},
})
require("mini.ai").setup({
mappings = {
-- Main textobject prefixes
around = "a",
inside = "i",
-- Next/last variants
-- NOTE: These override built-in LSP selection mappings on Neovim>=0.12
-- Map LSP selection manually to use it (see `:h MiniAi.config`)
around_next = "<leader>an",
inside_next = "<leader>in",
around_last = "<leader>al",
inside_last = "<leader>il",
-- Move cursor to corresponding edge of `a` textobject
goto_left = "<leader>g[",
goto_right = "<leader>g]",
},
})
require("mini.pick").setup({})
end,
}

View File

@@ -1,63 +0,0 @@
return {
"folke/snacks.nvim",
priority = 1000,
lazy = false,
---@type snacks.Config
opts = {
lazygit = { enabled = true },
bigfile = { enabled = true },
picker = {},
dashboard = {
enabled = true,
width = 100,
preset = {
keys = {
{ icon = "", key = "f", desc = "Find File", action = ":Pick files" },
{ icon = "", key = "n", desc = "New File", action = ":ene | startinsert" },
{
icon = "",
key = "g",
desc = "Find Text",
action = ":Pick live_grep",
},
{
icon = "",
key = "r",
desc = "Recent Files",
action = ":lua Snacks.dashboard.pick('oldfiles')",
},
{
icon = "",
key = "c",
desc = "Config",
action = ":lua Snacks.dashboard.pick('files', {cwd = vim.fn.stdpath('config')})",
},
{ icon = "", key = "U", desc = "Restore Session", section = "session" },
{
icon = "󰒲 ",
key = "L",
desc = "Lazy",
action = ":Lazy",
enabled = package.loaded.lazy ~= nil,
},
{ icon = "", key = "q", desc = "Quit", action = ":qa" },
},
header = [[
░ ░░░░ ░░░ ░░░ ░░ ░░░░ ░░░ ░░░░ ░░
▒ ▒▒▒▒ ▒▒ ▒▒▒▒ ▒▒▒▒▒ ▒▒▒▒▒ ▒▒▒▒ ▒▒ ▒▒▒▒ ▒▒ ▒▒▒▒ ▒▒ ▒▒▒▒ ▒
▓▓ ▓▓ ▓▓▓ ▓▓▓▓ ▓▓▓▓▓ ▓▓▓▓▓ ▓▓▓▓ ▓▓ ▓▓▓▓ ▓▓ ▓▓▓ ▓▓▓▓▓▓▓
███ ████ ████ █████ █████ ████ ██ ██ ███ ███ ████ █
████ ██████ ███ ██ ███ ████ ██ ████ ███ ██
]],
},
sections = {
{ section = "header" },
{ icon = "", title = "Keymaps", section = "keys", indent = 2, padding = 1 },
{ icon = "", title = "Recent Files", section = "recent_files", indent = 2, padding = 1 },
{ icon = "", title = "Projects", section = "projects", indent = 2, padding = 1 },
{ section = "startup" },
},
},
},
}

View File

@@ -1,4 +0,0 @@
return {
'nvim-telescope/telescope.nvim',
dependencies = { 'nvim-lua/plenary.nvim' }
}

View File

@@ -1,8 +0,0 @@
return {
{
"levouh/tint.nvim",
config = function()
require("tint").setup()
end,
},
}

View File

@@ -1,13 +0,0 @@
return {
{
"akinsho/toggleterm.nvim",
version = "*",
opts = {--[[ things you want to change go here]]
},
config = function()
require("toggleterm").setup({
open_mapping = [[<c-\>]],
})
end,
},
}

View File

@@ -1,12 +0,0 @@
return {
"nvim-treesitter/nvim-treesitter",
run = ":TSUpdate",
config = function()
require("nvim-treesitter.configs").setup({
ensure_installed = { "javascript", "lua", "python", "html", "css", "typescript", "rust" }, -- Add JavaScript here
highlight = {
enable = true, -- Enable syntax highlighting
},
})
end,
}

View File

@@ -0,0 +1,18 @@
vim.pack.add({
{ src = "https://github.com/catppuccin/nvim", name = "catppuccin" },
{ src = "https://github.com/tadaa/vimade", name = "vimade" },
})
require("catppuccin").setup({
transparent_background = true, -- disables setting the background color.
float = {
transparent = true, -- enable transparent floating windows
solid = false, -- use solid styling for floating windows, see |winborder|
},
show_end_of_buffer = true, -- shows the '~' characters after the end of buffers
})
require("vimade").setup({
recipe = { "minimalist", { animate = true } },
fadelevel = 0.6,
})

View File

@@ -0,0 +1,71 @@
vim.pack.add({
{ src = "https://github.com/nvim-lualine/lualine.nvim", name = "lualine" },
{ src = "https://github.com/nvim-tree/nvim-web-devicons", name = "devicons" },
{ src = "https://github.com/archibate/lualine-time", name = "lualine-time" },
})
require("lualine").setup({
options = {
icons_enabled = true,
theme = "auto",
component_separators = { left = "", right = "" },
section_separators = { left = "", right = "" },
disabled_filetypes = {
statusline = {},
winbar = {},
},
ignore_focus = {},
always_divide_middle = true,
always_show_tabline = true,
globalstatus = false,
refresh = {
statusline = 1000,
tabline = 1000,
winbar = 1000,
refresh_time = 16, -- ~60fps
events = {
"WinEnter",
"BufEnter",
"BufWritePost",
"SessionLoadPost",
"FileChangedShellPost",
"VimResized",
"Filetype",
"CursorMoved",
"CursorMovedI",
"ModeChanged",
},
},
},
sections = {
lualine_a = {
"mode",
{
function()
local reg = vim.fn.reg_recording()
if reg == "" then
return ""
end -- not recording
return "MACRO " .. string.upper(tostring(reg))
end,
},
},
lualine_b = { "branch", "diff", "diagnostics" },
lualine_c = { "filename" },
lualine_x = { "filetype" },
lualine_y = { "lsp_status" },
lualine_z = { "ctime" },
},
inactive_sections = {
lualine_a = {},
lualine_b = { "branch", "diff", "diagnostics" },
lualine_c = { "filename" },
lualine_x = { "location" },
lualine_y = {},
lualine_z = {},
},
tabline = {},
winbar = {},
inactive_winbar = {},
extensions = {},
})

41
lua/plugins/ui/noice.lua Normal file
View File

@@ -0,0 +1,41 @@
vim.pack.add({
{ src = "https://github.com/folke/noice.nvim", name = "noice" },
{ src = "https://github.com/MunifTanjim/nui.nvim", name = "nui" },
{ src = "https://github.com/rcarriga/nvim-notify", name = "notify" },
})
vim.notify = require("notify").setup({
background_colour = "#000000",
render = "compact",
stages = "slide",
})
require("noice").setup({
messages = {
enabled = true,
view = "mini",
view_error = "notify", -- view for errors
view_warn = "notify", -- view for warnings
view_history = "messages", -- view for :messages
view_search = "virtualtext", -- view for search count messages. Set to `false` to disable
},
notify = {
enabled = true,
view = "notify",
},
hover = {
enabled = false,
},
lsp = {
hover = {
enabled = false,
},
signature = {
enabled = false,
},
},
presets = {
long_message_to_split = true, -- long messages will be sent to a split
inc_rename = false, -- enables an input dialog for inc-rename.nvim
lsp_doc_border = false, -- add a border to hover docs and signature help
},
})

View File

@@ -1,4 +0,0 @@
return {
"mbbill/undotree",
lazy = false,
}

View File

@@ -0,0 +1,35 @@
vim.pack.add({
{ src = "https://github.com/okuuva/auto-save.nvim", name = "autosave" },
{ src = "https://github.com/vladdoster/remember.nvim", name = "remember" },
{ src = "https://github.com/Aasim-A/scrollEOF.nvim", name = "scrolleof" },
{ src = "https://github.com/folke/flash.nvim", name = "flash" },
})
require("auto-save").setup({
enabled = true,
trigger_events = {
immediate_save = { "BufLeave", "FocusLost", "QuitPre", "VimSuspend" },
defer_save = { "InsertLeave" }, -- save after debounce
cancel_deferred_save = { "InsertEnter" }, -- cancel pending save
},
debounce_delay = 1000,
noautocmd = true,
})
-- enable remember
require("remember").setup({})
-- enable scrolleof
require("scrollEOF").setup({
-- The pattern used for the internal autocmd to determine
-- where to run scrollEOF. See https://neovim.io/doc/user/autocmd.html#autocmd-pattern
pattern = "*",
-- Whether or not scrollEOF should be enabled in insert mode
insert_mode = false,
-- Whether or not scrollEOF should be enabled in floating windows
floating = true,
-- List of filetypes to disable scrollEOF for.
disabled_filetypes = { "terminal" },
-- List of modes to disable scrollEOF for. see https://neovim.io/doc/user/builtin.html#mode()
disabled_modes = { "t", "nt" },
})

View File

@@ -0,0 +1,52 @@
vim.pack.add({ { src = "https://github.com/echasnovski/mini.nvim", name = "mini" } })
require("mini.pairs").setup() -- Bracket pairs and stuff
require("mini.ai").setup() -- Around and In extension for visual mode
require("mini.cursorword").setup() -- Underline current word below cursor (makes it easier to c and d)
require("mini.indentscope").setup({ -- shows indents
symbol = "",
draw = {
delay = 10,
animation = require("mini.indentscope").gen_animation.linear({
duration = 15,
unit = "step",
easing = "out",
}),
},
})
require("mini.trailspace").setup() -- Shows useless spaces
require("mini.sessions").setup({ -- dir based session management
autoread = true,
autowrite = true,
file = ".session",
force = { read = false, write = true, delete = true },
})
require("mini.surround").setup() -- Suround selections with characters
require("mini.move").setup({ -- move selection in visual mode
mappings = {
down = "J",
up = "K",
},
})
require("mini.icons").setup() -- Icon provider
local animate = require("mini.animate") -- animations ovs
require("mini.animate").setup({
cursor = {
enable = false,
},
scroll = {
-- Animate for 200 milliseconds with linear easing
timing = animate.gen_timing.linear({ duration = 100, unit = "total" }),
-- Animate equally but with at most 120 steps instead of default 60
subscroll = animate.gen_subscroll.equal({ max_output_steps = 60 }),
},
})

View File

@@ -0,0 +1,60 @@
vim.pack.add({
{ src = "https://github.com/nvim-telescope/telescope.nvim", name = "telescope" },
{ src = "https://github.com/nvim-lua/plenary.nvim", name = "plenary" },
{ src = "https://github.com/nvim-telescope/telescope-symbols.nvim", name = "telescope-symbols" },
{ src = "https://github.com/nvim-telescope/telescope-ui-select.nvim", name = "telescope-ui-select" },
{ src = "https://github.com/nvim-telescope/telescope-fzf-native.nvim", name = "telescope-fzf" },
{ src = "https://github.com/nvim-telescope/telescope-file-browser.nvim", name = "telescope-file-browser" },
{ src = "https://github.com/2kabhishek/nerdy.nvim", name = "telescope-nerdy" },
})
local actions = require("telescope.actions")
require("telescope").setup({
defaults = {
file_ignore_patterns = { ".git", "%.csv", ".venv", ".node_modules", "node_modules", ".svelte-kit", ".vscode" },
},
pickers = {
buffers = {
show_all_buffers = true,
mappings = {
i = {
["<CR>"] = actions.select_drop,
},
n = {
["<CR>"] = actions.select_drop,
},
},
},
find_files = {
show_all_buffers = true,
mappings = {
i = {
["<CR>"] = actions.select_drop,
},
n = {
["<CR>"] = actions.select_drop,
},
},
},
live_grep = {
additional_args = function()
return { "--hidden" }
end,
},
},
extensions = {
file_browser = {
theme = "ivy",
hijack_netrw = true,
},
["ui-select"] = {
require("telescope.themes").get_dropdown({
-- even more opts
}),
},
},
})
require("telescope").load_extension("file_browser")
require("telescope").load_extension("ui-select")
require("telescope").load_extension("nerdy")

112
nvim-pack-lock.json Normal file
View File

@@ -0,0 +1,112 @@
{
"plugins": {
"autosave": {
"rev": "9aabcb8396224dcbf8d51c0c1d620d88a46e89d7",
"src": "https://github.com/okuuva/auto-save.nvim"
},
"blink": {
"rev": "3db7326f54b73df4789e0fd6274bedda33975fea",
"src": "https://github.com/saghen/blink.cmp"
},
"blink-lib": {
"rev": "b127d48bf8e9ac9cf41f6e0fbead317503f76558",
"src": "https://github.com/saghen/blink.lib"
},
"catppuccin": {
"rev": "0303a7208dba448c459767486a38a6ec05c4216b",
"src": "https://github.com/catppuccin/nvim"
},
"conform": {
"rev": "619363c30309d29ffa631e67c8183f2a72caa373",
"src": "https://github.com/stevearc/conform.nvim"
},
"devicons": {
"rev": "dfbfaa967a6f7ec50789bead7ef87e336c1fa63c",
"src": "https://github.com/nvim-tree/nvim-web-devicons"
},
"flash": {
"rev": "fcea7ff883235d9024dc41e638f164a450c14ca2",
"src": "https://github.com/folke/flash.nvim"
},
"lazydev": {
"rev": "ff2cbcba459b637ec3fd165a2be59b7bbaeedf0d",
"src": "https://github.com/folke/lazydev.nvim"
},
"lint": {
"rev": "99cbc3ca8a76845fca50e496be7212bebf907dd3",
"src": "https://github.com/mfussenegger/nvim-lint"
},
"lspconfig": {
"rev": "229b79051b380377664edc4cbd534930154921a1",
"src": "https://github.com/neovim/nvim-lspconfig"
},
"lualine": {
"rev": "221ce6b2d999187044529f49da6554a92f740a96",
"src": "https://github.com/nvim-lualine/lualine.nvim"
},
"lualine-time": {
"rev": "8838875e2e787293bb905d23dbb91ef4bde188ea",
"src": "https://github.com/archibate/lualine-time"
},
"mini": {
"rev": "d5e6f5b843f1d813d9c4bfb242b751dc5ab6f8ae",
"src": "https://github.com/echasnovski/mini.nvim"
},
"noice": {
"rev": "7bfd942445fb63089b59f97ca487d605e715f155",
"src": "https://github.com/folke/noice.nvim"
},
"notify": {
"rev": "8701bece920b38ea289b457f902e2ad184131a5d",
"src": "https://github.com/rcarriga/nvim-notify"
},
"nui": {
"rev": "de740991c12411b663994b2860f1a4fd0937c130",
"src": "https://github.com/MunifTanjim/nui.nvim"
},
"plenary": {
"rev": "74b06c6c75e4eeb3108ec01852001636d85a932b",
"src": "https://github.com/nvim-lua/plenary.nvim"
},
"remember": {
"rev": "e73350b07afdd4242a57e2e7c2b7cd38fce31d59",
"src": "https://github.com/vladdoster/remember.nvim"
},
"scrolleof": {
"rev": "e462b9a07b8166c3e8011f1dcbc6bf68b67cd8d7",
"src": "https://github.com/Aasim-A/scrollEOF.nvim"
},
"telescope": {
"rev": "7d324792b7943e4aa16ad007212e6acc6f9fe335",
"src": "https://github.com/nvim-telescope/telescope.nvim"
},
"telescope-file-browser": {
"rev": "3610dc7dc91f06aa98b11dca5cc30dfa98626b7e",
"src": "https://github.com/nvim-telescope/telescope-file-browser.nvim"
},
"telescope-fzf": {
"rev": "b25b749b9db64d375d782094e2b9dce53ad53a40",
"src": "https://github.com/nvim-telescope/telescope-fzf-native.nvim"
},
"telescope-nerdy": {
"rev": "8fd18f0075c480b4e0865464dcd4fb7a42c6889e",
"src": "https://github.com/2kabhishek/nerdy.nvim"
},
"telescope-symbols": {
"rev": "a6d0127a53d39b9fc2af75bd169d288166118aec",
"src": "https://github.com/nvim-telescope/telescope-symbols.nvim"
},
"telescope-ui-select": {
"rev": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2",
"src": "https://github.com/nvim-telescope/telescope-ui-select.nvim"
},
"treesitter": {
"rev": "4916d6592ede8c07973490d9322f187e07dfefac",
"src": "https://github.com/nvim-treesitter/nvim-treesitter"
},
"vimade": {
"rev": "a5323f4930e3f1f48c0329e50bd218ba61577aaf",
"src": "https://github.com/tadaa/vimade"
}
}
}