anchor.diff:  { stdenv, fetchurl, buildPackages, perl
  +, hostPlatform
   , withCryptodev ? false, cryptodevHeaders
  -, enableSSL2 ? false }:
  +, enableSSL2 ? false
  +}:
   
   with stdenv.lib;
   
   let
   
  -  opensslCrossSystem = stdenv.cross.openssl.system or
  +  opensslCrossSystem = hostPlatform.openssl.system or
       (throw "openssl needs its platform name cross building");
   
     common = args@{ version, sha256, patches ? [] }: stdenv.mkDerivation rec {
  
positive.code:       ++ optional (versionOlder version "1.1.0")
            (if stdenv.isDarwin then ./use-etc-ssl-certs-darwin.patch else ./use-etc-ssl-certs.patch)
        ++ optional stdenv.isCygwin ./1.0.1-cygwin64.patch
        ++ optional
             (versionOlder version "1.0.2" && (stdenv.isDarwin || (stdenv ? cross && stdenv.cross.libc == "libSystem")))
             ./darwin-arch.patch;
  
      outputs = [ "bin" "dev" "out" "man" ];
  
negative.code:       preConfigure=''
          # It's configure does not like --build or --host
          export configureFlags="${concatStringsSep " " (configureFlags ++ [ opensslCrossSystem ])}"
        '';
        configureScript = "./Configure";
      };
  