os/modules/terminal-life/nvim/default.nix

219 lines
4.6 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
[
(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
[ ]
)
);
}