{ 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 [ nvim-treesitter.withAllGrammars # 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 [])); }