{ fetchFromGitHub, fetchpatch, buildNeovimPlugin }: let plugins = builtins.fromJSON (builtins.readFile ./sources.json); overrides = { "nvim-telescope/telescope-fzf-native.nvim" = { dontBuild = false; }; "jose-elias-alvarez/typescript.nvim" = { patches = [ ./typescript-nvim-tsserver.patch ]; }; }; buildPlugin = name: spec: let nameParts = builtins.split "/" name; owner = builtins.head nameParts; repo = builtins.elemAt nameParts 2; in buildNeovimPlugin ({ name = repo; src = fetchFromGitHub { inherit owner repo; inherit (spec) rev sha256; }; passthru = { optional = spec.optional or false; }; dontBuild = true; } // (overrides.${name} or {})); in builtins.mapAttrs buildPlugin plugins