{ config, pkgs, lib, ... }: let psCfg = config.pub-solar; cfg = config.pub-solar.terminal-life; xdg = config.home-manager.users."${psCfg.user.name}".xdg; in { enable = true; viAlias = true; vimAlias = true; vimdiffAlias = true; withNodeJs = true; withRuby = true; withPython3 = true; extraPackages = with pkgs; [ ripgrep nixd universal-ctags # ansible-language-server # clang-tools # gopls nodePackages.bash-language-server # nodePackages.svelte-language-server # nodePackages.typescript # nodePackages.typescript-language-server # nodePackages.vue-language-server nodePackages.vscode-langservers-extracted # nginx-language-server # lua-language-server # cmake-language-server # vim-language-server yaml-language-server nodePackages.dockerfile-language-server-nodejs docker-compose-language-service # rust-analyzer # cargo # solargraph # terraform-ls ]; plugins = with pkgs.vimPlugins; [ # The status bar in the bottom of the screen with the mode indication and file location vim-airline # Automatically load editorconfig files in repos to configure nvim settings editorconfig-vim # File browser. Use n to access nnn-vim # Highlight characters when using f, F, t, and T quick-scope # Undo history etc. per project vim-workspace-nvfetcher # Neovim colorschemes / themes sonokai vim-hybrid-material vim-airline-themes vim-apprentice-nvfetcher # Git integrations # A Git wrapper so awesome, it should be illegal fugitive # Shows git diff markers in the sign column vim-gitgutter # GitHub extension for fugitive vim-rhubarb # Ease your git workflow within Vim vimagit-nvfetcher # Telescope fuzzy finder telescope-nvim telescope-fzf-native-nvim # Make the yanked region apparent vim-highlightedyank # :Beautify Code beautifier vim-beautify-nvfetcher # Unload, delete or wipe a buffer without closing the window vim-bufkill # Defaults everyone can agree on vim-sensible # Single tabpage interface for easily cycling through diffs for all modified files diffview-nvim # Work with tags files vim-gutentags ] ++ ( if cfg.full then [ (pkgs.vimPlugins.nvim-treesitter.withPlugins (p: [ p.csv p.ini p.json p.json5 p.markdown p.nix p.toml p.xml p.yaml p.css p.graphql p.html p.javascript p.scss p.tsx p.typescript p.vue p.c p.cpp p.go p.gomod p.gosum p.haskell p.lua p.php p.python p.requirements p.ruby p.rust p.vim p.vimdoc p.passwd p.sql p.diff p.gitcommit p.gitignore p.git_config p.gitattributes p.git_rebase p.ssh_config p.ledger p.bash p.cmake p.make p.meson p.mermaid p.ninja p.dockerfile p.hcl p.helm p.terraform ])) # Dependencies for nvim-lspconfig nvim-cmp cmp-nvim-lsp cmp_luasnip luasnip # Quickstart configs for neovim LSP lsp_extensions-nvim nvim-lspconfig # Collaborative editing in Neovim using built-in capabilities instant-nvim-nvfetcher # Caddyfile syntax support for Vim vim-caddyfile-nvfetcher # JSON schemas SchemaStore-nvim ] else [ ] ); extraConfig = builtins.concatStringsSep "\n" ( [ '' " Persistent undo set undofile set undodir=${xdg.cacheHome}/nvim/undo set backupdir=${xdg.dataHome}/nvim/backup set directory=${xdg.dataHome}/nvim/swap/ '' (builtins.readFile ./init.vim) (builtins.readFile ./plugins.vim) (builtins.readFile ./clipboard.vim) (builtins.readFile ./ui.vim) (builtins.readFile ./lastplace.lua) ] ++ ( if cfg.full then [ (builtins.readFile ./lsp.vim) (builtins.readFile ./cmp.vim) ] else [ ] ) ); }