From 3b13d9a2a367db84d48940460532c17a374bb488 Mon Sep 17 00:00:00 2001 From: schererleander Date: Thu, 5 Feb 2026 12:03:07 +0100 Subject: feat(modules): use dendritic pattern --- modules/home/editors/neovim/default.nix | 65 --------- modules/home/editors/neovim/init.lua | 239 -------------------------------- 2 files changed, 304 deletions(-) delete mode 100644 modules/home/editors/neovim/default.nix delete mode 100644 modules/home/editors/neovim/init.lua (limited to 'modules/home/editors/neovim') diff --git a/modules/home/editors/neovim/default.nix b/modules/home/editors/neovim/default.nix deleted file mode 100644 index ef97f89..0000000 --- a/modules/home/editors/neovim/default.nix +++ /dev/null @@ -1,65 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -let - inherit (lib) mkEnableOption mkIf optionals; - cfg = config.nx.editors.neovim; -in -{ - options.nx.editors.neovim = { - enable = mkEnableOption "Neovim editor"; - }; - - config = mkIf cfg.enable { - programs.neovim = { - defaultEditor = true; - enable = true; - package = pkgs.neovim-unwrapped; - extraPackages = - with pkgs; - [ - tree-sitter - git - ripgrep - fd - gcc - ] - ++ (optionals true [ pkgs.gopls ]) - ++ (optionals true [ - pkgs.nil - pkgs.nixfmt - ]) - ++ (optionals true [ pkgs.lua-language-server ]) - ++ (optionals true [ pkgs.texlab ]) - ++ (optionals true [ pkgs.tinymist ]); - - plugins = with pkgs.vimPlugins; [ - gruvbox-nvim - mini-starter - gitsigns-nvim - nvim-autopairs - telescope-nvim - fidget-nvim - plenary-nvim - nvim-treesitter.withAllGrammars - nvim-lspconfig - nvim-cmp - cmp-nvim-lsp - cmp-buffer - cmp-path - cmp-cmdline - luasnip - cmp_luasnip - lspkind-nvim - ]; - - extraConfig = '' - luafile ${./init.lua} - ''; - }; - }; -} diff --git a/modules/home/editors/neovim/init.lua b/modules/home/editors/neovim/init.lua deleted file mode 100644 index 141eb3c..0000000 --- a/modules/home/editors/neovim/init.lua +++ /dev/null @@ -1,239 +0,0 @@ --- 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', 'o', 'updatesource %', { desc = 'Save & reload init.lua' }) -map('n', 'w', 'write') -map('n', 'q', 'quit') - - -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() - -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" }) - -hl(0, "Pmenu", { bg = "none" }) -hl(0, "PmenuSel", { bg = "none" }) -hl(0, "FloatBorder", { bg = "none" }) - -local status_ok, configs = pcall(require, "nvim-treesitter.configs") -if status_ok then - configs.setup({ - highlight = { enable = true }, - indent = { enable = true }, - }) -end - -local builtin = require('telescope.builtin') -local map = vim.keymap.set -map('n', 'ff', builtin.find_files, { desc = 'Telescope find files' }) -map('n', 'fg', builtin.live_grep, { desc = 'Telescope live grep' }) -map('n', 'fb', builtin.buffers, { desc = 'Telescope buffers' }) -map('n', '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({ - [''] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.scroll_docs(4), - [''] = cmp.mapping.complete(), - [''] = cmp.mapping.abort(), - [''] = cmp.mapping.confirm({ select = true }), - [''] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_next_item() - else - fallback() - end - end, { 'i', 's' }), - [''] = 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() - -vim.api.nvim_create_autocmd('LspAttach', { - group = vim.api.nvim_create_augroup('UserLspConfig', {}), - callback = function(ev) - local opts = { buffer = ev.buf, noremap = true, silent = true } - vim.keymap.set('n', 'lf', function() vim.lsp.buf.format { async = true } end, opts) - end, -}) - --- Format on save for all languages with LSP support -vim.api.nvim_create_autocmd('BufWritePre', { - group = vim.api.nvim_create_augroup('FormatOnSave', {}), - callback = function() - local clients = vim.lsp.get_clients({ bufnr = 0 }) - for _, client in ipairs(clients) do - if client.supports_method('textDocument/formatting') then - vim.lsp.buf.format({ async = false }) - return - end - end - end, -}) - --- Native LSP setup (Neovim v0.11+) -vim.lsp.config('nixd', { - cmd = { 'nixd' }, - capabilities = capabilities, - settings = { - nixd = { - formatting = { - command = { "nixfmt" }, - }, - }, - }, -}) - -vim.lsp.config('nil_ls', { - cmd = { 'nil' }, - capabilities = capabilities, - settings = { - ['nil'] = { - nix = { - flake = { - autoArchive = true, - }, - }, - }, - }, -}) - -vim.lsp.config('lua_ls', { - cmd = { 'lua-language-server' }, - capabilities = capabilities, - settings = { - Lua = { - runtime = { - version = 'LuaJIT', - }, - diagnostics = { - globals = { 'vim', 'require' }, - }, - workspace = { - library = vim.api.nvim_get_runtime_file("", true), - }, - telemetry = { - enable = false, - }, - }, - }, -}) - -vim.lsp.config('pyright', { - cmd = { 'pyright-langserver', '--stdio' }, - capabilities = capabilities, -}) - -vim.lsp.config('tailwindcss', { - cmd = { 'tailwindcss-language-server', '--stdio' }, - capabilities = capabilities, -}) - -vim.lsp.config('gopls', { - cmd = { 'gopls' }, - capabilities = capabilities, - settings = { - gopls = { - analyses = { - unusedparams = true, - unusedwrite = true, - }, - staticcheck = true, - }, - }, -}) - -vim.lsp.config('rust_analyzer', { - cmd = { 'rust-analyzer' }, - capabilities = capabilities, -}) - -vim.lsp.config('ts_ls', { - cmd = { 'typescript-language-server', '--stdio' }, - capabilities = capabilities, -}) - --- Enable all configured servers -vim.lsp.enable('nixd') -vim.lsp.enable('nil_ls') -vim.lsp.enable('lua_ls') -vim.lsp.enable('pyright') -vim.lsp.enable('tailwindcss') -vim.lsp.enable('gopls') -vim.lsp.enable('rust_analyzer') -vim.lsp.enable('ts_ls') - -vim.diagnostic.config({ - virtual_text = { source = "if_many" }, - underline = true, - severity_sort = true, -}) -- cgit v1.3.1