WIP: Switch to NixOS #5

Draft
FunctionalHacker wants to merge 1349 commits from nix into main
36 changed files with 554 additions and 584 deletions
Showing only changes of commit 0ced314c90 - Show all commits

View file

@ -1,4 +1,18 @@
-- Install lazy if it's not yet installed
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable", -- latest stable release
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
require("settings") require("settings")
require("neovide") require("neovide")
require("highlight_yank") require("highlight_yank")
require("plugins.lazy") require("lazy").setup("plugins")

View file

@ -11,7 +11,6 @@
"cmp-spell": { "branch": "master", "commit": "32a0867efa59b43edbb2db67b0871cfad90c9b66" }, "cmp-spell": { "branch": "master", "commit": "32a0867efa59b43edbb2db67b0871cfad90c9b66" },
"cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" }, "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
"copilot-cmp": { "branch": "master", "commit": "72fbaa03695779f8349be3ac54fa8bd77eed3ee3" }, "copilot-cmp": { "branch": "master", "commit": "72fbaa03695779f8349be3ac54fa8bd77eed3ee3" },
"copilot.lua": { "branch": "master", "commit": "73047082d72fcfdde1f73b7f17ad495cffcbafaa" },
"dashboard-nvim": { "branch": "master", "commit": "63df28409d940f9cac0a925df09d3dc369db9841" }, "dashboard-nvim": { "branch": "master", "commit": "63df28409d940f9cac0a925df09d3dc369db9841" },
"emmylua-nvim": { "branch": "master", "commit": "50b2eead8af6499fbba708553148ee8156d6612e" }, "emmylua-nvim": { "branch": "master", "commit": "50b2eead8af6499fbba708553148ee8156d6612e" },
"firenvim": { "branch": "master", "commit": "138424db463e6c0e862a05166a4ccc781cd7c19d" }, "firenvim": { "branch": "master", "commit": "138424db463e6c0e862a05166a4ccc781cd7c19d" },
@ -22,7 +21,7 @@
"lazy.nvim": { "branch": "main", "commit": "96584866b9c5e998cbae300594d0ccfd0c464627" }, "lazy.nvim": { "branch": "main", "commit": "96584866b9c5e998cbae300594d0ccfd0c464627" },
"lualine.nvim": { "branch": "master", "commit": "2248ef254d0a1488a72041cfb45ca9caada6d994" }, "lualine.nvim": { "branch": "master", "commit": "2248ef254d0a1488a72041cfb45ca9caada6d994" },
"markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" }, "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "faeb361507aa1ef1b0e5645781e2aa0d36a4aa84" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "ab640b38ca9fa50d25d2d249b6606b9456b628d5" },
"mason-tool-installer.nvim": { "branch": "main", "commit": "e4f34741daa9cf95de68a603d3e7a6844a69fdf0" }, "mason-tool-installer.nvim": { "branch": "main", "commit": "e4f34741daa9cf95de68a603d3e7a6844a69fdf0" },
"mason.nvim": { "branch": "main", "commit": "41e75af1f578e55ba050c863587cffde3556ffa6" }, "mason.nvim": { "branch": "main", "commit": "41e75af1f578e55ba050c863587cffde3556ffa6" },
"neoformat": { "branch": "master", "commit": "e5fe7e8f7c3dd071b90f19af0e8c7cfa56cdedc7" }, "neoformat": { "branch": "master", "commit": "e5fe7e8f7c3dd071b90f19af0e8c7cfa56cdedc7" },
@ -32,13 +31,13 @@
"nvim-autopairs": { "branch": "master", "commit": "0f04d78619cce9a5af4f355968040f7d675854a1" }, "nvim-autopairs": { "branch": "master", "commit": "0f04d78619cce9a5af4f355968040f7d675854a1" },
"nvim-cmp": { "branch": "main", "commit": "0b751f6beef40fd47375eaf53d3057e0bfa317e4" }, "nvim-cmp": { "branch": "main", "commit": "0b751f6beef40fd47375eaf53d3057e0bfa317e4" },
"nvim-colorizer.lua": { "branch": "master", "commit": "36c610a9717cc9ec426a07c8e6bf3b3abcb139d6" }, "nvim-colorizer.lua": { "branch": "master", "commit": "36c610a9717cc9ec426a07c8e6bf3b3abcb139d6" },
"nvim-dap": { "branch": "master", "commit": "9d81c11fd185a131f81841e64941859305f6c42d" }, "nvim-dap": { "branch": "master", "commit": "e154fdb6d70b3765d71f296e718b29d8b7026a63" },
"nvim-jdtls": { "branch": "master", "commit": "503a399e0d0b5d432068ab5ae24b9848891b0d53" }, "nvim-jdtls": { "branch": "master", "commit": "503a399e0d0b5d432068ab5ae24b9848891b0d53" },
"nvim-lspconfig": { "branch": "master", "commit": "29939f6f07bc0f3b9fc563fbfbee06ac88c8c439" }, "nvim-lspconfig": { "branch": "master", "commit": "48347089666d5b77d054088aa72e4e0b58026e6e" },
"nvim-navic": { "branch": "master", "commit": "0ffa7ffe6588f3417e680439872f5049e38a24db" }, "nvim-navic": { "branch": "master", "commit": "0ffa7ffe6588f3417e680439872f5049e38a24db" },
"nvim-notify": { "branch": "master", "commit": "e4a2022f4fec2d5ebc79afa612f96d8b11c627b3" }, "nvim-notify": { "branch": "master", "commit": "e4a2022f4fec2d5ebc79afa612f96d8b11c627b3" },
"nvim-tree.lua": { "branch": "master", "commit": "80cfeadf179d5cba76f0f502c71dbcff1b515cd8" }, "nvim-tree.lua": { "branch": "master", "commit": "80cfeadf179d5cba76f0f502c71dbcff1b515cd8" },
"nvim-treesitter": { "branch": "master", "commit": "73287b794d428843f20f9ae004bef2ce67ab3dbc" }, "nvim-treesitter": { "branch": "master", "commit": "557561fbc17269cdd4e9e88ef0ca1a9ff0bbf7e6" },
"nvim-ts-context-commentstring": { "branch": "main", "commit": "6c30f3c8915d7b31c3decdfe6c7672432da1809d" }, "nvim-ts-context-commentstring": { "branch": "main", "commit": "6c30f3c8915d7b31c3decdfe6c7672432da1809d" },
"nvim-web-devicons": { "branch": "master", "commit": "3523d6e6d40ab11fd66c1b2732b3d6b60affa951" }, "nvim-web-devicons": { "branch": "master", "commit": "3523d6e6d40ab11fd66c1b2732b3d6b60affa951" },
"password-store": { "branch": "master", "commit": "28cec11f1dbe6c4273d30370af45b69c9f408386" }, "password-store": { "branch": "master", "commit": "28cec11f1dbe6c4273d30370af45b69c9f408386" },

