From 6a125a1df6f15207af68176dc4d7a1e2556d2e20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Sun, 10 Sep 2023 13:30:29 +0200 Subject: [PATCH] refactor(nvim)!: add opts option --- modules/programs/nvim/default.nix | 142 +++++++---- .../nvim/plugins/{default.nix => coding.nix} | 221 +++++++----------- modules/programs/nvim/plugins/copilot-lua.lua | 5 - .../plugins/{ => lua}/catppuccin-nvim.lua | 0 .../nvim/plugins/{ => lua}/formatter-nvim.lua | 0 .../nvim/plugins/{ => lua}/gitsigns-nvim.lua | 0 .../nvim/plugins/{ => lua}/mini-nvim.lua | 0 .../nvim/plugins/{ => lua}/neodev-nvim.lua | 0 .../nvim/plugins/{ => lua}/noice-nvim.lua | 0 .../nvim/plugins/{ => lua}/null-ls-nvim.lua | 1 - .../nvim/plugins/{ => lua}/nvim-cmp.lua | 0 .../nvim/plugins/{ => lua}/nvim-lspconfig.lua | 0 .../nvim-treesitter-textsubjects.lua | 0 .../plugins/{ => lua}/nvim-treesitter.lua | 0 .../nvim/plugins/{ => lua}/nvim-ufo.lua | 0 .../nvim/plugins/{ => lua}/statuscol-nvim.lua | 0 .../nvim/plugins/{ => lua}/telescope.lua | 0 .../plugins/{ => lua}/vim-startuptime.lua | 0 .../nvim/plugins/{ => lua}/which-key-nvim.lua | 38 +-- .../plugins/{ => lua}/zettelkasten-nvim.lua | 0 .../programs/nvim/plugins/nvim-lastplace.lua | 5 - modules/programs/nvim/plugins/oil-nvim.lua | 4 - .../nvim/plugins/smartcolumn-nvim.lua | 4 - .../nvim/plugins/todo-comments-nvim.lua | 1 - modules/programs/nvim/plugins/treesitter.nix | 42 ++++ .../programs/nvim/plugins/trouble-nvim.lua | 1 - modules/programs/nvim/plugins/ui.nix | 47 ++++ 27 files changed, 273 insertions(+), 238 deletions(-) rename modules/programs/nvim/plugins/{default.nix => coding.nix} (51%) delete mode 100644 modules/programs/nvim/plugins/copilot-lua.lua rename modules/programs/nvim/plugins/{ => lua}/catppuccin-nvim.lua (100%) rename modules/programs/nvim/plugins/{ => lua}/formatter-nvim.lua (100%) rename modules/programs/nvim/plugins/{ => lua}/gitsigns-nvim.lua (100%) rename modules/programs/nvim/plugins/{ => lua}/mini-nvim.lua (100%) rename modules/programs/nvim/plugins/{ => lua}/neodev-nvim.lua (100%) rename modules/programs/nvim/plugins/{ => lua}/noice-nvim.lua (100%) rename modules/programs/nvim/plugins/{ => lua}/null-ls-nvim.lua (93%) rename modules/programs/nvim/plugins/{ => lua}/nvim-cmp.lua (100%) rename modules/programs/nvim/plugins/{ => lua}/nvim-lspconfig.lua (100%) rename modules/programs/nvim/plugins/{ => lua}/nvim-treesitter-textsubjects.lua (100%) rename modules/programs/nvim/plugins/{ => lua}/nvim-treesitter.lua (100%) rename modules/programs/nvim/plugins/{ => lua}/nvim-ufo.lua (100%) rename modules/programs/nvim/plugins/{ => lua}/statuscol-nvim.lua (100%) rename modules/programs/nvim/plugins/{ => lua}/telescope.lua (100%) rename modules/programs/nvim/plugins/{ => lua}/vim-startuptime.lua (100%) rename modules/programs/nvim/plugins/{ => lua}/which-key-nvim.lua (66%) rename modules/programs/nvim/plugins/{ => lua}/zettelkasten-nvim.lua (100%) delete mode 100644 modules/programs/nvim/plugins/nvim-lastplace.lua delete mode 100644 modules/programs/nvim/plugins/oil-nvim.lua delete mode 100644 modules/programs/nvim/plugins/smartcolumn-nvim.lua delete mode 100644 modules/programs/nvim/plugins/todo-comments-nvim.lua create mode 100644 modules/programs/nvim/plugins/treesitter.nix delete mode 100644 modules/programs/nvim/plugins/trouble-nvim.lua create mode 100644 modules/programs/nvim/plugins/ui.nix diff --git a/modules/programs/nvim/default.nix b/modules/programs/nvim/default.nix index c4859e5..4d95a7b 100644 --- a/modules/programs/nvim/default.nix +++ b/modules/programs/nvim/default.nix @@ -1,57 +1,90 @@ -{ config -, lib -, pkgs -, ... -}: +{ config, lib, pkgs, ... }: with lib; let cfg = config.my.programs.nvim; - boolToString = bool: if bool then "true" else "false"; - quote = str: ''"${toString str}"''; - id = x: x; - listToString = sep: f: list: ''{ ${concatStringsSep sep (map f list)} }''; - listToStringOneLine = listToString ", "; - listToStringMultiLine' = listToString ",\n" id; + toLua = value: with builtins; + if value == null then "nil" else + if isBool value then boolToString value else + if isInt value || isFloat value then toString value else + if isString value then string value else + if isAttrs value then attrs value else + if isList value then list value else + abort "should never happen (value = ${value})"; + + string = str: ''"${toString str}"''; + attrs = set: + let + toKeyword = name: value: "${name} = ${toLua value}"; + keywords = concatStringsSep ", " (mapAttrsToList toKeyword set); + in + "{ " + keywords + " }"; + + listContent = values: concatStringsSep ", " (map toLua values); + list = values: "{ " + listContent values + " }"; + + luaList = values: "{" + (concatStringsSep ", " values) + "}"; + keybinding = { key, cmd, func, mode, desc }: let cmdString = - if cmd != null - then quote cmd - else - ( - if func != null - then func - else abort "Either cmd or function must be set" - ); - descString = optionalString (desc != null) "desc = ${quote desc},"; + if cmd != null then toLua cmd else + if func != null then func else + abort "Either cmd or function must be set"; + descString = optionalString (desc != null) "desc = ${toLua desc},"; in - ''{ ${quote key}, ${cmdString}, mode = ${listToStringOneLine quote mode}, ${descString} }''; + ''{ ${toLua key}, ${cmdString}, mode = ${toLua mode}, ${descString} }''; + lazySpecFromPlugin = - { plugin, dependencies, init, conf, lazy, event, enabled, cmd, ft, priority, keys }: - listToStringMultiLine' + { cmd + , conf + , dependencies + , enabled + , event + , ft + , init + , keys + , lazy + , opts + , plugin + , priority + }: + + luaList ([ - "dir = ${quote plugin}" - "name = ${quote (getName plugin)}" + "dir = ${string plugin}" + "name = ${toLua (getName plugin)}" ] - ++ (optional (lazy != null) "lazy = ${boolToString lazy}") - ++ (optional (!enabled) "enabled = ${boolToString enabled}") - ++ (optional (dependencies != [ ]) "dependencies = ${listToStringMultiLine' (map lazySpecFromPlugin dependencies)}") - ++ (optional (init != null) "init = function(plugin)\n${toString init}\nend") - ++ (optional (conf != null) "config = function(plugin, opts)\n${toString conf}\nend") - ++ (optional (keys != [ ]) "keys = ${listToStringMultiLine' (map keybinding keys)}") - ++ (optional (event != [ ]) "event = ${listToStringOneLine quote event}") - ++ (optional (cmd != [ ]) "cmd = ${listToStringOneLine quote cmd}") - ++ (optional (ft != [ ]) "ft = ${listToStringOneLine quote ft}") - ++ (optional (priority != null) "priority = ${toString priority}") + ++ (optional (opts != null) "opts = ${toLua opts}") + ++ (optional (lazy != null) "lazy = ${toLua lazy}") + ++ (optional (!enabled) "enabled = ${toLua enabled}") + ++ (optional (dependencies != [ ]) "dependencies = ${luaList (map lazySpecFromPlugin dependencies)}") + ++ (optional (init != null) "init = function(plugin)\n${init}\nend") + ++ (optional (conf != null) "config = function(plugin, opts)\n${conf}\nend") + ++ (optional (keys != [ ]) "keys = ${luaList (map keybinding keys)}") + ++ (optional (event != [ ]) "event = ${toLua event}") + ++ (optional (cmd != [ ]) "cmd = ${toLua cmd}") + ++ (optional (ft != [ ]) "ft = ${toLua ft}") + ++ (optional (priority != null) "priority = ${toLua priority}") ); - lazySpecs = listToStringMultiLine' (map lazySpecFromPlugin cfg.plugins); + lazySpecs = luaList (map lazySpecFromPlugin cfg.plugins); lazy = /* lua */ '' require("lazy").setup(${lazySpecs}) ''; + + initLua = + let + text = lib.concatLines [ (builtins.readFile ./options.lua) lazy ]; + in + pkgs.runCommand "init.lua" { inherit text; } '' + touch $out + echo -n "$text" > $out + ${getExe pkgs.stylua} $out + ''; + in { - imports = [ ./plugins ]; + imports = lib.my.listModulesRec ./plugins; options.my.programs.nvim = { enable = mkEnableOption "nvim"; @@ -71,6 +104,27 @@ in Lua function to be executed when the plugin is loaded. ''; }; + opts = mkOption { + type = + let + valueType = nullOr + (oneOf [ + str + bool + int + float + (listOf valueType) + (attrsOf valueType) + ]) // { + description = "Lua value"; + }; + in + nullOr (attrsOf valueType); + default = null; + description = '' + Lua table to be passed to te plugin config function. + ''; + }; dependencies = mkOption { type = listOf sub; default = [ ]; @@ -195,17 +249,9 @@ in else neovide ) ]; - xdg.configFile."nvim/init.lua" = { - source = - let - text = lib.concatLines [ (builtins.readFile ./options.lua) lazy ]; - in - pkgs.runCommand "init.lua" { inherit text; } '' - touch $out - echo -n "$text" > $out - ${getExe pkgs.stylua} $out - ''; - }; + + xdg.configFile."nvim/init.lua".source = initLua; + programs.neovim = { enable = true; package = pkgs.neovim-nightly; diff --git a/modules/programs/nvim/plugins/default.nix b/modules/programs/nvim/plugins/coding.nix similarity index 51% rename from modules/programs/nvim/plugins/default.nix rename to modules/programs/nvim/plugins/coding.nix index f4a6780..801f9f0 100644 --- a/modules/programs/nvim/plugins/default.nix +++ b/modules/programs/nvim/plugins/coding.nix @@ -1,30 +1,24 @@ -{ lib, pkgs, ... }: +{ pkgs, ... }: with builtins; { config.my.programs.nvim.plugins = with pkgs.vimPlugins; [ - { - plugin = which-key-nvim; - lazy = false; - conf = readFile ./which-key-nvim.lua; - } - { - plugin = catppuccin-nvim; - conf = readFile ./catppuccin-nvim.lua; - lazy = false; - priority = 99; - } { plugin = formatter-nvim; + cmd = [ "Format" "Fmt" ]; keys = [ - { key = "="; cmd = "Format"; desc = "format (formatter)"; } + { + key = "="; + cmd = "Format"; + desc = "format (formatter)"; + } ]; - conf = readFile ./formatter-nvim.lua; + conf = readFile ./lua/formatter-nvim.lua; } { plugin = oil-nvim; lazy = false; - conf = readFile ./oil-nvim.lua; + opts = { }; dependencies = [ { plugin = which-key-nvim; } { plugin = nvim-web-devicons; } @@ -33,7 +27,7 @@ with builtins; { plugin = mini-nvim; lazy = false; - conf = readFile ./mini-nvim.lua; + conf = readFile ./lua/mini-nvim.lua; } { plugin = trouble-nvim; @@ -44,31 +38,35 @@ with builtins; { key = "xq"; cmd = "TroubleToggle quickfix"; desc = "Quickfix List (Trouble)"; } { key = "xt"; cmd = "TodoTrouble"; desc = "Todo (Trouble)"; } { key = "xT"; cmd = "TodoTrouble keywords=TODO,FIX,FIXME"; desc = "Todo/Fix/Fixme (Trouble)"; } - { key = "st"; cmd = "TodoTelescope"; desc = "Todo"; } + { key = "ft"; cmd = "TodoTelescope"; desc = "Todo"; } { key = "[q"; - func = /* lua */ ''function() - if require("trouble").is_open() then - require("trouble").previous({ skip_groups = true, jump = true }) - else - vim.cmd.cprev() - end - end''; + func = /* lua */ '' + function() + if require("trouble").is_open() then + require("trouble").previous({ skip_groups = true, jump = true }) + else + vim.cmd.cprev() + end + end + ''; desc = "Previous trouble/quickfix item"; } { key = "]q"; - func = /* lua */ ''function() - if require("trouble").is_open() then - require("trouble").next({ skip_groups = true, jump = true }) - else - vim.cmd.cnext() - end - end''; + func = /* lua */ '' + function() + if require("trouble").is_open() then + require("trouble").next({ skip_groups = true, jump = true }) + else + vim.cmd.cnext() + end + end + ''; desc = "Next trouble/quickfix item"; } ]; - conf = readFile ./trouble-nvim.lua; + opts = { }; dependencies = [ { plugin = which-key-nvim; } { plugin = nvim-web-devicons; } @@ -76,14 +74,12 @@ with builtins; } { plugin = nvim-cmp; - conf = readFile ./nvim-cmp.lua; + conf = readFile ./lua/nvim-cmp.lua; event = [ "InsertEnter" ]; dependencies = [ { plugin = nvim-autopairs; - conf = /* lua */ '' - require("nvim-autopairs").setup({}) - ''; + opts = { }; } { plugin = cmp-async-path; } { plugin = cmp-buffer; } @@ -92,55 +88,26 @@ with builtins; { plugin = cmp_luasnip; } { plugin = codeium-nvim; - conf = /* lua */ '' - require("codeium").setup({}) - ''; + opts = { }; } { plugin = friendly-snippets; } { plugin = lspkind-nvim; } { plugin = luasnip; } ]; } - { - plugin = todo-comments-nvim; - event = [ "BufReadPost" "BufNewFile" ]; - conf = readFile ./todo-comments-nvim.lua; - dependencies = [{ plugin = plenary-nvim; }]; - } { plugin = direnv-vim; lazy = false; } - { - plugin = nvim-treesitter; - event = [ "BufReadPost" "BufNewFile" ]; - conf = - let - parserDir = pkgs.symlinkJoin { - name = "tresitter-grammars-all"; - paths = lib.attrValues (lib.filterAttrs (_: builtins.isAttrs) nvim-treesitter-parsers); - }; - in - readFile ./nvim-treesitter.lua + '' - vim.opt.runtimepath:append("${parserDir}") - - require'nvim-treesitter.configs'.setup { - parser_install_dir = "${parserDir}", - } - ''; - dependencies = [ - { plugin = nvim-ts-context-commentstring; } - ]; - } { plugin = nvim-lspconfig; event = [ "BufRead" "BufNewFile" ]; - conf = readFile ./nvim-lspconfig.lua; + conf = readFile ./lua/nvim-lspconfig.lua; dependencies = [ { plugin = lsp_signature-nvim; } { plugin = null-ls-nvim; - conf = readFile ./null-ls-nvim.lua; + conf = readFile ./lua/null-ls-nvim.lua; dependencies = [ { plugin = which-key-nvim; } { plugin = plenary-nvim; } @@ -150,36 +117,27 @@ with builtins; { plugin = lsp_lines-nvim; } { plugin = nvim-ufo; - conf = readFile ./nvim-ufo.lua; + conf = readFile ./lua/nvim-ufo.lua; dependencies = [ { plugin = promise-async; } ]; } { plugin = neodev-nvim; - conf = readFile ./neodev-nvim.lua; + conf = readFile ./lua/neodev-nvim.lua; } { plugin = inc-rename-nvim; - conf = /* lua */ '' - require("inc_rename").setup { - input_buffer_type = "dressing", - } - ''; + opts = { + input_buffer_type = "dressing"; + }; dependencies = [ - { - plugin = dressing-nvim; - } + { plugin = dressing-nvim; } ]; } { plugin = actions-preview-nvim; } ]; } - { - plugin = statuscol-nvim; - event = [ "VeryLazy" ]; - conf = readFile ./statuscol-nvim.lua; - } { plugin = vim-fugitive; cmd = [ @@ -212,44 +170,25 @@ with builtins; plugin = vim-tmux-navigator; event = [ "VeryLazy" ]; } - { - plugin = gitsigns-nvim; - event = [ "BufReadPost" "BufNewFile" ]; - conf = readFile ./gitsigns-nvim.lua; - dependencies = [{ plugin = which-key-nvim; }]; - } { plugin = nvim-lastplace; event = [ "BufReadPost" "BufNewFile" ]; - conf = readFile ./nvim-lastplace.lua; - } - { - plugin = nvim-treesitter-textsubjects; - event = [ "BufReadPost" "BufNewFile" ]; - conf = readFile ./nvim-treesitter-textsubjects.lua; - } - { - plugin = smartcolumn-nvim; - event = [ "BufReadPost" "BufNewFile" ]; - conf = readFile ./smartcolumn-nvim.lua; + opts = { + lastplace_ignore_buftype = [ "quickfix" "nofile" "help" ]; + lastplace_ignore_filetype = [ "gitcommit" "gitrebase" "svn" "hgcommit" ]; + lastplace_open_folds = true; + }; } { plugin = telescope-nvim; cmd = [ "Telescope" ]; - conf = builtins.readFile ./telescope.lua; + conf = builtins.readFile ./lua/telescope.lua; keys = [ { key = "ff"; cmd = "Telescope find_files"; desc = "Find files"; } { key = "fb"; cmd = "Telescope buffers"; desc = "Find buffers"; } - { key = "fr"; cmd = "Telescope oldfiles"; desc = "Find recent files"; } - { key = "sl"; cmd = "Telescope current_buffer_fuzzy_find"; desc = "Search lines"; } - { key = "sg"; cmd = "Telescope live_grep"; desc = "Live grep"; } - { key = "sc"; cmd = "Telescope command_history"; desc = "Command history"; } - { key = "sC"; cmd = "Telescope commands"; desc = "Commands"; } - { key = "sd"; cmd = "Telescope diagnostics"; desc = "Diagnostics"; } - { key = "sh"; cmd = "Telescope help_tags"; desc = "Help tags"; } - { key = "sk"; cmd = "Telescope keymaps"; desc = "Keymaps"; } - { key = "ss"; cmd = "Telescope lsp_document_symbols"; desc = "Symbols (Document)"; } - { key = "sS"; cmd = "Telescope lsp_workspace_symbols"; desc = "Symbols (Workspace)"; } + { key = "fl"; cmd = "Telescope current_buffer_fuzzy_find"; desc = "Search lines"; } + { key = "fg"; cmd = "Telescope live_grep"; desc = "Live grep"; } + { key = "fh"; cmd = "Telescope help_tags"; desc = "Help tags"; } ]; dependencies = [ { plugin = plenary-nvim; } @@ -260,7 +199,7 @@ with builtins; { plugin = vim-startuptime; cmd = [ "StartupTime" ]; - conf = readFile ./vim-startuptime.lua; + conf = readFile ./lua/vim-startuptime.lua; } { plugin = typst-vim; @@ -269,47 +208,28 @@ with builtins; { plugin = comment-nvim; event = [ "BufReadPost" "BufNewFile" ]; - conf = /* lua */ '' - require("Comment").setup() - ''; + opts = { }; } { plugin = telekasten-nvim; dependencies = [ { plugin = telescope-nvim; } { plugin = which-key-nvim; } + { + plugin = markdown-preview-nvim; + ft = [ "md" ]; + } ]; cmd = [ "Telekasten" ]; keys = [ { key = "z"; cmd = "Telekasten"; desc = "zettelkasten"; } ]; - conf = builtins.readFile ./zettelkasten-nvim.lua; - } - { - plugin = markdown-preview-nvim; - ft = [ "md" ]; + conf = builtins.readFile ./lua/zettelkasten-nvim.lua; } { plugin = nvim-surround; event = [ "BufReadPost" "BufNewFile" ]; - conf = /* lua */ '' - require("nvim-surround").setup({}) - ''; - } - { - plugin = nvim-treesitter-context; - event = [ "BufReadPost" "BufNewFile" ]; - conf = /* lua */ '' - require("treesitter-context").setup({}) - ''; - } - { - plugin = dressing-nvim; - event = [ "VeryLazy" ]; - } - { - plugin = hmts-nvim; - ft = [ "nix" ]; + opts = { }; } { plugin = zen-mode-nvim; @@ -320,5 +240,30 @@ with builtins; { plugin = twilight-nvim; } ]; } + { + plugin = refactoring-nvim; + keys = [ + { key = "re"; cmd = ": Refactor eextract "; desc = "Extract"; mode = [ "x" ]; } + { key = "rf"; cmd = ": Refactor extract_to_file "; desc = "Extract to file"; mode = [ "x" ]; } + { key = "rv"; cmd = ": Refactor extract_var "; desc = "Extract variable"; mode = [ "x" ]; } + { key = "ri"; cmd = ": Refactor inline_var"; desc = "Inline variable"; mode = [ "n" "x" ]; } + { key = "rI"; cmd = ": Refactor inline_func"; desc = "Inline function"; mode = [ "n" "x" ]; } + { key = "rb"; cmd = ": Refactor extract_block"; desc = "Extract block"; mode = [ "n" ]; } + { key = "rbf"; cmd = ": Refactor extract_block_to_file"; desc = "Extract block to file"; mode = [ "n" ]; } + ]; + dependencies = [ + { plugin = which-key-nvim; } + { plugin = plenary-nvim; } + { plugin = nvim-lspconfig; } + ]; + init = /* lua */ '' + require("which-key").register({ + ["r"] = { + name = "refactoring", + }, + }) + ''; + opts = { }; + } ]; } diff --git a/modules/programs/nvim/plugins/copilot-lua.lua b/modules/programs/nvim/plugins/copilot-lua.lua deleted file mode 100644 index f9799dc..0000000 --- a/modules/programs/nvim/plugins/copilot-lua.lua +++ /dev/null @@ -1,5 +0,0 @@ -require("copilot").setup({ - suggestion = { enabled = false }, - panel = { enabled = false }, -}) -vim.cmd("Copilot disable") diff --git a/modules/programs/nvim/plugins/catppuccin-nvim.lua b/modules/programs/nvim/plugins/lua/catppuccin-nvim.lua similarity index 100% rename from modules/programs/nvim/plugins/catppuccin-nvim.lua rename to modules/programs/nvim/plugins/lua/catppuccin-nvim.lua diff --git a/modules/programs/nvim/plugins/formatter-nvim.lua b/modules/programs/nvim/plugins/lua/formatter-nvim.lua similarity index 100% rename from modules/programs/nvim/plugins/formatter-nvim.lua rename to modules/programs/nvim/plugins/lua/formatter-nvim.lua diff --git a/modules/programs/nvim/plugins/gitsigns-nvim.lua b/modules/programs/nvim/plugins/lua/gitsigns-nvim.lua similarity index 100% rename from modules/programs/nvim/plugins/gitsigns-nvim.lua rename to modules/programs/nvim/plugins/lua/gitsigns-nvim.lua diff --git a/modules/programs/nvim/plugins/mini-nvim.lua b/modules/programs/nvim/plugins/lua/mini-nvim.lua similarity index 100% rename from modules/programs/nvim/plugins/mini-nvim.lua rename to modules/programs/nvim/plugins/lua/mini-nvim.lua diff --git a/modules/programs/nvim/plugins/neodev-nvim.lua b/modules/programs/nvim/plugins/lua/neodev-nvim.lua similarity index 100% rename from modules/programs/nvim/plugins/neodev-nvim.lua rename to modules/programs/nvim/plugins/lua/neodev-nvim.lua diff --git a/modules/programs/nvim/plugins/noice-nvim.lua b/modules/programs/nvim/plugins/lua/noice-nvim.lua similarity index 100% rename from modules/programs/nvim/plugins/noice-nvim.lua rename to modules/programs/nvim/plugins/lua/noice-nvim.lua diff --git a/modules/programs/nvim/plugins/null-ls-nvim.lua b/modules/programs/nvim/plugins/lua/null-ls-nvim.lua similarity index 93% rename from modules/programs/nvim/plugins/null-ls-nvim.lua rename to modules/programs/nvim/plugins/lua/null-ls-nvim.lua index c689fad..6701630 100644 --- a/modules/programs/nvim/plugins/null-ls-nvim.lua +++ b/modules/programs/nvim/plugins/lua/null-ls-nvim.lua @@ -3,7 +3,6 @@ local null_ls = require("null-ls") null_ls.setup({ sources = { -- Code actions - null_ls.builtins.code_actions.gitsigns, null_ls.builtins.code_actions.shellcheck, null_ls.builtins.code_actions.statix, -- Completion diff --git a/modules/programs/nvim/plugins/nvim-cmp.lua b/modules/programs/nvim/plugins/lua/nvim-cmp.lua similarity index 100% rename from modules/programs/nvim/plugins/nvim-cmp.lua rename to modules/programs/nvim/plugins/lua/nvim-cmp.lua diff --git a/modules/programs/nvim/plugins/nvim-lspconfig.lua b/modules/programs/nvim/plugins/lua/nvim-lspconfig.lua similarity index 100% rename from modules/programs/nvim/plugins/nvim-lspconfig.lua rename to modules/programs/nvim/plugins/lua/nvim-lspconfig.lua diff --git a/modules/programs/nvim/plugins/nvim-treesitter-textsubjects.lua b/modules/programs/nvim/plugins/lua/nvim-treesitter-textsubjects.lua similarity index 100% rename from modules/programs/nvim/plugins/nvim-treesitter-textsubjects.lua rename to modules/programs/nvim/plugins/lua/nvim-treesitter-textsubjects.lua diff --git a/modules/programs/nvim/plugins/nvim-treesitter.lua b/modules/programs/nvim/plugins/lua/nvim-treesitter.lua similarity index 100% rename from modules/programs/nvim/plugins/nvim-treesitter.lua rename to modules/programs/nvim/plugins/lua/nvim-treesitter.lua diff --git a/modules/programs/nvim/plugins/nvim-ufo.lua b/modules/programs/nvim/plugins/lua/nvim-ufo.lua similarity index 100% rename from modules/programs/nvim/plugins/nvim-ufo.lua rename to modules/programs/nvim/plugins/lua/nvim-ufo.lua diff --git a/modules/programs/nvim/plugins/statuscol-nvim.lua b/modules/programs/nvim/plugins/lua/statuscol-nvim.lua similarity index 100% rename from modules/programs/nvim/plugins/statuscol-nvim.lua rename to modules/programs/nvim/plugins/lua/statuscol-nvim.lua diff --git a/modules/programs/nvim/plugins/telescope.lua b/modules/programs/nvim/plugins/lua/telescope.lua similarity index 100% rename from modules/programs/nvim/plugins/telescope.lua rename to modules/programs/nvim/plugins/lua/telescope.lua diff --git a/modules/programs/nvim/plugins/vim-startuptime.lua b/modules/programs/nvim/plugins/lua/vim-startuptime.lua similarity index 100% rename from modules/programs/nvim/plugins/vim-startuptime.lua rename to modules/programs/nvim/plugins/lua/vim-startuptime.lua diff --git a/modules/programs/nvim/plugins/which-key-nvim.lua b/modules/programs/nvim/plugins/lua/which-key-nvim.lua similarity index 66% rename from modules/programs/nvim/plugins/which-key-nvim.lua rename to modules/programs/nvim/plugins/lua/which-key-nvim.lua index 09f227f..aa3c8a9 100644 --- a/modules/programs/nvim/plugins/which-key-nvim.lua +++ b/modules/programs/nvim/plugins/lua/which-key-nvim.lua @@ -1,14 +1,16 @@ vim.o.timeout = true vim.o.timeoutlen = 500 --- buffer +-- Delete require("which-key").register({ - b = { - name = "buffer", - b = { "Telescope buffers", "List buffers" }, - d = { "bd", "Delete buffer" }, + d = { + name = "delete", + b = { "bd", "Delete buffer" }, + w = { "c", "Delete window" }, }, }, { prefix = "" }) + +-- buffer require("which-key").register({ ["["] = { b = { "bprevious", "Previous buffer" }, @@ -25,32 +27,6 @@ require("which-key").register({ ["|"] = { "v", "Split window horizontally" }, ["-"] = { "s", "Split window vertically" }, w = { "w", "Switch window" }, - d = { "c", "Delete window" }, - }, -}, { prefix = "" }) - --- tab -require("which-key").register({ - [""] = { - name = "tab", - [""] = { "tabnew", "New tab" }, - d = { "tabclose", "Close tab" }, - }, -}, { prefix = "" }) -require("which-key").register({ - ["["] = { - t = { "tabprevious", "Previous tab" }, - }, - ["]"] = { - t = { "tabnext", "Next tab" }, - }, -}) - --- file -require("which-key").register({ - f = { - name = "file/find", - n = { "enew", "New file" }, }, }, { prefix = "" }) diff --git a/modules/programs/nvim/plugins/zettelkasten-nvim.lua b/modules/programs/nvim/plugins/lua/zettelkasten-nvim.lua similarity index 100% rename from modules/programs/nvim/plugins/zettelkasten-nvim.lua rename to modules/programs/nvim/plugins/lua/zettelkasten-nvim.lua diff --git a/modules/programs/nvim/plugins/nvim-lastplace.lua b/modules/programs/nvim/plugins/nvim-lastplace.lua deleted file mode 100644 index d97700f..0000000 --- a/modules/programs/nvim/plugins/nvim-lastplace.lua +++ /dev/null @@ -1,5 +0,0 @@ -require("nvim-lastplace").setup({ - lastplace_ignore_buftype = { "quickfix", "nofile", "help" }, - lastplace_ignore_filetype = { "gitcommit", "gitrebase", "svn", "hgcommit" }, - lastplace_open_folds = true, -}) diff --git a/modules/programs/nvim/plugins/oil-nvim.lua b/modules/programs/nvim/plugins/oil-nvim.lua deleted file mode 100644 index 6c9c81e..0000000 --- a/modules/programs/nvim/plugins/oil-nvim.lua +++ /dev/null @@ -1,4 +0,0 @@ -require("oil").setup() -require("which-key").register({ - d = { require("oil").toggle_float, "Directory (oil)" }, -}, { prefix = "t" }) diff --git a/modules/programs/nvim/plugins/smartcolumn-nvim.lua b/modules/programs/nvim/plugins/smartcolumn-nvim.lua deleted file mode 100644 index c095401..0000000 --- a/modules/programs/nvim/plugins/smartcolumn-nvim.lua +++ /dev/null @@ -1,4 +0,0 @@ -require("smartcolumn").setup({ - colorcolumn = "120", - disabled_filetypes = { "help", "text", "markdown", "dashboard" }, -}) diff --git a/modules/programs/nvim/plugins/todo-comments-nvim.lua b/modules/programs/nvim/plugins/todo-comments-nvim.lua deleted file mode 100644 index 57fce71..0000000 --- a/modules/programs/nvim/plugins/todo-comments-nvim.lua +++ /dev/null @@ -1 +0,0 @@ -require("todo-comments").setup() diff --git a/modules/programs/nvim/plugins/treesitter.nix b/modules/programs/nvim/plugins/treesitter.nix new file mode 100644 index 0000000..d4c3cf0 --- /dev/null +++ b/modules/programs/nvim/plugins/treesitter.nix @@ -0,0 +1,42 @@ +{ lib, pkgs, ... }: + +with builtins; +{ + config.my.programs.nvim.plugins = with pkgs.vimPlugins; [ + { + plugin = nvim-treesitter; + event = [ "BufReadPost" "BufNewFile" ]; + conf = + let + parserDir = pkgs.symlinkJoin { + name = "tresitter-grammars-all"; + paths = lib.attrValues (lib.filterAttrs (_: builtins.isAttrs) nvim-treesitter-parsers); + }; + in + readFile ./lua/nvim-treesitter.lua + '' + vim.opt.runtimepath:append("${parserDir}") + + require'nvim-treesitter.configs'.setup { + parser_install_dir = "${parserDir}", + } + ''; + dependencies = [ + { plugin = nvim-ts-context-commentstring; } + ]; + } + { + plugin = nvim-treesitter-textsubjects; + event = [ "BufReadPost" "BufNewFile" ]; + conf = readFile ./lua/nvim-treesitter-textsubjects.lua; + } + { + plugin = nvim-treesitter-context; + event = [ "BufReadPost" "BufNewFile" ]; + opts = { }; + } + { + plugin = hmts-nvim; + ft = [ "nix" ]; + } + ]; +} diff --git a/modules/programs/nvim/plugins/trouble-nvim.lua b/modules/programs/nvim/plugins/trouble-nvim.lua deleted file mode 100644 index 38ef1e9..0000000 --- a/modules/programs/nvim/plugins/trouble-nvim.lua +++ /dev/null @@ -1 +0,0 @@ -require("trouble").setup() diff --git a/modules/programs/nvim/plugins/ui.nix b/modules/programs/nvim/plugins/ui.nix new file mode 100644 index 0000000..0e535c4 --- /dev/null +++ b/modules/programs/nvim/plugins/ui.nix @@ -0,0 +1,47 @@ +{ pkgs, ... }: + +with builtins; +{ + config.my.programs.nvim.plugins = with pkgs.vimPlugins; [ + { + plugin = which-key-nvim; + lazy = false; + conf = readFile ./lua/which-key-nvim.lua; + } + { + plugin = catppuccin-nvim; + conf = readFile ./lua/catppuccin-nvim.lua; + lazy = false; + priority = 99; + } + { + plugin = todo-comments-nvim; + event = [ "BufReadPost" "BufNewFile" ]; + dependencies = [{ plugin = plenary-nvim; }]; + opts = { }; + } + { + plugin = statuscol-nvim; + event = [ "VeryLazy" ]; + conf = readFile ./lua/statuscol-nvim.lua; + } + { + plugin = smartcolumn-nvim; + event = [ "BufReadPost" "BufNewFile" ]; + opts = { + colorcolumn = "120"; + disabled_filetypes = [ "help" "text" "markdown" "dashboard" ]; + }; + } + { + plugin = dressing-nvim; + event = [ "VeryLazy" ]; + } + { + plugin = gitsigns-nvim; + event = [ "BufReadPost" "BufNewFile" ]; + conf = readFile ./lua/gitsigns-nvim.lua; + dependencies = [{ plugin = which-key-nvim; }]; + } + ]; +}