makeExtensibleAsOverlay

I think there was an issue for this in nixpkgs…

But, if you like overlay experiments, take a look at overlays: (partially) recursive merge by danbst · Pull Request #54266 · NixOS/nixpkgs · GitHub
It allows extending/overriding python packages without packageOverrides:

self: super: {
  _merge_python27 = true;       # can be moved into super overlay
  python27._merge_pkgs = true;  # can be moved into super overlay

  python27.pkgs.pytest = self.python27.pkgs.pytest_37;
}

NBP brainstormed the idea of creating a small module under _merge attribute for each overlay, to guide merge/extension semantics.