View file

@ -1,51 +1,9 @@
-- This module contains lsp related
-- reusable functions
local m = {} local m = {}
function m.setup() -- Map LSP specific keybinds.
require("mason").setup() -- This makes them only available when LSP is running
local mason_lsp = require("mason-lspconfig")
mason_lsp.setup()
local capabilities = m.get_capabilities()
mason_lsp.setup_handlers({
-- Default handler
function(server_name)
require("lspconfig")[server_name].setup({
on_attach = m.on_attach,
capabilities = capabilities,
})
end,
-- Override lua_ls settings
["lua_ls"] = function()
require("lspconfig").lua_ls.setup({
on_attach = m.on_attach,
capabilities = capabilities,
settings = {
Lua = {
runtime = {
-- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim)
version = "LuaJIT",
},
diagnostics = {
-- Get the language server to recognize the `vim` global
globals = { "vim" },
},
workspace = {
-- Make the server aware of Neovim runtime files
library = vim.api.nvim_get_runtime_file("", true),
},
-- Do not send telemetry data containing a randomized but unique identifier
telemetry = { enable = false },
},
},
})
end,
-- Don't set up jdtls, it is set up by nvim-jdtls
["jdtls"] = function() end,
})
end
function m.map_keys() function m.map_keys()
local telescope_builtin = require("telescope.builtin") local telescope_builtin = require("telescope.builtin")
require("which-key").register({ require("which-key").register({
@ -83,6 +41,7 @@ function m.map_keys()
}) })
end end
function m.on_attach(client, bufnr) function m.on_attach(client, bufnr)
-- Attach navic if document symbols are available -- Attach navic if document symbols are available
if client.server_capabilities.documentSymbolProvider then if client.server_capabilities.documentSymbolProvider then

View file

@ -0,0 +1,13 @@
-- AsciiDoc plugins are grouped together here
return {
-- Vim ♥️ Asciidoctor
{
"habamax/vim-asciidoctor",
ft = { "asciidoctor", "asciidoc" },
},
-- AsciiDoc preview
{
"tigion/nvim-asciidoc-preview",
ft = { "asciidoctor", "asciidoc" },
},
}

View file

@ -0,0 +1,2 @@
-- Automatic brackets
return { "windwp/nvim-autopairs" }

View file

@ -0,0 +1,7 @@
return {
"akinsho/bufferline.nvim",
version = "*",
dependencies = { "kyazdani42/nvim-web-devicons" },
config = true,
--opts = { options = { themeable = true } },
}

View file

