Configuration for my NixOS based systems and Home Manager
1-- Bootstrap lazy.nvim
2local ensure_lazy = function()
3 local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
4 if not vim.loop.fs_stat(lazypath) then
5 vim.fn.system(
6 {
7 "git",
8 "clone",
9 "--filter=blob:none",
10 "https://github.com/folke/lazy.nvim.git",
11 "--branch=stable", -- latest stable release
12 lazypath
13 }
14 )
15 end
16 vim.opt.rtp:prepend(lazypath)
17end
18
19local lazy_bootstrap = ensure_lazy()
20if lazy_bootstrap then
21 print("Bootstrapped lazy.nvim")
22end
23
24require("lazy").setup(
25 {
26 -- Color themes
27 "shaunsingh/nord.nvim",
28 "shaunsingh/moonlight.nvim",
29 "folke/tokyonight.nvim",
30 "cranberry-clockworks/coal.nvim",
31 "hardselius/warlock",
32 { "catppuccin/nvim", name = "catppuccin", priority = 1000 },
33 {
34 "neanias/everforest-nvim",
35 version = false,
36 lazy = false,
37 priority = 1000, -- make sure to load this before all the other start plugins
38 main = "everforest",
39 opts = {
40 background = "hard",
41 },
42 },
43 {
44 "rebelot/kanagawa.nvim",
45 opts = {compile = true}
46 },
47 -- show indents and whitespace characters
48 "lukas-reineke/indent-blankline.nvim",
49 -- Completion
50 "hrsh7th/nvim-compe",
51 "hrsh7th/vim-vsnip",
52 -- nvim lsp plugins
53 "neovim/nvim-lspconfig",
54 {
55 "nvimdev/lspsaga.nvim",
56 dependencies = {
57 "nvim-tree/nvim-web-devicons",
58 "nvim-treesitter/nvim-treesitter"
59 },
60 opts = {lightbulb = {enable = false}},
61 event = "LspAttach"
62 },
63 -- Syntax Highlighting from the future
64 {
65 "nvim-treesitter/nvim-treesitter",
66 init = function()
67 vim.cmd([[":TSUpdate"]])
68 end
69 },
70 -- GitGutter, shows inline difs
71 "airblade/vim-gitgutter",
72 -- Git wrapper plugin
73 "tpope/vim-fugitive",
74 -- surround with pairs ))))))
75 --"tpope/vim-surround",
76 -- Auto format tool
77 {"sbdchd/neoformat", lazy = true, cmd = "Neoformat"},
78 -- Distraction free writing: GoYo + Limelight
79 {"junegunn/limelight.vim", lazy = true, ft = "markdown"},
80 {"junegunn/goyo.vim", lazy = true, ft = "markdown"},
81 -- Golang plugins
82 --use {"fatih/vim-go", run = ":GoUpdateBinaries", lazy = true, ft = "go"}
83 {
84 "ray-x/go.nvim",
85 ft = "go",
86 lazy = true,
87 dependencies = {
88 "ray-x/guihua.lua",
89 "neovim/nvim-lspconfig",
90 "nvim-treesitter/nvim-treesitter"
91 }
92 },
93 {
94 "nvim-lualine/lualine.nvim",
95 dependencies = {"nvim-tree/nvim-web-devicons"}
96 },
97 "junegunn/fzf.vim",
98 {
99 dir = "~/.fzf",
100 build = function()
101 vim.fn["fzf#install"](0)
102 end,
103 dependencies = {"junegunn/fzf.vim"}
104 },
105 -- Polyglot
106 "sheerun/vim-polyglot",
107 -- Telescope, find anything fast
108 "nvim-lua/plenary.nvim",
109 {"nvim-telescope/telescope.nvim", dependencies = {"nvim-lua/plenary.nvim"}},
110 "nvim-telescope/telescope-symbols.nvim",
111 {"folke/trouble.nvim", dependencies = "nvim-tree/nvim-web-devicons"},
112 -- Which key is bound?
113 "folke/which-key.nvim", -- literally the best plugin ever
114 -- Lithsps
115 {
116 "guns/vim-sexp",
117 ft = {"hy", "scheme", "clojure"},
118 }, -- ))))))
119 {"hiphish/rainbow-delimiters.nvim"},
120 --{"gpanders/nvim-parinfer", ft = {"scheme", "lisp", "fennel", "clojure", "lua"}},
121 --{
122 -- "eraserhd/parinfer-rust",
123 -- build = "RUSTFLAGS='-C target-feature=+crt-static' cargo build --release",
124 -- ft = {"scheme", "lisp", "fennel", "clojure", "lua"},
125 --},
126 -- Conjure, lisp is magical
127 {
128 "Olical/conjure",
129 ft = {"scheme", "lisp", "fennel", "clojure", "lua"},
130 config = function()
131 vim.g["conjure#client#scheme#stdio#command"] = "gxi"
132 vim.g["conjure#client#scheme#stdio#prompt_pattern"] = "%d*> $?"
133 end
134 },
135 {"p1xelHer0/gerbil.nvim", ft = "scheme"},
136 -- Fennel, Luasthp
137 {"jaawerth/fennel.vim", lazy = true, ft = "fennel"},
138 {"rktjmp/hotpot.nvim", lazy = true, ft = "fennel"},
139 {"Olical/nfnl", ft = "fennel"},
140 -- Rust stuff
141 {
142 "simrat39/rust-tools.nvim",
143 ft = {"rust"},
144 config = function()
145 local rt = require("rust-tools")
146 rt.setup(
147 {
148 server = {
149 on_attach = function(_, bufnr)
150 -- Hover actions
151 vim.keymap.set("n", "<C-space>", rt.hover_actions.hover_actions, {buffer = bufnr})
152 -- Code action groups
153 vim.keymap.set(
154 "n",
155 "<Leader>a",
156 rt.code_action_group.code_action_group,
157 {buffer = bufnr}
158 )
159 end
160 }
161 }
162 )
163 end,
164 dependencies = {"nvim-lua/plenary.nvim"}
165 },
166 {"mfussenegger/nvim-dap", lazy = true, ft = {"c", "rust"}},
167 {
168 "saecki/crates.nvim",
169 tag = "v0.4.0",
170 dependencies = {"nvim-lua/plenary.nvim"},
171 config = function()
172 require("crates").setup()
173 end,
174 ft = {"rust"}
175 },
176 -- RISC-V Assembly syntax highlighting
177 {"kylelaker/riscv.vim", ft = "riscv"},
178 -- Hare Stuff
179
180 -- Haredoc
181 {url = "https://git.sr.ht/~torresjrjr/vim-haredoc", ft = {"hare"}, branch = "dev"},
182 -- Hare.vim
183 {url = "https://git.sr.ht/~sircmpwn/hare.vim", ft = {"hare"}},
184 -- TCL
185 {"lewis6991/tree-sitter-tcl", build = "make"},
186 -- LF
187 {"ptzz/lf.vim", cmd = {"Lf"}, dependencies = {"voldikss/vim-floaterm"}},
188 -- Copilot
189 -- use {"github/copilot.vim", lazy = true, cmd = {"Copilot"}}
190 -- Mason
191 {
192 "williamboman/mason.nvim",
193 init = function()
194 vim.cmd([[":MasonUpdate"]])
195 end,
196 dependencies = {
197 "williamboman/mason-lspconfig.nvim",
198 "mfussenegger/nvim-dap",
199 "jose-elias-alvarez/null-ls.nvim"
200 },
201 config = function()
202 require("mason").setup()
203 end
204 }
205 },
206 nil
207)