2024-05-01 20:06:17 +01:00
{ inputs , self }:
2024-03-18 20:34:42 +00:00
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
2024-05-01 20:06:17 +01:00
inherit ( pkgs ) vimPlugins ;
2024-03-18 20:34:42 +00:00
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-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 ; } ;
in [
2024-05-01 20:06:17 +01:00
vimPlugins . nvim-tmux-navigation
vimPlugins . tabline-vim
vimPlugins . vim-caser
vimPlugins . vim-heritage
vimPlugins . vim-textobj-xmlattr
vimPlugins . vim-zoom
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-04-24 21:35:35 +01:00
vimPlugins . oil-nvim
2024-03-18 20:34:42 +00:00
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-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-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-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
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 . 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
}