@ -0,0 +1,2 @@
-- Caddyfile syntax support
return { "isobit/vim-caddyfile", ft = "caddyfile" }

View file

@ -1,101 +1,107 @@
return function() -- Autoompletion
local cmp = require("cmp") return {
local luasnip = require("luasnip") "hrsh7th/nvim-cmp",
dependencies = {
"hrsh7th/cmp-buffer", -- Buffer source
{ "petertriho/cmp-git", dependencies = { "nvim-lua/plenary.nvim" } }, -- Git source
"hrsh7th/cmp-nvim-lsp", -- LSP source
"hrsh7th/cmp-nvim-lua", -- Neovim Lua API documentation source
"hrsh7th/cmp-path", -- Path source
"hrsh7th/cmp-cmdline", -- cmdline source
"saadparwaiz1/cmp_luasnip", -- Snippets source
"f3fora/cmp-spell", -- Spell check source
"zbirenbaum/copilot-cmp", -- Copilot source
},
config = function()
local cmp = require("cmp")
local luasnip = require("luasnip")
if not cmp then if not cmp then
return return
end end
-- Setup git completion source -- Setup git completion source
require("cmp_git").setup() require("cmp_git").setup()
-- --
-- Setup copilot source -- Setup copilot source
require("copilot_cmp").setup({ fix_pairs = true }) require("copilot_cmp").setup({ fix_pairs = true })
-- Set completeopt to have a better completion experience -- Set completeopt to have a better completion experience
vim.o.completeopt = "menuone,noselect" vim.o.completeopt = "menuone,noselect"
cmp.setup({ cmp.setup({
snippet = { snippet = {
expand = function(args) expand = function(args)
luasnip.lsp_expand(args.body) luasnip.lsp_expand(args.body)
end, end,
},
mapping = {
["<C-p>"] = cmp.mapping.select_prev_item(),
["<C-n>"] = cmp.mapping.select_next_item(),
["<C-d>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete(),
["<C-e>"] = cmp.mapping.close(),
["<CR>"] = cmp.mapping.confirm({
behavior = cmp.ConfirmBehavior.Replace,
select = true,
}),
["<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" }),
},
sources = {
{ name = "luasnip" },
{ name = "copilot" },
{ name = "nvim_lsp" },
{ name = "nvim_lua" },
{ name = "git" },
{ name = "buffer" },
{ name = "spell" },
{ name = "path" },
},
-- window = {
-- completion = {
-- winhighlight = "Normal:Normal,FloatBorder:FloatBorder,CursorLine:Visual,Search:None",
-- },
-- documentation = {
-- winhighlight = "Normal:Normal,FloatBorder:FloatBorder,CursorLine:Visual,Search:None",
-- },
-- },
})
-- Enable autopairs when enter is processed
-- on completion
local cmp_autopairs = require("nvim-autopairs.completion.cmp")
cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done())
-- `/` cmdline setup.
cmp.setup.cmdline("/", {
mapping = cmp.mapping.preset.cmdline(),
sources = {
{ name = "buffer" },
},
})
-- `:` cmdline setup.
cmp.setup.cmdline(":", {
mapping = cmp.mapping.preset.cmdline(),
sources = cmp.config.sources({
{ name = "path" },
}, {
{
name = "cmdline",
option = {
ignore_cmds = { "Man", "!" },
},
}, },
}), mapping = {
}) ["<C-p>"] = cmp.mapping.select_prev_item(),
end ["<C-n>"] = cmp.mapping.select_next_item(),
["<C-d>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete(),
["<C-e>"] = cmp.mapping.close(),
["<CR>"] = cmp.mapping.confirm({
behavior = cmp.ConfirmBehavior.Replace,
select = true,
}),
["<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" }),
},
sources = {
{ name = "luasnip" },
{ name = "copilot" },
{ name = "nvim_lsp" },
{ name = "nvim_lua" },
{ name = "git" },
{ name = "buffer" },
{ name = "spell" },
{ name = "path" },
},
})
-- Enable autopairs when enter is processed
-- on completion
local cmp_autopairs = require("nvim-autopairs.completion.cmp")
cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done())
-- `/` cmdline setup.
cmp.setup.cmdline("/", {
mapping = cmp.mapping.preset.cmdline(),
sources = {
{ name = "buffer" },
},
})
-- `:` cmdline setup.
cmp.setup.cmdline(":", {
mapping = cmp.mapping.preset.cmdline(),
sources = cmp.config.sources({
{ name = "path" },
}, {
{
name = "cmdline",
option = {
ignore_cmds = { "Man", "!" },
},
},
}),
})
end,
}

View file

@ -0,0 +1,5 @@
-- treesitter plugin for commentstring
return {
"JoosepAlviste/nvim-ts-context-commentstring",
dependencies = { "tpope/vim-commentary" },
}

