# You can specify some extra mirrors and a cache DB via options
{
  lib,
  stdenvNoCC,
  monotone,
  defaultDBMirrors ? [ ],
  cacheDB ? "./mtn-checkout.db",
}:

lib.fetchers.withNormalizedHash { } (
  # dbs is a list of strings, each is an url for sync
  # selector is mtn selector, like h:org.example.branch
  {
    name ? "mtn-checkout",
    dbs ? [ ],
    outputHash,
    outputHashAlgo,
    selector ? "h:" + branch,
    branch,
  }:

  stdenvNoCC.mkDerivation {
    builder = ./builder.sh;
    nativeBuildInputs = [ monotone ];

    inherit outputHash outputHashAlgo;
    outputHashMode = "recursive";

    dbs = defaultDBMirrors ++ dbs;
    inherit
      branch
      cacheDB
      name
      selector
      ;

    impureEnvVars = lib.fetchers.proxyImpureEnvVars;

  }
)