{ config , lib , pkgs , ... }: with lib; let cfg = config.my.programs.vim; in { options.my.programs.vim = { enable = mkOption { default = true; type = types.bool; example = false; }; }; config = mkIf cfg.enable { home-manager.users.moritz.programs.neovim = { enable = true; package = pkgs.neovim-nightly; vimAlias = true; vimdiffAlias = true; withNodeJs = true; withPython3 = true; extraLuaConfig = builtins.readFile ./init.lua; extraPackages = with pkgs; [ sumneko-lua-language-server nil ]; plugins = with pkgs.vimPlugins; [ catppuccin-nvim cmp-nvim-lsp cmp_luasnip comment-nvim dashboard-nvim lsp_lines-nvim lualine-lsp-progress lualine-nvim luasnip neogit noice-nvim nui-nvim # for noice-nvim nvim-cmp nvim-lspconfig nvim-surround nvim-treesitter.withAllGrammars nvim-ts-context-commentstring nvim-web-devicons # for dashboard-nvim plenary-nvim # for telescope, neogit telescope-nvim which-key-nvim ]; }; }; }