1# TODO check that no license information gets lost
2{
3 callPackage,
4 config,
5 lib,
6 vimUtils,
7 vim,
8 llvmPackages,
9 neovimUtils,
10}:
11
12let
13
14 inherit (vimUtils.override { inherit vim; })
15 buildVimPlugin
16 ;
17
18 inherit (lib) extends;
19
20 initialPackages = self: { };
21
22 cocPlugins = callPackage ./cocPlugins.nix {
23 inherit buildVimPlugin;
24 };
25
26 luaPackagePlugins = callPackage ./luaPackagePlugins.nix {
27 inherit (neovimUtils) buildNeovimPlugin;
28 };
29
30 nodePackagePlugins = callPackage ./nodePackagePlugins.nix {
31 inherit buildVimPlugin;
32 };
33
34 nonGeneratedPlugins =
35 self: super:
36 let
37 root = ./non-generated;
38 call = name: callPackage (root + "/${name}") { };
39 in
40 lib.pipe root [
41 builtins.readDir
42 (lib.filterAttrs (_: type: type == "directory"))
43 (builtins.mapAttrs (name: _: call name))
44 ];
45
46 plugins = callPackage ./generated.nix {
47 inherit buildVimPlugin;
48 inherit (neovimUtils) buildNeovimPlugin;
49 };
50
51 corePlugins = callPackage ./corePlugins.nix { };
52
53 # TL;DR
54 # * Add your plugin to ./vim-plugin-names
55 # * run ./update.py
56 #
57 # If additional modifications to the build process are required,
58 # add to ./overrides.nix.
59 overrides = callPackage ./overrides.nix {
60 inherit llvmPackages;
61 };
62
63 aliases = if config.allowAliases then (import ./aliases.nix lib) else final: prev: { };
64in
65lib.pipe initialPackages [
66 (extends plugins)
67 (extends cocPlugins)
68 (extends luaPackagePlugins)
69 (extends nodePackagePlugins)
70 (extends nonGeneratedPlugins)
71 (extends corePlugins)
72 (extends overrides)
73 (extends aliases)
74 lib.makeExtensible
75]