2024-05-01 20:06:17 +01:00
{ inputs , self }:
2024-05-15 19:53:51 +01:00
let
inherit ( inputs . nixpkgs ) legacyPackages ;
in
rec {
mkVimPlugin =
{ system }:
2024-03-18 20:34:42 +00:00
let
inherit ( pkgs ) vimUtils ;
inherit ( vimUtils ) buildVimPlugin ;
2024-02-22 23:23:12 +00:00
2024-03-18 20:34:42 +00:00
pkgs = legacyPackages . ${ system } ;
2024-05-15 19:53:51 +01:00
in
buildVimPlugin {
2024-01-25 00:30:00 +00:00
name = " o p d a v i e s " ;
postInstall = ''
rm - rf $ out/.envrc
2024-01-25 23:15:04 +00:00
rm - rf $ out/.gitignore
2024-02-22 23:23:12 +00:00
rm - rf $ out/.luacheckrc
2024-08-09 09:14:44 +01:00
rm - rf $ out/.markdownlint.yaml
2024-01-25 23:12:29 +00:00
rm - rf $ out/CHANGELOG.md
2024-01-25 00:30:00 +00:00
rm - rf $ out/flake.lock
rm - rf $ out/flake.nix
rm - rf $ out/lib
2024-08-09 09:14:44 +01:00
rm - rf $ out/overlays
2024-01-25 00:30:00 +00:00
rm - rf $ out/run
rm - rf $ out/stylua.toml
2024-08-09 09:14:44 +01:00
rm - rf $ out/todo
2024-01-25 00:30:00 +00:00
'' ;
src = ../. ;
} ;
2024-05-15 19:53:51 +01:00
mkNeovimPlugins =
{ system }:
2024-03-18 20:34:42 +00:00
let
pkgs = import inputs . nixpkgs {
inherit system ;
2024-02-13 21:47:56 +00:00
2024-03-18 20:34:42 +00:00
config . allowUnfree = true ;
2024-05-01 20:06:17 +01:00
overlays = [ ( import " ${ self } / o v e r l a y s / v i m - p l u g i n s . n i x " ) ] ;
2024-03-18 20:34:42 +00:00
} ;
2024-02-22 23:23:12 +00:00
2024-03-18 20:34:42 +00:00
opdavies-nvim = mkVimPlugin { inherit system ; } ;
2024-05-15 19:53:51 +01:00
in
2024-09-03 23:38:54 +01:00
with pkgs . vimPlugins ;
2024-05-15 19:53:51 +01:00
[
2024-09-03 23:38:54 +01:00
comment-nvim
conf-vim
dial-nvim
edit-alternate-vim
fidget-nvim
gitsigns-nvim
harpoon
impatient-nvim
mini-nvim
neodev-nvim
nvim-spectre
nvim-web-devicons
oil-nvim
refactoring-nvim
2024-09-13 22:04:20 +01:00
sort-nvim
2024-09-03 23:38:54 +01:00
standard-vim
tabline-vim
treesj
undotree
vim-abolish
vim-autoread
vim-eunuch
vim-highlightedyank
vim-just
vim-nix
vim-obsession
vim-pasta
vim-repeat
vim-sleuth
2024-09-16 00:00:46 +01:00
vim-sort-motion
2024-09-03 23:38:54 +01:00
vim-terraform
2024-09-15 23:11:22 +01:00
vim-textobj-indent
2024-09-03 23:38:54 +01:00
vim-textobj-user
vim-textobj-xmlattr
vim-unimpaired
vim-zoom
2024-03-18 20:34:42 +00:00
# Testing
2024-09-03 23:38:54 +01:00
vim-test
2024-03-18 20:34:42 +00:00
# Git
2024-09-03 23:38:54 +01:00
committia-vim
diffview-nvim
vim-fugitive
2024-03-18 20:34:42 +00:00
# Debugging
2024-09-03 23:38:54 +01:00
nvim-dap
nvim-dap-ui
nvim-dap-virtual-text
2024-03-18 20:34:42 +00:00
# Treesitter
2024-09-03 23:30:38 +01:00
( 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
]
) )
2024-09-03 23:38:54 +01:00
nvim-treesitter-context
nvim-treesitter-textobjects
2024-03-18 20:34:42 +00:00
# LSP, linting and formatting
2024-09-03 23:38:54 +01:00
conform-nvim
lsp-status-nvim
nvim-lint
nvim-lspconfig
2024-03-18 20:34:42 +00:00
# Completion
2024-09-03 23:38:54 +01:00
cmp-buffer
2024-09-04 18:36:35 +01:00
cmp-calc
2024-09-03 23:38:54 +01:00
cmp-cmdline
cmp-nvim-lsp
cmp-path
cmp-treesitter
cmp_luasnip
lspkind-nvim
nvim-cmp
2024-03-18 20:34:42 +00:00
# Snippets
2024-09-03 23:38:54 +01:00
friendly-snippets
luasnip
2024-03-18 20:34:42 +00:00
# Telescope
2024-09-03 23:38:54 +01:00
plenary-nvim
popup-nvim
telescope-frecency-nvim
telescope-fzf-native-nvim
telescope-live-grep-args-nvim
telescope-nvim
telescope-ui-select-nvim
2024-03-18 20:34:42 +00:00
# Databases
2024-09-03 23:38:54 +01:00
vim-dadbod
vim-dadbod-ui
vim-dadbod-completion
2024-03-18 20:34:42 +00:00
# Themes
2024-09-03 23:38:54 +01:00
catppuccin-nvim
2024-08-11 01:52:07 +01:00
2024-03-18 20:34:42 +00:00
# Configuration.
opdavies-nvim
] ;
2024-05-15 19:53:51 +01:00
mkExtraPackages =
{ system }:
2024-03-18 20:34:42 +00:00
let
inherit ( pkgs ) nodePackages lua54Packages php82Packages ;
pkgs = import inputs . nixpkgs {
inherit system ;
config . allowUnfree = true ;
} ;
2024-05-15 19:53:51 +01:00
in
2024-09-03 23:38:54 +01:00
with pkgs ;
2024-05-15 19:53:51 +01:00
[
2024-03-18 20:34:42 +00:00
# Languages
nodePackages . typescript
2024-09-03 23:38:54 +01:00
nodejs-slim
php81
2024-03-18 20:34:42 +00:00
# Language servers
2024-09-03 23:38:54 +01:00
gopls
lua-language-server
2024-03-18 20:34:42 +00:00
lua54Packages . luacheck
2024-09-03 23:38:54 +01:00
marksman
nil
2024-03-18 20:34:42 +00:00
nodePackages . " @ t a i l w i n d c s s / l a n g u a g e - s e r v e r "
nodePackages . bash-language-server
nodePackages . dockerfile-language-server-nodejs
nodePackages . intelephense
nodePackages . typescript-language-server
nodePackages . vls
nodePackages . volar
nodePackages . vscode-langservers-extracted
nodePackages . vue-language-server
nodePackages . yaml-language-server
2024-09-03 23:38:54 +01:00
phpactor
terraform-ls
2024-03-18 20:34:42 +00:00
# Formatters
2024-09-03 23:38:54 +01:00
black
eslint_d
nixfmt-rfc-style
nodePackages . prettier
stylua
yamlfmt
2024-03-18 20:34:42 +00:00
# Tools
2024-04-04 18:52:03 +01:00
hadolint
2024-09-03 23:38:54 +01:00
html-tidy
2024-03-18 20:34:42 +00:00
nodePackages . jsonlint
nodePackages . markdownlint-cli
php82Packages . php-codesniffer
php82Packages . phpstan
2024-09-03 23:38:54 +01:00
proselint
shellcheck
yamllint
2024-03-18 20:34:42 +00:00
] ;
2024-01-25 00:30:00 +00:00
mkExtraConfig = ''
lua < < EOF
require ' opdavies'
EOF
'' ;
2024-05-15 19:53:51 +01:00
mkNeovim =
{ system }:
2024-03-18 20:34:42 +00:00
let
2024-07-08 10:50:02 +01:00
inherit ( pkgs ) lib neovim ;
2024-03-18 20:34:42 +00:00
extraPackages = mkExtraPackages { inherit system ; } ;
pkgs = legacyPackages . ${ system } ;
start = mkNeovimPlugins { inherit system ; } ;
2024-05-15 19:53:51 +01:00
in
neovim . override {
2024-01-25 00:30:00 +00:00
configure = {
customRC = mkExtraConfig ;
2024-05-15 19:53:51 +01:00
packages . main = {
inherit start ;
} ;
2024-01-25 00:30:00 +00:00
} ;
2024-05-15 19:53:51 +01:00
extraMakeWrapperArgs = '' - - s u f f i x P A T H : " ${ lib . makeBinPath extraPackages } " '' ;
2024-01-25 00:30:00 +00:00
} ;
2024-05-15 19:53:51 +01:00
mkHomeManager =
{ system }:
2024-03-18 20:34:42 +00:00
let
extraConfig = mkExtraConfig ;
extraPackages = mkExtraPackages { inherit system ; } ;
plugins = mkNeovimPlugins { inherit system ; } ;
2024-05-15 19:53:51 +01:00
in
{
2024-03-18 20:34:42 +00:00
inherit extraConfig extraPackages plugins ;
2024-01-25 00:30:00 +00:00
2024-03-18 20:34:42 +00:00
enable = true ;
} ;
2024-01-25 00:30:00 +00:00
}