anchor.diff:  , swig
   , werkzeug
   , mock
  -, gcc
   , zlib
   }:
   
   assert cudaSupport -> cudatoolkit != null
                      && cudnn != null
  -                   && gcc49 != null
                      && linuxPackages != null;
   
   # unsupported combination
  
positive.code: 
    propagatedBuildInputs = with stdenv.lib;
      [ numpy six protobuf3_2 swig werkzeug mock ]
      ++ optionals cudaSupport [ cudatoolkit cudnn gcc49 ];
  
    # Note that we need to run *after* the fixup phase because the
    # libraries are loaded at runtime. If we run in preFixup then
  
negative.code:   postFixup = let
      rpath = stdenv.lib.makeLibraryPath
        (if cudaSupport then
          [ stdenv.cc.cc.lib zlib cudatoolkit cudnn
            linuxPackages.nvidia_x11 ]
        else
          [ stdenv.cc.cc.lib zlib ]
        );
    in
    ''
  