{ lib
, stdenv
, curl
}:
lib.fetchers.withNormalizedHash { hashTypes = [ "sha1" "sha256" "sha512" ]; } (
  { ipfs
  , url            ? ""
  , curlOpts       ? ""
  , outputHash
  , outputHashAlgo
  , meta           ? {}
  , port           ? "8080"
  , postFetch      ? ""
  , preferLocalBuild ? true
  }:
  stdenv.mkDerivation {
    name = ipfs;
    builder = ./builder.sh;
    nativeBuildInputs = [ curl ];

    # New-style output content requirements.
    inherit outputHash outputHashAlgo;
    outputHashMode = "recursive";

    inherit curlOpts
            postFetch
            ipfs
            url
            port
            meta;

    # Doing the download on a remote machine just duplicates network
    # traffic, so don't do that.
    inherit preferLocalBuild;
  }
)