338 lines
7.3 KiB
Nix
338 lines
7.3 KiB
Nix
{
|
|
inputs,
|
|
pkgs,
|
|
pkgsUnstable,
|
|
...
|
|
}:
|
|
|
|
let
|
|
inherit (pkgs) fetchFromGitHub;
|
|
inherit (pkgs.vimUtils) buildVimPlugin;
|
|
|
|
# TODO: move these back into an overlay.
|
|
customVim = {
|
|
conf-vim = buildVimPlugin {
|
|
name = "conf-vim";
|
|
src = fetchFromGitHub {
|
|
owner = "tjdevries";
|
|
repo = "conf.vim";
|
|
rev = "master";
|
|
sha256 = "AjiTJsoim0BAnyfqk1IQzNsa6jhFM2+A66E7q9sJqz0=";
|
|
};
|
|
};
|
|
|
|
edit-alternate-vim = buildVimPlugin {
|
|
name = "edit-alternate-vim";
|
|
src = fetchFromGitHub {
|
|
owner = "tjdevries";
|
|
repo = "edit_alternate.vim";
|
|
rev = "master";
|
|
sha256 = "mEKnqYAhgrdxPRoKf4S4yYecdFIHGg8bDxpqPuC1+S4=";
|
|
};
|
|
};
|
|
|
|
nvim-tmux-navigation = buildVimPlugin {
|
|
name = "nvim-tmux-navigation";
|
|
src = fetchFromGitHub {
|
|
owner = "alexghergh";
|
|
repo = "nvim-tmux-navigation";
|
|
rev = "4898c98702954439233fdaf764c39636681e2861";
|
|
sha256 = "sha256-CxAgQSbOrg/SsQXupwCv8cyZXIB7tkWO+Y6FDtoR8xk=";
|
|
};
|
|
};
|
|
|
|
standard-vim = buildVimPlugin {
|
|
name = "standard-vim";
|
|
src = fetchFromGitHub {
|
|
owner = "tjdevries";
|
|
repo = "standard.vim";
|
|
rev = "master";
|
|
sha256 = "9VwkvV1Dv6cE4uDkPp36DozjWJOclDR883yDMYw000E=";
|
|
};
|
|
};
|
|
|
|
vim-autoread = buildVimPlugin {
|
|
name = "vim-autoread";
|
|
src = fetchFromGitHub {
|
|
owner = "djoshea";
|
|
repo = "vim-autoread";
|
|
rev = "24061f84652d768bfb85d222c88580b3af138dab";
|
|
sha256 = "fSADjNt1V9jgAPjxggbh7Nogcxyisi18KaVve8j+c3w=";
|
|
};
|
|
};
|
|
|
|
vim-textobj-indent = buildVimPlugin {
|
|
name = "vim-textobj-indent";
|
|
src = fetchFromGitHub {
|
|
owner = "kana";
|
|
repo = "vim-textobj-indent";
|
|
rev = "deb76867c302f933c8f21753806cbf2d8461b548";
|
|
sha256 = "oFzUPG+IOkbKZ2gU/kduQ3G/LsLDlEjFhRP0BHBE+1Q=";
|
|
};
|
|
};
|
|
|
|
toggle-checkbox-nvim = buildVimPlugin {
|
|
name = "toggle-checkbox-nvim";
|
|
src = fetchFromGitHub {
|
|
owner = "opdavies";
|
|
repo = "toggle-checkbox.nvim";
|
|
rev = "main";
|
|
sha256 = "4YSEagQnLK5MBl2z53e6sOBlCDm220GYVlc6A+HNywg=";
|
|
};
|
|
};
|
|
|
|
vim-heritage = buildVimPlugin {
|
|
name = "vim-heritage";
|
|
src = fetchFromGitHub {
|
|
owner = "jessarcher";
|
|
repo = "vim-heritage";
|
|
rev = "cffa05c78c0991c998adc4504d761b3068547db6";
|
|
sha256 = "Lebe5V1XFxn4kSZ+ImZ69Vst9Nbc0N7eA9IzOCijFS0=";
|
|
};
|
|
};
|
|
|
|
vim-textobj-xmlattr = buildVimPlugin {
|
|
name = "vim-textobj-xmlattr";
|
|
src = fetchFromGitHub {
|
|
owner = "whatyouhide";
|
|
repo = "vim-textobj-xmlattr";
|
|
rev = "694a297f1d75fd527e87da9769f3c6519a87ebb1";
|
|
sha256 = "+91FVP95oh00flINdltqx6qJuijYo56tHIh3J098G2Q=";
|
|
};
|
|
};
|
|
|
|
tabline-vim = buildVimPlugin {
|
|
name = "tabline-vim";
|
|
src = fetchFromGitHub {
|
|
owner = "mkitt";
|
|
repo = "tabline.vim";
|
|
rev = "69c9698a3240860adaba93615f44778a9ab724b4";
|
|
sha256 = "51b8PxyKqBdeIvmmZyF2hpMBjkyrlZDdTB1opr5JZ7Y=";
|
|
};
|
|
};
|
|
|
|
vim-caser = buildVimPlugin {
|
|
name = "vim-caser";
|
|
src = fetchFromGitHub {
|
|
owner = "arthurxavierx";
|
|
repo = "vim-caser";
|
|
rev = "6bc9f41d170711c58e0157d882a5fe8c30f34bf6";
|
|
sha256 = "PXAY01O/cHvAdWx3V/pyWFeiV5qJGvLcAKhl5DQc0Ps=";
|
|
};
|
|
};
|
|
|
|
vim-zoom = buildVimPlugin {
|
|
name = "vim-zoom";
|
|
src = fetchFromGitHub {
|
|
owner = "dhruvasagar";
|
|
repo = "vim-zoom";
|
|
rev = "01c737005312c09e0449d6518decf8cedfee32c7";
|
|
sha256 = "/ADzScsG0u6RJbEtfO23Gup2NYdhPkExqqOPVcQa7aQ=";
|
|
};
|
|
};
|
|
};
|
|
in
|
|
{
|
|
programs.neovim = {
|
|
enable = true;
|
|
|
|
package = pkgsUnstable.neovim-unwrapped;
|
|
|
|
plugins = with pkgs.vimPlugins; [
|
|
comment-nvim
|
|
dial-nvim
|
|
fidget-nvim
|
|
gitsigns-nvim
|
|
harpoon
|
|
impatient-nvim
|
|
mini-nvim
|
|
neodev-nvim
|
|
nvim-spectre
|
|
nvim-web-devicons
|
|
oil-nvim
|
|
refactoring-nvim
|
|
sort-nvim
|
|
treesj
|
|
undotree
|
|
vim-abolish
|
|
vim-eunuch
|
|
vim-highlightedyank
|
|
vim-just
|
|
vim-nix
|
|
vim-obsession
|
|
vim-pasta
|
|
vim-repeat
|
|
vim-sleuth
|
|
vim-sort-motion
|
|
vim-terraform
|
|
vim-textobj-user
|
|
vim-unimpaired
|
|
|
|
customVim.conf-vim
|
|
customVim.edit-alternate-vim
|
|
customVim.nvim-tmux-navigation
|
|
customVim.standard-vim
|
|
customVim.tabline-vim
|
|
customVim.vim-autoread
|
|
customVim.vim-textobj-indent
|
|
customVim.vim-textobj-xmlattr
|
|
customVim.vim-zoom
|
|
|
|
# Testing
|
|
vim-test
|
|
|
|
# Git
|
|
committia-vim
|
|
diffview-nvim
|
|
vim-fugitive
|
|
|
|
# Debugging
|
|
nvim-dap
|
|
nvim-dap-ui
|
|
nvim-dap-virtual-text
|
|
|
|
# Treesitter
|
|
(pkgs.vimPlugins.nvim-treesitter.withPlugins (
|
|
plugins: with plugins; [
|
|
bash
|
|
comment
|
|
css
|
|
csv
|
|
dockerfile
|
|
gitattributes
|
|
gitignore
|
|
go
|
|
html
|
|
javascript
|
|
json
|
|
kdl
|
|
lua
|
|
luadoc
|
|
make
|
|
markdown
|
|
markdown_inline
|
|
nix
|
|
php
|
|
phpdoc
|
|
query
|
|
rst
|
|
scss
|
|
sql
|
|
terraform
|
|
twig
|
|
typescript
|
|
vim
|
|
vimdoc
|
|
vue
|
|
xml
|
|
yaml
|
|
]
|
|
))
|
|
nvim-treesitter-context
|
|
nvim-treesitter-textobjects
|
|
|
|
# LSP, linting and formatting
|
|
conform-nvim
|
|
lsp-status-nvim
|
|
nvim-lint
|
|
nvim-lspconfig
|
|
|
|
# Completion
|
|
cmp-buffer
|
|
cmp-calc
|
|
cmp-cmdline
|
|
cmp-nvim-lsp
|
|
cmp-path
|
|
cmp-treesitter
|
|
cmp_luasnip
|
|
lspkind-nvim
|
|
nvim-cmp
|
|
|
|
# Snippets
|
|
friendly-snippets
|
|
luasnip
|
|
|
|
# Telescope
|
|
plenary-nvim
|
|
popup-nvim
|
|
telescope-frecency-nvim
|
|
telescope-fzf-native-nvim
|
|
telescope-live-grep-args-nvim
|
|
telescope-nvim
|
|
telescope-ui-select-nvim
|
|
|
|
# Databases
|
|
vim-dadbod
|
|
vim-dadbod-ui
|
|
vim-dadbod-completion
|
|
|
|
# Themes
|
|
catppuccin-nvim
|
|
|
|
# Configuration.
|
|
inputs.self.packages.${pkgs.system}.opdavies-nvim
|
|
];
|
|
|
|
extraLuaConfig = ''
|
|
if vim.loader then
|
|
vim.loader.enable()
|
|
end
|
|
|
|
require "opdavies"
|
|
'';
|
|
|
|
extraPackages = with pkgs; [
|
|
# Languages
|
|
nodePackages.typescript
|
|
nodejs-slim
|
|
php81
|
|
|
|
# Language servers
|
|
gopls
|
|
lua-language-server
|
|
lua54Packages.luacheck
|
|
marksman
|
|
nixd
|
|
nodePackages."@tailwindcss/language-server"
|
|
nodePackages.bash-language-server
|
|
nodePackages.dockerfile-language-server-nodejs
|
|
nodePackages.intelephense
|
|
nodePackages.typescript-language-server
|
|
nodePackages.vls
|
|
nodePackages.vscode-langservers-extracted
|
|
nodePackages.vue-language-server
|
|
nodePackages.yaml-language-server
|
|
phpactor
|
|
terraform-ls
|
|
|
|
# Formatters
|
|
black
|
|
eslint_d
|
|
nixfmt-rfc-style
|
|
nodePackages.prettier
|
|
stylua
|
|
yamlfmt
|
|
|
|
# Tools
|
|
hadolint
|
|
html-tidy
|
|
nodePackages.jsonlint
|
|
nodePackages.markdownlint-cli
|
|
php82Packages.php-codesniffer
|
|
php82Packages.phpstan
|
|
proselint
|
|
shellcheck
|
|
yamllint
|
|
];
|
|
};
|
|
|
|
home.file.".markdownlint.yaml".text = ''
|
|
default: true
|
|
|
|
line-length: false
|
|
|
|
no-duplicate-heading:
|
|
siblings_only: true
|
|
'';
|
|
}
|