{ substituteAll
, diffutils
, stdenv
, patchPpdFilesHook
}:

let
  input = substituteAll {
    src = ./test.ppd;
    keep = "cmp";
    patch = "cmp";
    pathkeep = "/bin/cmp";
    pathpatch = "/bin/cmp";
  };

  output = substituteAll {
    src = ./test.ppd;
    keep = "cmp";
    patch = "${diffutils}/bin/cmp";
    pathkeep = "/bin/cmp";
    pathpatch = "${diffutils}/bin/cmp";
  };
in

stdenv.mkDerivation {
  name = "${patchPpdFilesHook.name}-test";
  buildInputs = [ diffutils ];
  nativeBuildInputs = [ diffutils patchPpdFilesHook ];
  dontUnpack = true;
  dontInstall = true;
  ppdFileCommands = [ "cmp" ];
  preFixup = ''
    install -D "${input}" "${placeholder "out"}/share/cups/model/test.ppd"
    install -D "${input}" "${placeholder "out"}/share/ppds/test.ppd"
  '';
  postFixup = ''
    diff --color --report-identical-files "${output}" "${placeholder "out"}/share/cups/model/test.ppd"
    diff --color --report-identical-files "${output}" "${placeholder "out"}/share/ppds/test.ppd"
  '';
}