View file

@ -0,0 +1,9 @@
-- GitHub Copilot
return {
"zbirenbaum/copilot.lua",
config = true,
opts = {
suggestion = { enabled = false },
panel = { enabled = false },
},
}

View file

@ -1,31 +1,34 @@
return function() return {
local dap = require("dap") "mfussenegger/nvim-dap",
config = function()
local dap = require("dap")
dap.adapters.bashdb = { dap.adapters.bashdb = {
type = "executable", type = "executable",
command = vim.fn.stdpath("data") .. "/mason/packages/bash-debug-adapter/bash-debug-adapter", command = vim.fn.stdpath("data") .. "/mason/packages/bash-debug-adapter/bash-debug-adapter",
name = "bashdb", name = "bashdb",
} }
dap.configurations.sh = { dap.configurations.sh = {
{ {
type = "bashdb", type = "bashdb",
request = "launch", request = "launch",
name = "Launch file", name = "Launch file",
showDebugOutput = true, showDebugOutput = true,
pathBashdb = vim.fn.stdpath("data") .. "/mason/packages/bash-debug-adapter/extension/bashdb_dir/bashdb", pathBashdb = vim.fn.stdpath("data") .. "/mason/packages/bash-debug-adapter/extension/bashdb_dir/bashdb",
pathBashdbLib = vim.fn.stdpath("data") .. "/mason/packages/bash-debug-adapter/extension/bashdb_dir", pathBashdbLib = vim.fn.stdpath("data") .. "/mason/packages/bash-debug-adapter/extension/bashdb_dir",
trace = true, trace = true,
file = "${file}", file = "${file}",
program = "${file}", program = "${file}",
cwd = "${workspaceFolder}", cwd = "${workspaceFolder}",
pathCat = "cat", pathCat = "cat",
pathBash = "/bin/bash", pathBash = "/bin/bash",
pathMkfifo = "mkfifo", pathMkfifo = "mkfifo",
pathPkill = "pkill", pathPkill = "pkill",
args = {}, args = {},
env = {}, env = {},
terminalKind = "integrated", terminalKind = "integrated",
}, },
} }
end end,
}

View file

@ -1,5 +1,9 @@
return function() -- Startup dashboard
require("dashboard").setup({ return {
"glepnir/dashboard-nvim",
event = "VimEnter",
dependencies = { { "kyazdani42/nvim-web-devicons" } },
opts = {
theme = "hyper", theme = "hyper",
config = { config = {
week_header = { week_header = {
@ -18,5 +22,5 @@ return function()
{ icon = "", desc = "Quit", action = "q", key = "q" }, { icon = "", desc = "Quit", action = "q", key = "q" },
}, },
}, },
}) },
end }

View file

@ -0,0 +1,2 @@
-- vim api documentation for lua lsp
return { "ii14/emmylua-nvim", ft = { "lua" } }

View file

@ -0,0 +1,16 @@
-- Neovim inside Firefox
return {
"glacambre/firenvim",
build = function()
vim.fn["firenvim#install"](0)
end,
config = function()
vim.g.firenvim_config = {
localSettings = {
[".*"] = {
takeOver = "never",
},
},
}
end,
}

View file

@ -0,0 +1,2 @@
-- Git commands
return { "tpope/vim-fugitive" }

View file

@ -0,0 +1,15 @@
-- Git status in signcolumn
return {
"lewis6991/gitsigns.nvim",
config = function()
local gitsigns = require("gitsigns")
gitsigns.setup()
local wk = require("which-key")
wk.register({
["["] = { h = { gitsigns.prev_hunk, "Previous hunk" } },
["]"] = { h = { gitsigns.next_hunk, "Next hunk" } },
}, { prefix = "<leader>" })
end,
}

View file

@ -0,0 +1,2 @@
-- Edit GPG encrypted files transparently
return { "jamessan/vim-gnupg", ft = { "gpg" } }

View file

@ -1,19 +1,23 @@
return function() -- Indent characters
require("ibl").setup({ return {
exclude = { "lukas-reineke/indent-blankline.nvim",
filetypes = { config = function()
"", require("ibl").setup({
"checkhealth", exclude = {
"dashboard", filetypes = {
"git", "",
"gitcommit", "checkhealth",
"TelescopePrompt", "dashboard",
"TelescopeResults", "git",
"help", "gitcommit",
"lazy", "TelescopePrompt",
"lspinfo", "TelescopeResults",
"man", "help",
"lazy",
"lspinfo",
"man",
},
}, },
}, })
}) end,
end }

View file

