{ fetchFromGitHub, buildNeovimPlugin }: let plugins = builtins.fromJSON (builtins.readFile ./sources.json); overrides = { "tpope/vim-fugitive" = { patches = [ ./fugitive-origin-head.patch ]; }; "leafgarland/typescript-vim" = { # make compiler build entire project patches = [ ./typescript-vim-compiler.patch ]; }; "nvim-telescope/telescope-fzf-native.nvim" = { dontBuild = false; }; }; buildPlugin = name: spec: let nameParts = builtins.split "/" name; owner = builtins.head nameParts; repo = builtins.elemAt nameParts 2; in buildNeovimPlugin ({ name = repo; src = fetchFromGitHub (spec // { inherit owner repo; }); dontBuild = true; } // (overrides.${name} or {})); in builtins.mapAttrs buildPlugin plugins