160 lines
3.5 KiB
Nix
160 lines
3.5 KiB
Nix
{
|
|
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 <leader>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
|
|
[ ]
|
|
)
|
|
);
|
|
}
|