@ -1,5 +1,7 @@
return function() -- Colorscheme
require("kanagawa").setup({ return {
"rebelot/kanagawa.nvim",
opts = {
compile = true, compile = true,
dimInactive = true, dimInactive = true,
colors = { colors = {
@ -42,7 +44,8 @@ return function()
PmenuThumb = { bg = theme.ui.bg_p2 }, PmenuThumb = { bg = theme.ui.bg_p2 },
} }
end, end,
}) },
config = function()
vim.cmd("colorscheme kanagawa") vim.cmd("colorscheme kanagawa")
end end,
}

View file

@ -1,246 +0,0 @@
-- Install lazy if it's not yet installed
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable", -- latest stable release
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
-- Configure lazy
local plugins = {
-- Colorscheme
{
"rebelot/kanagawa.nvim",
config = require("plugins.colorscheme"),
},
-- Replace much of neovim's default UI
-- with a modern replacement
{
"folke/noice.nvim",
event = "VeryLazy",
dependencies = { "MunifTanjim/nui.nvim", "rcarriga/nvim-notify" },
opts = require("plugins.noice"),
},
-- Statusline
{
"nvim-lualine/lualine.nvim",
dependencies = { "kyazdani42/nvim-web-devicons" },
config = require("plugins.lualine"),
},
-- bufferline
{
"akinsho/bufferline.nvim",
version = "v3.*",
dependencies = { "kyazdani42/nvim-web-devicons" },
config = true,
opts = { options = { themeable = true } },
},
-- Git status in signcolumn
{ "lewis6991/gitsigns.nvim", config = true },
-- Git commands
"tpope/vim-fugitive",
-- Indent characters
{ "lukas-reineke/indent-blankline.nvim", config = require("plugins.indent-blankline") },
-- Tree explorer
{
"kyazdani42/nvim-tree.lua",
dependencies = { "kyazdani42/nvim-web-devicons" },
config = require("plugins.nvim-tree"),
},
-- Telescope
{
"nvim-telescope/telescope.nvim",
config = require("plugins.telescope"),
dependencies = {
-- Internal dependency for telescope
"nvim-lua/plenary.nvim",
-- Use fzf for fuzzy finder
{
"nvim-telescope/telescope-fzf-native.nvim",
build = "make",
},
-- Replace vim built in select with telescope
"nvim-telescope/telescope-ui-select.nvim",
-- cd plugin for telescope
"zane-/cder.nvim",
},
},
-- Do stuff as sudo
"lambdalisue/suda.vim",
-- Display possible keybinds
{ "folke/which-key.nvim", config = require("plugins.which-key") },
-- Package manager for LSP servers, DAP adapters etc.
{
"williamboman/mason.nvim",
config = require("plugins.lsp").setup,
dependencies = {
"neovim/nvim-lspconfig",
"williamboman/mason-lspconfig.nvim",
"WhoIsSethDaniel/mason-tool-installer.nvim",
},
},
-- Additional LSP features for Java
"mfussenegger/nvim-jdtls",
-- Show code LSP context in winbar
{ "SmiteshP/nvim-navic", config = true, opts = { mouse = true } },
-- DAP plugin
{ "mfussenegger/nvim-dap", config = require("plugins.dap") },
-- Snippets plugin
{
"L3MON4D3/LuaSnip",
dependencies = { "rafamadriz/friendly-snippets" }, -- Snippets collection
config = require("plugins.luasnip"),
},
-- vim api documentation for lua lsp
{ "ii14/emmylua-nvim", ft = { "lua" } },
-- Completion
{
"hrsh7th/nvim-cmp",
dependencies = {
"hrsh7th/cmp-buffer", -- Buffer source
{ "petertriho/cmp-git", dependencies = { "nvim-lua/plenary.nvim" } }, -- Git source
"hrsh7th/cmp-nvim-lsp", -- LSP source
"hrsh7th/cmp-nvim-lua", -- Neovim Lua API documentation source
"hrsh7th/cmp-path", -- Path source
"hrsh7th/cmp-cmdline", -- cmdline source
"saadparwaiz1/cmp_luasnip", -- Snippets source
"f3fora/cmp-spell", -- Spell check source
"zbirenbaum/copilot-cmp", -- Copilot source
},
config = require("plugins.cmp"),
},
-- Automatic brackets
{
"windwp/nvim-autopairs",
config = true,
},
-- treesitter
{
"nvim-treesitter/nvim-treesitter",
build = function()
require("nvim-treesitter.install").update({ with_sync = true })
end,
config = require("plugins.treesitter"),
},
-- treesitter plugin for commentstring
"JoosepAlviste/nvim-ts-context-commentstring",
-- mappings for commenting in code
"tpope/vim-commentary",
-- we all know this one
"tpope/vim-surround",
-- Formatter plugin
"sbdchd/neoformat",
-- Make editing passwords safer
{
"https://git.zx2c4.com/password-store",
config = function(plugin)
vim.opt.rtp:append(plugin.dir .. "contrib/vim/redact_pass.vim")
end,
},
-- Neovim inside Firefox
{
"glacambre/firenvim",
build = function()
vim.fn["firenvim#install"](0)
end,
config = function()
vim.g.firenvim_config = {
localSettings = {
[".*"] = {
takeOver = "never",
},
},
}
end,
},
-- Vim ♥️ Asciidoctor
{ "habamax/vim-asciidoctor", ft = { "asciidoctor", "asciidoc" } },
-- Asciidoc preview
{ "tigion/nvim-asciidoc-preview", ft = { "asciidoctor", "asciidoc" } },
-- Markdown preview
{
"iamcco/markdown-preview.nvim",
build = "cd app && yarn install",
config = function()
vim.g.mkdp_filetypes = { "markdown" }
end,
ft = { "markdown" },
},
-- Edit GPG encrypted files transparently
{ "jamessan/vim-gnupg", ft = { "gpg" } },
-- High performance color highlighter
{
"norcalli/nvim-colorizer.lua",
config = true,
},
-- Caddyfile syntax support
{ "isobit/vim-caddyfile", ft = "caddyfile" },
-- Startup dashboard
{
"glepnir/dashboard-nvim",
event = "VimEnter",
config = require("plugins.dashboard"),
dependencies = { { "kyazdani42/nvim-web-devicons" } },
},
-- Better folds
{
enabled = false,
"kevinhwang91/nvim-ufo",
dependencies = { "kevinhwang91/promise-async" },
config = require("plugins.ufo"),
},
-- GitHub Copilot
{
"zbirenbaum/copilot.lua",
config = function()
require("copilot").setup({
suggestion = { enabled = false },
panel = { enabled = false },
})
end,
},
}
require("lazy").setup(plugins, { lockfile = "~/git/dotfiles/home/.config/nvim/lazy-lock.json" })

