2024-03-18 20:34:42 +00:00
{ inputs }:
let inherit ( inputs . nixpkgs ) legacyPackages ;
2024-02-13 21:47:56 +00:00
in rec {
2024-03-18 20:34:42 +00:00
mkVimPlugin = { system }:
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 } ;
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-03-29 01:25:30 +00:00
rm - rf $ out/.tmuxinator.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
2024-02-22 23:23:12 +00:00
rm - rf $ out/justfile
2024-01-25 00:30:00 +00:00
rm - rf $ out/lib
rm - rf $ out/run
rm - rf $ out/stylua.toml
'' ;
src = ../. ;
} ;
2024-03-18 20:34:42 +00:00
mkNeovimPlugins = { system }:
let
inherit ( pkgs ) php82Packages vimPlugins ;
inherit ( pkgs . vimUtils ) buildVimPlugin ;
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-02-22 23:23:12 +00:00
2024-03-18 20:34:42 +00:00
pkgs2305 = inputs . nixpkgs-2305 . legacyPackages . ${ system } ;
customVim = {
nvim-tmux-navigation = buildVimPlugin {
name = " n v i m - t m u x - n a v i g a t i o n " ;
src = pkgs . fetchFromGitHub {
owner = " a l e x g h e r g h " ;
repo = " n v i m - t m u x - n a v i g a t i o n " ;
rev = " 4 8 9 8 c 9 8 7 0 2 9 5 4 4 3 9 2 3 3 f d a f 7 6 4 c 3 9 6 3 6 6 8 1 e 2 8 6 1 " ;
sha256 = " C x A g Q S b O r g / S s Q X u p w C v 8 c y Z X I B 7 t k W O + Y 6 F D t o R 8 x k = " ;
} ;
2024-02-27 17:32:24 +00:00
} ;
2024-03-18 20:34:42 +00:00
tabline-vim = buildVimPlugin {
name = " t a b l i n e - v i m " ;
src = pkgs . fetchFromGitHub {
owner = " m k i t t " ;
repo = " t a b l i n e . v i m " ;
rev = " 6 9 c 9 6 9 8 a 3 2 4 0 8 6 0 a d a b a 9 3 6 1 5 f 4 4 7 7 8 a 9 a b 7 2 4 b 4 " ;
sha256 = " 5 1 b 8 P x y K q B d e I v m m Z y F 2 h p M B j k y r l Z D d T B 1 o p r 5 J Z 7 Y = " ;
} ;
2024-01-27 21:56:03 +00:00
} ;
2024-03-18 20:34:42 +00:00
vim-caser = buildVimPlugin {
name = " v i m - c a s e r " ;
src = pkgs . fetchFromGitHub {
owner = " a r t h u r x a v i e r x " ;
repo = " v i m - c a s e r " ;
rev = " 6 b c 9 f 4 1 d 1 7 0 7 1 1 c 5 8 e 0 1 5 7 d 8 8 2 a 5 f e 8 c 3 0 f 3 4 b f 6 " ;
sha256 = " P X A Y 0 1 O / c H v A d W x 3 V / p y W F e i V 5 q J G v L c A K h l 5 D Q c 0 P s = " ;
} ;
2024-01-27 21:56:03 +00:00
} ;
2024-03-18 20:34:42 +00:00
vim-heritage = buildVimPlugin {
name = " v i m - h e r i t a g e " ;
src = pkgs . fetchFromGitHub {
owner = " j e s s a r c h e r " ;
repo = " v i m - h e r i t a g e " ;
rev = " c f f a 0 5 c 7 8 c 0 9 9 1 c 9 9 8 a d c 4 5 0 4 d 7 6 1 b 3 0 6 8 5 4 7 d b 6 " ;
sha256 = " L e b e 5 V 1 X F x n 4 k S Z + I m Z 6 9 V s t 9 N b c 0 N 7 e A 9 I z O C i j F S 0 = " ;
} ;
2024-01-25 00:30:00 +00:00
} ;
2024-03-18 20:34:42 +00:00
vim-textobj-xmlattr = buildVimPlugin {
name = " v i m - t e x t o b j - x m l a t t r " ;
src = pkgs . fetchFromGitHub {
owner = " w h a t y o u h i d e " ;
repo = " v i m - t e x t o b j - x m l a t t r " ;
rev = " 6 9 4 a 2 9 7 f 1 d 7 5 f d 5 2 7 e 8 7 d a 9 7 6 9 f 3 c 6 5 1 9 a 8 7 e b b 1 " ;
sha256 = " + 9 1 F V P 9 5 o h 0 0 f l I N d l t q x 6 q J u i j Y o 5 6 t H I h 3 J 0 9 8 G 2 Q = " ;
} ;
2024-01-25 00:30:00 +00:00
} ;
2024-03-18 20:34:42 +00:00
vim-zoom = buildVimPlugin {
name = " v i m - z o o m " ;
src = pkgs . fetchFromGitHub {
owner = " d h r u v a s a g a r " ;
repo = " v i m - z o o m " ;
rev = " 0 1 c 7 3 7 0 0 5 3 1 2 c 0 9 e 0 4 4 9 d 6 5 1 8 d e c f 8 c e d f e e 3 2 c 7 " ;
sha256 = " / A D z S c s G 0 u 6 R J b E t f O 2 3 G u p 2 N Y d h P k E x q q O P V c Q a 7 a Q = " ;
} ;
2024-01-25 00:30:00 +00:00
} ;
} ;
2024-03-18 20:34:42 +00:00
opdavies-nvim = mkVimPlugin { inherit system ; } ;
2024-04-02 01:20:37 +01:00
inherit ( vimPlugins ) treesj ;
2024-03-18 20:34:42 +00:00
in [
customVim . nvim-tmux-navigation
customVim . tabline-vim
customVim . vim-caser
customVim . vim-heritage
customVim . vim-textobj-xmlattr
customVim . vim-zoom
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
vimPlugins . refactoring-nvim
vimPlugins . rest-nvim
vimPlugins . undotree
vimPlugins . vim-eunuch
vimPlugins . vim-highlightedyank
vimPlugins . vim-just
vimPlugins . vim-nix
vimPlugins . nvim-spectre
vimPlugins . vim-obsession
vimPlugins . vim-pasta
vimPlugins . vim-repeat
vimPlugins . vim-sleuth
vimPlugins . vim-terraform
vimPlugins . vim-textobj-user
vimPlugins . vim-unimpaired
# {
# plugin = vimPlugins.vim-sort-motion;
# type = "lua";
# config = ''
# vim.g.sort_motion_flags = "ui"
# '';
# }
vimPlugins . vim-sort-motion
2024-04-02 01:20:37 +01:00
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
# 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
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-file-browser-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
# Configuration.
opdavies-nvim
] ;
mkExtraPackages = { system }:
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-03-18 20:34:42 +00:00
in [
# Languages
nodePackages . typescript
pkgs . php81
# Language servers
lua54Packages . luacheck
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 . alejandra
pkgs . black
pkgs . eslint_d
2024-03-31 10:11:34 +01:00
pkgs . nixfmt
2024-03-18 20:34:42 +00:00
pkgs . nodePackages . prettier
pkgs . stylua
# 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-01-25 00:30:00 +00:00
mkExtraConfig = ''
lua < < EOF
require ' opdavies'
EOF
'' ;
2024-03-18 20:34:42 +00:00
mkNeovim = { system }:
let
inherit ( pkgs ) lib neovim ;
extraPackages = mkExtraPackages { inherit system ; } ;
pkgs = legacyPackages . ${ system } ;
start = mkNeovimPlugins { inherit system ; } ;
in neovim . override {
2024-01-25 00:30:00 +00:00
configure = {
customRC = mkExtraConfig ;
2024-03-18 20:34:42 +00:00
packages . main = { inherit start ; } ;
2024-01-25 00:30:00 +00:00
} ;
2024-03-18 20:34:42 +00:00
extraMakeWrapperArgs =
'' - - s u f f i x P A T H : " ${ lib . makeBinPath extraPackages } " '' ;
2024-01-25 00:30:00 +00:00
} ;
2024-03-18 20:34:42 +00:00
mkHomeManager = { system }:
let
extraConfig = mkExtraConfig ;
extraPackages = mkExtraPackages { inherit system ; } ;
plugins = mkNeovimPlugins { inherit system ; } ;
in {
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
}