_: pkgs:

rec {
  pinnedDeps = builtins.attrNames
    (builtins.removeAttrs pkgs.sources ["__functor"]);
  overridePinnedDeps = builder: pkgs.lib.genAttrs pinnedDeps builder;

  # Modifies a derivation with our source and version, keeping old build
  # rules. This will fail if build steps have changed, or if no build
  # rules are available upstream..
  overrideSource = name: pkgs.${name}.overrideAttrs (old: old // rec {
    name = "${name}-${version}";
    version = pkgs.sources.${name}.version or pkgs.sources.${name}.rev;
    src = pkgs.sources.${name};
  });
}