View file

@ -1,7 +1,10 @@
return function() -- Statusline
require("lualine").setup({ return {
"nvim-lualine/lualine.nvim",
dependencies = { "kyazdani42/nvim-web-devicons" },
opts = {
sections = { sections = {
lualine_c = { "navic" }, lualine_c = { "navic" },
}, },
}) },
end }

View file

@ -1,4 +1,9 @@
return function() -- Snippets plugin
-- load friendly-snippets to luasnip return {
require("luasnip/loaders/from_vscode").lazy_load() "L3MON4D3/LuaSnip",
end dependencies = { "rafamadriz/friendly-snippets" }, -- Snippets collection
config = function()
-- load friendly-snippets to luasnip
require("luasnip/loaders/from_vscode").lazy_load()
end,
}

View file

@ -0,0 +1,9 @@
-- Markdown preview
return {
"iamcco/markdown-preview.nvim",
build = "cd app && yarn install",
config = function()
vim.g.mkdp_filetypes = { "markdown" }
end,
ft = { "markdown" },
}

View file

@ -0,0 +1,57 @@
-- Package manager for LSP servers, DAP adapters etc.
return {
"williamboman/mason.nvim",
dependencies = {
"neovim/nvim-lspconfig",
"williamboman/mason-lspconfig.nvim",
"WhoIsSethDaniel/mason-tool-installer.nvim",
"mfussenegger/nvim-jdtls",
},
config = function()
require("mason").setup()
local mason_lsp = require("mason-lspconfig")
local lsp_utils = require('lsp_utils')
local capabilities = lsp_utils.get_capabilities()
mason_lsp.setup()
mason_lsp.setup_handlers({
-- Default handler
function(server_name)
require("lspconfig")[server_name].setup({
on_attach = lsp_utils.on_attach,
capabilities = capabilities,
})
end,
-- Override lua_ls settings
["lua_ls"] = function()
require("lspconfig").lua_ls.setup({
on_attach = lsp_utils.on_attach,
capabilities = capabilities,
settings = {
Lua = {
runtime = {
-- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim)
version = "LuaJIT",
},
diagnostics = {
-- Get the language server to recognize the `vim` global
globals = { "vim" },
},
workspace = {
-- Make the server aware of Neovim runtime files
library = vim.api.nvim_get_runtime_file("", true),
},
-- Do not send telemetry data containing a randomized but unique identifier
telemetry = { enable = false },
},
},
})
end,
-- Don't set up jdtls, it is set up by nvim-jdtls
["jdtls"] = function() end,
})
end,
}

View file

@ -0,0 +1,2 @@
-- Show code LSP context in winbar
return { "SmiteshP/nvim-navic" }

View file

