From b87d7b387a363fd5d9fa44c3ce51f557a4b1262b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Sat, 11 Mar 2023 17:00:32 +0100 Subject: [PATCH] refactor(nvim): discover plugins automatically --- modules/programs/nvim/default.nix | 51 +++++++++++-------------------- 1 file changed, 17 insertions(+), 34 deletions(-) diff --git a/modules/programs/nvim/default.nix b/modules/programs/nvim/default.nix index 36c17cb..8a6d1cb 100644 --- a/modules/programs/nvim/default.nix +++ b/modules/programs/nvim/default.nix @@ -1,7 +1,6 @@ { config , lib , pkgs -, inputs , ... }: @@ -9,12 +8,18 @@ with lib; let cfg = config.my.programs.nvim; - mkPlugin = name: { - plugin = pkgs.vimPlugins.${name}; - type = "lua"; - config = lib.readFile (./plugins + "/${name}.lua"); - }; - + mkPlugin = fileName: + let + path = ./plugins + "/${fileName}"; + pluginName = lib.removeSuffix ".lua" fileName; + in + { + plugin = pkgs.vimPlugins.${pluginName}; + type = "lua"; + config = lib.readFile path; + }; + pluginFileNames = builtins.attrNames (builtins.readDir ./plugins); + pluginsWithConfig = builtins.map mkPlugin pluginFileNames; in { options.my.programs.nvim.enable = mkEnableOption "nvim"; @@ -51,29 +56,7 @@ in taplo yamlfmt ]; - plugins = builtins.map mkPlugin [ - "catppuccin-nvim" - "comment-nvim" - "copilot-lua" - "dashboard-nvim" - "formatter-nvim" - "gitsigns-nvim" - "lualine-nvim" - "noice-nvim" - "nvim-autopairs" - "nvim-lastplace" - "nvim-surround" - "nvim-tree-lua" - "nvim-treesitter-textsubjects" - "nvim-ts-context-commentstring" - "orgmode" - "smartcolumn-nvim" - "telescope-fzf-native-nvim" - "telescope-nvim" - "telescope-zoxide" - "which-key-nvim" - "todo-comments-nvim" - ] ++ (with pkgs.vimPlugins; [ + plugins = with pkgs.vimPlugins; [ cmp-nvim-lsp cmp_luasnip copilot-cmp @@ -84,17 +67,17 @@ in lspsaga-nvim-original lualine-lsp-progress luasnip - nui-nvim # for noice-nvim + nui-nvim nvim-cmp nvim-lspconfig nvim-treesitter.withAllGrammars nvim-ufo - nvim-web-devicons # for dashboard-nvim - plenary-nvim # for telescope, neogit + nvim-web-devicons + plenary-nvim popup-nvim promise-async vim-lion - ]); + ] ++ pluginsWithConfig; }; }; };