{
  lib,
  fetchurl,
  makeWrapper,
  pypy2Packages,
  cvs,
  subversion,
  git,
  breezy,
  installShellFiles,
}:

pypy2Packages.buildPythonApplication rec {
  pname = "cvs2svn";
  version = "2.5.0";

  src = fetchurl {
    url = "https://github.com/mhagger/cvs2svn/releases/download/${version}/${pname}-${version}.tar.gz";
    sha256 = "1ska0z15sjhyfi860rjazz9ya1gxbf5c0h8dfqwz88h7fccd22b4";
  };

  nativeBuildInputs = [
    makeWrapper
    installShellFiles
  ];

  nativeCheckInputs = [
    subversion
    git
    breezy
  ];

  checkPhase = "${pypy2Packages.python.interpreter} run-tests.py";

  doCheck = false; # Couldn't find node 'transaction...' in expected output tree

  postInstall = ''
    for i in bzr svn git; do
      wrapProgram $out/bin/cvs2$i \
          --prefix PATH : "${lib.makeBinPath [ cvs ]}"
      $out/bin/cvs2$i --man > csv2$i.1
      installManPage csv2$i.1
    done
  '';

  meta = with lib; {
    description = "Tool to convert CVS repositories to Subversion repositories";
    homepage = "https://github.com/mhagger/cvs2svn";
    maintainers = with maintainers; [
      makefu
      viraptor
    ];
    platforms = platforms.unix;
    license = licenses.asl20;
  };
}