@ -0,0 +1,10 @@
-- Formatter plugin
return {
"sbdchd/neoformat",
config = function()
local wk = require("which-key")
wk.register({
f = { "<cmd>Neoformat<CR>", "Format with Neoformat" },
}, { prefix = "<leader>" })
end,
}

View file

@ -1,18 +1,25 @@
-- Replace much of neovim's default UI
-- with a modern replacement
return { return {
lsp = { "folke/noice.nvim",
-- override markdown rendering so that **cmp** and other plugins use **Treesitter** event = "VeryLazy",
override = { dependencies = { "MunifTanjim/nui.nvim", "rcarriga/nvim-notify" },
["vim.lsp.util.convert_input_to_markdown_lines"] = true, opts = {
["vim.lsp.util.stylize_markdown"] = true, lsp = {
["cmp.entry.get_documentation"] = true, -- override markdown rendering so that **cmp** and other plugins use **Treesitter**
override = {
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
["vim.lsp.util.stylize_markdown"] = true,
["cmp.entry.get_documentation"] = true,
},
},
-- you can enable a preset for easier configuration
presets = {
bottom_search = true, -- use a classic bottom cmdline for search
command_palette = true, -- position the cmdline and popupmenu together
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
}, },
}, },
-- you can enable a preset for easier configuration
presets = {
bottom_search = true, -- use a classic bottom cmdline for search
command_palette = true, -- position the cmdline and popupmenu together
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

@ -0,0 +1,4 @@
-- High performance color highlighter
return {
"norcalli/nvim-colorizer.lua",
}

View file

@ -1,13 +1,20 @@
return function() -- Tree explorer
require("nvim-tree").setup({ -- BEGIN_DEFAULT_OPTS return {
diagnostics = { "kyazdani42/nvim-tree.lua",
enable = true, dependencies = { "kyazdani42/nvim-web-devicons" },
show_on_dirs = true, opts = {
}, diagnostics = {
renderer = { enable = true,
highlight_git = true, show_on_dirs = true,
}, },
}) renderer = {
-- Open/close with alt-o highlight_git = true,
vim.keymap.set("n", "<M-o>", vim.cmd.NvimTreeToggle) },
end },
config = function(spec)
require("nvim-tree").setup(spec.opts)
-- Open/close with alt-o
vim.keymap.set("n", "<M-o>", vim.cmd.NvimTreeToggle)
end,
}

View file

@ -0,0 +1,7 @@
-- Make editing passwords safer
return {
"https://git.zx2c4.com/password-store",
config = function(plugin)
vim.opt.rtp:append(plugin.dir .. "contrib/vim/redact_pass.vim")
end,
}

View file

@ -0,0 +1,2 @@
-- Do stuff as sudo
return { "lambdalisue/suda.vim" }

View file

@ -1,8 +1,22 @@
return function() return {
local telescope = require("telescope") "nvim-telescope/telescope.nvim",
local builtin = require("telescope.builtin") dependencies = {
-- Internal dependency for telescope
"nvim-lua/plenary.nvim",
telescope.setup({ -- Use fzf for fuzzy finder
{
"nvim-telescope/telescope-fzf-native.nvim",
build = "make",
},
-- Replace vim built in select with telescope
"nvim-telescope/telescope-ui-select.nvim",
-- cd plugin for telescope
"zane-/cder.nvim",
},
opts = {
pickers = { pickers = {
find_files = { find_command = { "fd", "-Ht", "f" } }, find_files = { find_command = { "fd", "-Ht", "f" } },
lsp_references = { show_line = false }, lsp_references = { show_line = false },
@ -30,14 +44,20 @@ return function()
dir_command = { "fd", "-Ht", "d", ".", os.getenv("HOME") }, dir_command = { "fd", "-Ht", "d", ".", os.getenv("HOME") },
}, },
}, },
}) },
config = function(spec)
local telescope = require("telescope")
local builtin = require("telescope.builtin")
telescope.load_extension("fzf") telescope.setup(spec.opts)
telescope.load_extension("ui-select")
telescope.load_extension("cder")
-- Keybinds telescope.load_extension("fzf")
vim.keymap.set("n", "<C-s>", vim.cmd.Telescope) telescope.load_extension("ui-select")
vim.keymap.set("n", "<C-f>", builtin.find_files) telescope.load_extension("cder")
vim.keymap.set("n", "<C-g>", builtin.live_grep)
end -- Keybinds
vim.keymap.set("n", "<C-s>", vim.cmd.Telescope)
vim.keymap.set("n", "<C-f>", builtin.find_files)
vim.keymap.set("n", "<C-g>", builtin.live_grep)
end,
}

View file

@ -1,46 +1,52 @@
return function() return {
require("nvim-treesitter.configs").setup({ "nvim-treesitter/nvim-treesitter",
ensure_installed = { build = function()
"bash", require("nvim-treesitter.install").update({ with_sync = true })
"css", end,
"dockerfile", config = function()
"git_config", require("nvim-treesitter.configs").setup({
"git_rebase", ensure_installed = {
"gitattributes", "bash",
"gitcommit", "css",
"gitignore", "dockerfile",
"html", "git_config",
"http", "git_rebase",
"java", "gitattributes",
"javascript", "gitcommit",
"json", "gitignore",
"json5", "html",
"latex", "http",
"lua", "java",
"make", "javascript",
"markdown", "json",
"markdown_inline", "json5",
"php", "latex",
"python", "lua",
"rasi", "make",
"regex", "markdown",
"rst", "markdown_inline",
"scss", "php",
"toml", "python",
"tsx", "rasi",
"typescript", "regex",
"vim", "rst",
"yaml", "scss",
}, "toml",
highlight = { enable = true }, "tsx",
indent = { enable = true }, "typescript",
incremental_selection = { enable = true }, "vim",
context_commentstring = { enable = true }, "yaml",
sync_install = true, },
ignore_install = {}, highlight = { enable = true },
auto_install = true, indent = { enable = true },
}) incremental_selection = { enable = true },
context_commentstring = { enable = true },
sync_install = true,
ignore_install = {},
auto_install = true,
})
-- vim.wo.foldmethod = 'expr' -- vim.wo.foldmethod = 'expr'
-- im.wo.foldexpr = 'nvim_treesitter#foldexpr()' -- im.wo.foldexpr = 'nvim_treesitter#foldexpr()'
end end,
}

View file

@ -1,20 +1,28 @@
return function() -- Better folds
local keymap = vim.keymap -- Disabled for now because it causes weird artifacts
local o = vim.o return {
local ufo = require("ufo") enabled = false,
ufo.setup({ "kevinhwang91/nvim-ufo",
dependencies = { "kevinhwang91/promise-async" },
opts = {
close_fold_kinds = { close_fold_kinds = {
"imports", "imports",
}, },
}) },
config = function(spec)
local ufo = require("ufo")
ufo.setup(spec.opts)
-- Using ufo, need to remap `zR` and `zM`. If Neovim is 0.6.1, remap yourself -- Using ufo, need to remap `zR` and `zM`. If Neovim is 0.6.1, remap yourself
keymap.set("n", "zR", ufo.openAllFolds) local keymap = vim.keymap
keymap.set("n", "zM", ufo.closeAllFolds) keymap.set("n", "zR", ufo.openAllFolds)
keymap.set("n", "zM", ufo.closeAllFolds)
-- Fold settings -- Fold settings
o.foldcolumn = "1" local o = vim.o
o.foldlevel = 99 o.foldcolumn = "1"
o.foldlevelstart = 99 o.foldlevel = 99
o.foldenable = true o.foldlevelstart = 99
end o.foldenable = true
end,
}

View file

@ -0,0 +1,2 @@
-- we all know this one
return { "tpope/vim-surround" }

View file

@ -1,29 +1,29 @@
return function() -- Display possible keybinds
local wk = require("which-key") -- Plugin specific keybinds are set up in plugin configuration file
local gitsigns = require("gitsigns") return {
wk.setup({}) "folke/which-key.nvim",
config = function()
local wk = require("which-key")
wk.setup({})
wk.register({ wk.register({
f = { "<cmd>Neoformat<CR>", "Format with Neoformat" }, h = { "<cmd>nohlsearch<CR>", "Turn off search highlight" },
h = { "<cmd>nohlsearch<CR>", "Turn off search highlight" }, }, { prefix = "<leader>" })
}, { prefix = "<leader>" })
wk.register({ wk.register({
["<C-n>"] = { "<cmd>bnext<CR>", "Next buffer" }, ["<C-n>"] = { "<cmd>bnext<CR>", "Next buffer" },
["<C-b>"] = { "<cmd>bprevious<CR>", "Previous buffer" }, ["<C-b>"] = { "<cmd>bprevious<CR>", "Previous buffer" },
["["] = { h = { gitsigns.prev_hunk, "Previous hunk" } }, })
["]"] = { h = { gitsigns.next_hunk, "Next hunk" } },
})
-- Open cder -- Open cder
wk.register({ cd = { wk.register({ cd = {
function() function()
vim.cmd("Telescope cder") vim.cmd("Telescope cder")
end, end,
"Change directories", "Change directories",
} }) } })
-- Exit terminal insert mode with esc -- Exit terminal insert mode with esc
vim.keymap.set("t", "<Esc>", "<C-\\><C-n>", {}) vim.keymap.set("t", "<Esc>", "<C-\\><C-n>", {})
end,
end }