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
2024-05-01 20:06:17 +01:00
inherit ( pkgs ) vimPlugins ;
2024-02-13 21:47:56 +00:00
2024-03-18 20:34:42 +00:00
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
pkgs2305 = inputs . nixpkgs-2305 . legacyPackages . ${ system } ;
opdavies-nvim = mkVimPlugin { inherit system ; } ;
2024-05-15 19:53:51 +01:00
in
[
2024-05-01 20:06:17 +01:00
vimPlugins . tabline-vim
Replace `vim-caser` with `vim-abolish`
See https://github.com/tpope/vim-abolish.
From the docs:
> Want to turn `fooBar` into `foo_bar`? Press `crs` (coerce to
snake_case). MixedCase (`crm`), camelCase (`crc`), UPPER_CASE (`cru`),
dash-case (`cr-`), and dot.case (`cr.`) are all just 3 keystrokes away.
The substitution functionality looks interesting, too:
> From a conceptual level, one way to think about how this substitution
works is to imagine that in the braces you are declaring the
requirements for turning that word from singular to plural. In the
facility example, the same base letters in both the singular and plural
form of the word are `facilit` To turn "facility" to a plural word you
must change the `y` to `ies` so you specify `{y,ies}` in the braces.
> To convert the word "building" from singular to plural, again look at
the common letters between the singular and plural forms: `building.` In
this case you do not need to remove any letter from building to turn it
into plural form and you need to add an `s` so the braces should be
`{,s}.`
2024-06-08 13:00:00 +01:00
vimPlugins . vim-abolish
2024-05-01 20:06:17 +01:00
vimPlugins . vim-textobj-xmlattr
vimPlugins . vim-zoom
2024-03-18 20:34:42 +00:00
2024-05-08 00:06:50 +01:00
inputs . nixpkgs-2305 . legacyPackages . ${ system } . vimPlugins . rest-nvim
2024-03-18 20:34:42 +00:00
vimPlugins . comment-nvim
vimPlugins . dial-nvim
vimPlugins . fidget-nvim
vimPlugins . gitsigns-nvim
vimPlugins . harpoon
vimPlugins . impatient-nvim
vimPlugins . mini-nvim
vimPlugins . neodev-nvim
vimPlugins . nvim-web-devicons
2024-05-15 19:11:01 +01:00
vimPlugins . oil-nvim
2024-03-18 20:34:42 +00:00
vimPlugins . refactoring-nvim
vimPlugins . undotree
vimPlugins . vim-eunuch
vimPlugins . vim-highlightedyank
vimPlugins . vim-just
vimPlugins . vim-nix
vimPlugins . nvim-spectre
2024-06-21 02:35:00 +01:00
vimPlugins . vim-autoread
2024-03-18 20:34:42 +00:00
vimPlugins . vim-obsession
vimPlugins . vim-pasta
vimPlugins . vim-repeat
vimPlugins . vim-sleuth
vimPlugins . vim-terraform
vimPlugins . vim-textobj-user
2024-06-12 19:42:13 +01:00
vimPlugins . vim-tmux-navigator
2024-03-18 20:34:42 +00:00
vimPlugins . vim-unimpaired
2024-05-01 20:35:59 +01:00
vimPlugins . treesj
2024-03-18 20:34:42 +00:00
# Testing
vimPlugins . vim-test
2024-03-26 23:39:37 +00:00
vimPlugins . vimux
2024-03-18 20:34:42 +00:00
# Git
vimPlugins . committia-vim
vimPlugins . diffview-nvim
2024-04-17 20:11:56 +01:00
vimPlugins . vim-fugitive
2024-03-18 20:34:42 +00:00
# Debugging
vimPlugins . nvim-dap
vimPlugins . nvim-dap-ui
vimPlugins . nvim-dap-virtual-text
# Treesitter
( vimPlugins . nvim-treesitter . withPlugins ( p : [
2024-03-17 16:00:13 +00:00
p . bash
p . comment
p . css
p . csv
p . dockerfile
p . gitattributes
p . gitignore
p . go
p . html
p . javascript
p . json
2024-04-24 18:13:45 +01:00
p . just
2024-08-24 02:57:23 +01:00
p . kdl
2024-03-17 16:00:13 +00:00
p . lua
p . luadoc
p . make
p . markdown
p . markdown_inline
p . nix
p . php
p . phpdoc
p . query
p . rst
p . scss
p . sql
p . terraform
p . tmux
p . twig
p . typescript
p . vim
p . vimdoc
p . vue
p . xml
p . yaml
] ) )
2024-03-18 20:34:42 +00:00
vimPlugins . nvim-treesitter-context
vimPlugins . nvim-treesitter-textobjects
# LSP, linting and formatting
vimPlugins . conform-nvim
vimPlugins . lsp-status-nvim
vimPlugins . nvim-lint
vimPlugins . nvim-lspconfig
# Completion
pkgs2305 . vimPlugins . phpactor
vimPlugins . cmp-buffer
vimPlugins . cmp-cmdline
vimPlugins . cmp-nvim-lsp
vimPlugins . cmp-path
vimPlugins . cmp-treesitter
vimPlugins . cmp_luasnip
vimPlugins . lspkind-nvim
vimPlugins . nvim-cmp
# Snippets
vimPlugins . friendly-snippets
vimPlugins . luasnip
# Telescope
vimPlugins . plenary-nvim
vimPlugins . popup-nvim
vimPlugins . telescope-frecency-nvim
vimPlugins . telescope-fzf-native-nvim
vimPlugins . telescope-live-grep-args-nvim
vimPlugins . telescope-nvim
vimPlugins . telescope-ui-select-nvim
# Databases
vimPlugins . vim-dadbod
vimPlugins . vim-dadbod-ui
vimPlugins . vim-dadbod-completion
vimPlugins . markdown-preview-nvim
# # Markdown
# {
# plugin = vimPlugins.markdown-preview-nvim;
# type = "lua";
# config = ''
# vim.g.mkdp_refresh_slow = 1
# '';
# }
# Themes
vimPlugins . catppuccin-nvim
2024-08-11 01:52:07 +01:00
vimPlugins . conf-vim
vimPlugins . edit-alternate-vim
vimPlugins . standard-vim
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-04-04 18:52:03 +01:00
inherit ( pkgs ) hadolint ;
2024-05-15 19:53:51 +01:00
in
[
2024-03-18 20:34:42 +00:00
# Languages
nodePackages . typescript
2024-05-09 18:57:18 +01:00
pkgs . nodejs-slim
2024-03-18 20:34:42 +00:00
pkgs . php81
# Language servers
lua54Packages . luacheck
2024-04-19 22:12:48 +01:00
pkgs . marksman
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
pkgs . gopls
pkgs . lua-language-server
2024-03-19 14:19:20 +00:00
pkgs . nil
2024-03-18 20:34:42 +00:00
pkgs . phpactor
pkgs . terraform-ls
# Formatters
pkgs . black
pkgs . eslint_d
2024-05-15 19:53:51 +01:00
pkgs . nixfmt-rfc-style
2024-03-18 20:34:42 +00:00
pkgs . nodePackages . prettier
pkgs . stylua
2024-05-09 13:00:52 +01:00
pkgs . yamlfmt
2024-03-18 20:34:42 +00:00
# Tools
2024-04-04 18:52:03 +01:00
hadolint
2024-03-18 20:34:42 +00:00
nodePackages . jsonlint
nodePackages . markdownlint-cli
php82Packages . php-codesniffer
php82Packages . phpstan
pkgs . html-tidy
pkgs . proselint
pkgs . shellcheck
2024-05-09 13:00:52 +01:00
pkgs . 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
}