{ config, pkgs, lib, ... }: let psCfg = config.pub-solar; cfg = config.pub-solar.terminal-life; xdg = config.home-manager.users."${psCfg.user.name}".xdg; preview-file = pkgs.writeShellScriptBin "preview-file" (import ./preview-file.nix pkgs); in { enable = true; viAlias = true; vimAlias = true; vimdiffAlias = true; withNodeJs = true; withRuby = true; withPython3 = true; extraPackages = with pkgs; lib.mkIf (cfg.full) [ ansible-language-server ccls gopls nixd nodejs nodePackages.bash-language-server nodePackages.dockerfile-language-server-nodejs nodePackages.svelte-language-server nodePackages.typescript nodePackages.typescript-language-server nodePackages.vim-language-server nodePackages.vue-language-server nodePackages.vscode-langservers-extracted nodePackages.yaml-language-server python3Packages.python-lsp-server python3Full rust-analyzer solargraph terraform-ls universal-ctags ]; plugins = with pkgs.vimPlugins; lib.mkIf cfg.full [ pkgs.vimPlugins.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 # Search functionality behind :Ack ack-vim # 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 # Get sudo in vim; :SudaWrite suda-vim # Undo history etc. per project vim-workspace-nvfetcher # JSON schemas SchemaStore-nvim # Work with tags files vim-gutentags # 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 # FZF fuzzy finder fzf-vim fzfWrapper # 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 # emmet for vim: http://emmet.io/ emmet-vim # Caddyfile syntax support for Vim vim-caddyfile-nvfetcher ]; 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 ./quickfixopenall.vim) (builtins.readFile ./lsp.vim) (builtins.readFile ./filetypes.vim) '' " fzf with file preview command! -bang -nargs=? -complete=dir Files \ call fzf#vim#files(, { 'options': ['--keep-right', '--cycle', '--layout', 'reverse', '--preview', '${preview-file}/bin/preview-file {}'] }, 0) '' ]; }