aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorschererleander <leander@schererleander.de>2025-07-30 20:54:30 +0200
committerschererleander <leander@schererleander.de>2025-07-30 20:54:30 +0200
commit313d7ad739882693cf91555d93b19ef883ff549a (patch)
tree981365a14d7aa8e8c80b5b40780f8d0957e62657 /modules
parent9c942684325aa0ce7facb2fdfd978b659850642c (diff)
chore: cleanup
Diffstat (limited to 'modules')
-rw-r--r--modules/home-manager/init.lua95
-rw-r--r--modules/home-manager/neovim/default.nix (renamed from modules/home-manager/neovim.nix)8
-rw-r--r--modules/home-manager/neovim/init.lua212
3 files changed, 220 insertions, 95 deletions
diff --git a/modules/home-manager/init.lua b/modules/home-manager/init.lua
deleted file mode 100644
index ddd4a0d..0000000
--- a/modules/home-manager/init.lua
+++ /dev/null
@@ -1,95 +0,0 @@
-vim.o.number = true
-vim.o.relativenumber = true
-vim.o.signcolumn = "yes"
-vim.o.termguicolors = true
-vim.o.wrap = false
-vim.o.tabstop = 2
-vim.o.shiftwidth = 2
-vim.o.swapfile = false
-vim.g.mapleader = " "
-vim.o.winborder = "rounded"
-vim.o.clipboard = "unnamedplus"
-
-local map = vim.keymap.set
-map('n', '<leader>o', '<CMD>update<BAR>source %<CR>', { desc = 'Save & reload init.lua' })
-map('n', '<leader>w', '<CMD>write<CR>')
-map('n', '<leader>q', '<CMD>quit<CR>')
-
-map({ 'n', 'v', 'x' }, '<leader>y', '"+y', { desc = 'Yank to system clipboard' })
-map({ 'n', 'v', 'x' }, '<leader>d', '"+d', { desc = 'Delete to system clipboard' })
-
-vim.pack.add({
- { src = "https://github.com/ellisonleao/gruvbox.nvim" },
--- { src = "https://github.com/nyoom-engineering/oxocarbon.nvim" },
- { src = "https://github.com/echasnovski/mini.pick" },
- { src = "https://github.com/lewis6991/gitsigns.nvim" },
- { src = "https://github.com/nvim-treesitter/nvim-treesitter" },
- { src = "https://github.com/neovim/nvim-lspconfig" },
-})
-
-require("nvim-treesitter.configs").setup({
- ensure_installed = { "lua", "nix" },
- highlight = { enable = true },
-})
-
-vim.diagnostic.config({
- virtual_text = {
- source = "if_many",
- },
- underline = true,
- severity_sort = true,
-})
-
-vim.api.nvim_create_autocmd('LspAttach', {
- callback = function(ev)
- local client = vim.lsp.get_client_by_id(ev.data.client_id)
- if client:supports_method('textDocument/completion') then
- vim.lsp.completion.enable(true, client.id, ev.buf, { autotrigger = true })
- end
- end,
-})
-vim.o.completeopt = "menu,menuone,noselect"
-
-require("gitsigns").setup()
-
-require("lspconfig").nixd.setup({
- settings = {
- nixd = {
- formatting = {
- command = { "nixfmt" },
- },
- },
- },
-})
-
-require("lspconfig").lua_ls.setup({
- settings = {
- lua_ls = {
- formatting = {
- command = { "luaformatter" },
- },
- },
- },
-})
-
-vim.lsp.enable({ "lua_ls", "pyright" })
-vim.keymap.set('n', '<leader>lf', vim.lsp.buf.format)
-
-
-require("mini.pick").setup()
-
-vim.cmd("colorscheme gruvbox")
-
-local hl = vim.api.nvim_set_hl
-hl(0, 'Normal', { bg = 'none' })
-hl(0, 'NormalFloat', { bg = 'none' })
-hl(0, 'NormalNC', { bg = 'none' })
-hl(0, 'StatusLine', { bg = 'none' })
-hl(0, 'SignColumn', { bg = 'none' })
-
--- LSP diagnostics
-hl(0, "DiagnosticError", { bg = "none" })
-hl(0, "DiagnosticSignError", { bg = "none" })
-hl(0, "DiagnosticSignHint", { bg = "none" })
-hl(0, "DiagnosticSignInfo", { bg = "none" })
-hl(0, "DiagnosticSignWarn", { bg = "none" })
diff --git a/modules/home-manager/neovim.nix b/modules/home-manager/neovim/default.nix
index f1fe165..230d27e 100644
--- a/modules/home-manager/neovim.nix
+++ b/modules/home-manager/neovim/default.nix
@@ -16,12 +16,20 @@
'';
};
home.packages = with pkgs; [
+ ripgrep
+
+ # github pilot
+ nodejs
+
# language servers
lua-language-server
nixd
pyright
+ gopls
java-language-server
typescript-language-server
+ rust-analyzer
+ tailwindcss-language-server
# formatter
nixfmt-rfc-style
diff --git a/modules/home-manager/neovim/init.lua b/modules/home-manager/neovim/init.lua
new file mode 100644
index 0000000..dc4e4c6
--- /dev/null
+++ b/modules/home-manager/neovim/init.lua
@@ -0,0 +1,212 @@
+-- General settings
+vim.g.mapleader = " "
+vim.o.number = true
+vim.o.relativenumber = true
+vim.o.signcolumn = "yes"
+vim.o.termguicolors = true
+vim.o.wrap = false
+vim.o.tabstop = 2
+vim.o.shiftwidth = 2
+vim.o.updatetime = 250
+vim.o.timeoutlen = 300
+vim.o.swapfile = false
+vim.o.ignorecase = true
+vim.o.smartcase = true
+vim.o.winborder = "rounded"
+vim.o.clipboard = "unnamedplus"
+
+local map = vim.keymap.set
+map('n', '<leader>o', '<CMD>update<BAR>source %<CR>', { desc = 'Save & reload init.lua' })
+map('n', '<leader>w', '<CMD>write<CR>')
+map('n', '<leader>q', '<CMD>quit<CR>')
+
+vim.pack.add({
+ { src = "https://github.com/ellisonleao/gruvbox.nvim" },
+ { src = "https://github.com/echasnovski/mini.starter" },
+ { src = "https://github.com/lewis6991/gitsigns.nvim" },
+ { src = "https://github.com/windwp/nvim-autopairs" },
+ { src = "https://github.com/zbirenbaum/copilot.lua" },
+ { src = "https://github.com/nvim-telescope/telescope.nvim" },
+ { src = "https://github.com/j-hui/fidget.nvim" },
+ { src = "https://github.com/nvim-lua/plenary.nvim" },
+ { src = "https://github.com/nvim-treesitter/nvim-treesitter" },
+ { src = "https://github.com/neovim/nvim-lspconfig" },
+ { src = "https://github.com/hrsh7th/nvim-cmp" },
+ { src = "https://github.com/hrsh7th/cmp-nvim-lsp" },
+ { src = "https://github.com/hrsh7th/cmp-buffer" },
+ { src = "https://github.com/hrsh7th/cmp-path" },
+ { src = "https://github.com/hrsh7th/cmp-cmdline" },
+ { src = "https://github.com/L3MON4D3/LuaSnip" },
+ { src = "https://github.com/saadparwaiz1/cmp_luasnip" },
+ { src = "https://github.com/onsails/lspkind-nvim" }
+})
+
+require("nvim-treesitter.configs").setup({
+ ensure_installed = { "lua", "nix" },
+ highlight = { enable = true },
+})
+
+local builtin = require('telescope.builtin')
+vim.keymap.set('n', '<leader>ff', builtin.find_files, { desc = 'Telescope find files' })
+vim.keymap.set('n', '<leader>fg', builtin.live_grep, { desc = 'Telescope live grep' })
+vim.keymap.set('n', '<leader>fb', builtin.buffers, { desc = 'Telescope buffers' })
+vim.keymap.set('n', '<leader>fh', builtin.help_tags, { desc = 'Telescope help tags' })
+
+
+local cmp = require("cmp")
+cmp.setup({
+ snippet = {
+ expand = function(args)
+ require('luasnip').lsp_expand(args.body)
+ end,
+ },
+ mapping = cmp.mapping.preset.insert({
+ ['<C-b>'] = cmp.mapping.scroll_docs(-4),
+ ['<C-f>'] = cmp.mapping.scroll_docs(4),
+ ['<C-Space>'] = cmp.mapping.complete(),
+ ['<C-e>'] = cmp.mapping.abort(),
+ ['<CR>'] = cmp.mapping.confirm({ select = true }),
+ ['<Tab>'] = cmp.mapping(function(fallback)
+ local copilot = require('copilot.suggestion')
+ if copilot.is_visible() then
+ copilot.accept()
+ elseif cmp.visible() then
+ cmp.select_next_item()
+ else
+ fallback()
+ end
+ end, { 'i', 's' }),
+ ['<S-Tab>'] = cmp.mapping(function(fallback)
+ if cmp.visible() then
+ cmp.select_prev_item()
+ else
+ fallback()
+ end
+ end, { 'i', 's' }),
+ }),
+ sources = cmp.config.sources({
+ { name = 'nvim_lsp' },
+ { name = 'luasnip' },
+ }, {
+ { name = 'buffer' },
+ })
+})
+
+-- Add parentheses after selecting function or method
+local cmp_autopairs = require('nvim-autopairs.completion.cmp')
+cmp.event:on(
+ 'confirm_done',
+ cmp_autopairs.on_confirm_done()
+)
+
+local capabilities = require('cmp_nvim_lsp').default_capabilities()
+
+require("lspconfig").nixd.setup({
+ capabilities = capabilities,
+ settings = {
+ nixd = {
+ formatting = {
+ command = { "nixfmt" },
+ },
+ },
+ },
+})
+
+require("lspconfig").lua_ls.setup({
+ capabilities = capabilities,
+ settings = {
+ lua_ls = {
+ formatting = {
+ command = { "luaformatter" },
+ },
+ },
+ Lua = {
+ runtime = {
+ version = 'LuaJIT',
+ },
+ diagnostics = {
+ globals = {
+ 'vim', 'require'
+ },
+ },
+ workspace = {
+ library = vim.api.nvim_get_runtime_file("", true),
+ },
+ telemetry = {
+ enable = false,
+ },
+ },
+ },
+})
+
+require("lspconfig").pyright.setup({
+ capabilities = capabilities,
+})
+
+require("lspconfig").ts_ls.setup({
+ capabilities = capabilities,
+})
+
+require("lspconfig").tailwind.setup({
+ capabilities = capabilities,
+})
+
+require("lspconfig").gopls.setup({
+ capabilities = capabilities,
+ settings = {
+ gopls = {
+ analyses = {
+ unusedparams = true,
+ unusedwrite = true,
+ },
+ staticcheck = true,
+ },
+ },
+})
+
+require("lspconfig").rust_analyzer.setup({
+ capabilities = capabilities,
+})
+
+vim.diagnostic.config({
+ virtual_text = { source = "if_many" },
+ underline = true,
+ severity_sort = true,
+})
+
+vim.lsp.enable({ "lua_ls", "pyright" })
+vim.keymap.set('n', '<leader>lf', vim.lsp.buf.format)
+
+require("mini.starter").setup({
+ header = table.concat({
+ " /l、 ",
+ "(゚、 。 7 ",
+ " l ~ ヽ ",
+ " じしf_,)ノ ",
+ }, "\n"),
+ footer = "",
+ content_hooks = {
+ require("mini.starter").gen_hook.adding_bullet("» "),
+ require("mini.starter").gen_hook.aligning("center", "center"),
+ },
+})
+
+
+require("gitsigns").setup()
+require("nvim-autopairs").setup()
+require("fidget").setup()
+require("copilot").setup()
+
+vim.cmd("colorscheme gruvbox")
+
+local hl = vim.api.nvim_set_hl
+hl(0, 'Normal', { bg = 'none' })
+hl(0, 'NormalFloat', { bg = 'none' })
+hl(0, 'NormalNC', { bg = 'none' })
+hl(0, 'StatusLine', { bg = 'none' })
+hl(0, 'SignColumn', { bg = 'none' })
+hl(0, "DiagnosticError", { bg = "none" })
+hl(0, "DiagnosticSignError", { bg = "none" })
+hl(0, "DiagnosticSignHint", { bg = "none" })
+hl(0, "DiagnosticSignInfo", { bg = "none" })
+hl(0, "DiagnosticSignWarn", { bg = "none" })