self: super:
let
  fallback-git-cache = self.python3Packages.callPackage (
    {
      buildPythonPackage,
      fetchgit,
      setuptools,
      git,
      backoff,
      mypy,
    }:
    buildPythonPackage rec {
      pname = "git-cache";
      version = "1.5.0";
      src = fetchgit {
        url = "https://git.scottworley.com/pub/git/git-cache";
        rev = "v${version}";
        hash = "sha256-g4TS/zX3e29Q3ThsCAX2wLLlYbi8fdux5uqAc+b/Oww=";
      };
      pyproject = true;
      build-system = [ setuptools ];
      propagatedBuildInputs = [ backoff ];
      nativeCheckInputs = [
        git
        mypy
      ];
      doCheck = true;
      checkPhase = "./test.sh";
    }
  ) { };

  fallback-pinch = self.python3Packages.callPackage (
    {
      buildPythonPackage,
      fetchgit,
      setuptools,
      nix,
      git,
      mypy,
      git-cache,
    }:
    buildPythonPackage rec {
      pname = "pinch";
      version = "3.3.3";
      src = fetchgit {
        url = "https://git.scottworley.com/pub/git/pinch";
        rev = "v${version}";
        hash = "sha256-+SdKvGPofOJn0lBOSP4SH3i2WGpBuEXmLzzpYD1epgc=";
      };
      pyproject = true;
      build-system = [ setuptools ];
      propagatedBuildInputs = [ git-cache ];
      nativeCheckInputs = [
        nix
        git
        mypy
      ];
      doCheck = true;
      checkPhase = "./test.sh";
    }
  ) { git-cache = self.python3Packages.git-cache or fallback-git-cache; };

in
{
  pinch = super.pinch or fallback-pinch;
}
