diff --git a/package.nix b/package.nix index 525ac75..df94607 100644 --- a/package.nix +++ b/package.nix @@ -2,130 +2,140 @@ pkgs, lib, neovim ? pkgs.neovim, - blink-cmp ? pkgs.vimPlugins.blink-cmp, - ripgrep ? pkgs.ripgrep, mdfmt ? null, - go-grip ? pkgs.go-grip, yazi ? pkgs.yazi, ... }: let - start = - (with pkgs.vimPlugins; [ - catppuccin-nvim - indent-blankline-nvim - lze - nvim-lspconfig - nvim-treesitter.withAllGrammars - nvim-treesitter-textobjects - nvim-treesitter-textsubjects - - ( - (pkgs.vimUtils.buildVimPlugin { - name = "dot013.nvim"; - src = ./.; - }).overrideAttrs - {doCheck = false;} - ) - ]) - ++ [ - blink-cmp - ]; - opt = with pkgs.vimPlugins; [ - auto-save-nvim - auto-session - cloak-nvim - conform-nvim - comment-nvim - friendly-snippets - gitsigns-nvim - harpoon2 - lualine-nvim - luasnip - marks-nvim - nvim-autopairs - nvim-dap - nvim-dap-go - nvim-dap-ui - nvim-dap-virtual-text - nvim-nio - nvim-ts-autotag - nvim-web-devicons - tailwind-tools-nvim - telescope-nvim - telescope-zf-native-nvim - telescope-undo-nvim - todo-comments-nvim - trouble-nvim - tmux-nvim - vim-sleuth - - (pkgs.vimUtils.buildVimPlugin { - pname = "aw-watcher.nvim"; - version = "master"; - src = fetchGit { - url = "https://github.com/lowitea/aw-watcher.nvim"; - rev = "be7b03748f59b6602502baf08e7f7736cc7279a5"; - }; - }) - - (pkgs.vimUtils.buildVimPlugin { - pname = "nvim-emmet"; - version = "v0.4.4"; - src = fetchGit { - url = "https://github.com/olrtg/nvim-emmet"; - rev = "cde4fb2968704aae5c18b7f8a9bc2508767bb78d"; - }; - }) - - # Probably can be replaced by local functions in the config - (pkgs.vimUtils.buildVimPlugin { - pname = "tfm.nvim"; - version = "2024-04-23"; - src = fetchGit { - url = "https://github.com/Rolv-Apneseth/tfm.nvim"; - rev = "fb0de2c96bf303216ac5d91ce9bdb7f430030f8b"; - }; - }) - ]; - - languageServers = with pkgs; [ - emmet-language-server - deno - gopls - golangci-lint-langserver - htmx-lsp - lemminx - lua-language-server - nil - marksman - tailwindcss-language-server - typescript-language-server - rust-analyzer - vscode-langservers-extracted - ]; - - formatters = with pkgs; [ - alejandra - jq - html-tidy - libxml2 - mdfmt - prettierd - shellharden - shfmt - ]; - - externalDependencies = [ - ripgrep - go-grip - yazi - ]; + dot-nvim = pkgs.vimUtils.buildVimPlugin { + name = "dot.nvim"; + src = lib.cleanSource ./.; + }; in neovim.override { viAlias = true; vimAlias = true; - configure.packages.plugins = {inherit start opt;}; + configure.packages.plugins = { + # Reference: ./lua/dot/plugins.lua + + start = with pkgs.vimPlugins; [ + lze + lzextras + + # Language Server Protocol + nvim-lspconfig + + # Autocomplete + blink-cmp + friendly-snippets # Snippets + + # Treesitter (Syntax Highlighting) + nvim-treesitter.withAllGrammars + nvim-treesitter-textobjects # Dependency + nvim-treesitter-textsubjects # Dependency + + (dot-nvim.overrideAttrs {doCheck = false;}) + ]; + opt = with pkgs.vimPlugins; [ + # Language Server Protocol + lazydev-nvim + + # Debugger + nvim-dap + nvim-dap-ui + nvim-nio # Dependency + + # Formatting + conform-nvim + guess-indent-nvim + + # Fuzzy Finding + telescope-nvim + telescope-zf-native-nvim # Dependency + + # Quick file switching + harpoon2 + + # Auto saving + auto-save-nvim + + # Session restore + auto-session + + # Secrets hiding + cloak-nvim + + # Appearance + catppuccin-nvim + indent-blankline-nvim + + # Git + gitsigns-nvim + + # Todo Comments + todo-comments-nvim + + # Integrations + (pkgs.vimUtils.buildVimPlugin { + pname = "aw-watcher.nvim"; + version = "master"; + src = fetchGit { + url = "https://github.com/lowitea/aw-watcher.nvim"; + rev = "be7b03748f59b6602502baf08e7f7736cc7279a5"; + }; + }) + (pkgs.vimUtils.buildVimPlugin { + pname = "godot.nvim"; + version = "v0.4.4"; + src = fetchGit { + url = "https://github.com/Lommix/godot.nvim"; + rev = "349b6b088c15447843fc21b60ba7267b8b49d821"; + }; + }) + ]; + # inherit start opt; + }; extraMakeWrapperArgs = let - binPath = lib.makeBinPath (languageServers ++ formatters ++ externalDependencies); + binPath = lib.makeBinPath (with pkgs; + [ + # INFO: LSP Providers + # Reference: ./lua/dot/lsp.lua + + vscode-langservers-extracted # cssls, eslint, html, jsonls, typescript + + emmet-language-server + golangci-lint-langserver + gopls + htmx-lsp + lemminx + lua-language-server + marksman + nil + rust-analyzer + tailwindcss-language-server + ] + ++ [ + # INFO: Formatters + # Reference: ./lua/dot/formatting.lua + + # TODO: Remove some formatters from Neovim's path and let them be provided + # by flake.nix in projects + + alejandra + gdtoolkit_4 + html-tidy + jq + libxml2 + mdfmt + prettierd + shellharden + shfmt + ] + ++ [ + # INFO: External dependencies + + go-grip # Reference: ./lua/dot/commands.lua#Grip markdown reader + yazi # Reference ./lua/dot/commands.lua#Yazi file manager + zf # Reference ./lua/dot/plugins.lua#telescope-zf-native.nvim + ]); in "--suffix PATH : ${binPath}"; }