anchor.diff:  
       outputs = [ "out" "devdoc" ];
   
  -    nativeBuildInputs = [ pkgconfig flex bison libxslt ] ++ extraNativeBuildInputs;
  +    nativeBuildInputs = [
  +      pkgconfig flex bison libxslt
  +    ] ++ lib.optional (stdenv.isDarwin && (atLeast "0.38")) expat
  +      ++ extraNativeBuildInputs;
   
  -    buildInputs = [ glib libiconv libintl ] ++ extraBuildInputs;
  +    buildInputs = [
  +      glib libiconv libintl
  +    ] ++ lib.optional (atLeast "0.38") graphviz
  +      ++ extraBuildInputs;
   
       meta = with stdenv.lib; {
         description = "Compiler for GObject type system";
  
positive.code: { stdenv, fetchurl, pkgconfig, flex, bison, libxslt, autoconf, graphviz
  , glib, libiconv, libintl, libtool, expat
  }:
  
  let
    generic = { major, minor, sha256, extraNativeBuildInputs ? [], extraBuildInputs ? [] }:
    stdenv.mkDerivation rec {
      name = "vala-${major}.${minor}";
  
      src = fetchurl {
  
negative.code: 
    vala_0_36 = generic {
      major   = "0.36";
      minor   = "13";
      sha256  = "0gxz7yisd9vh5d2889p60knaifz5zndgj98zkdfkkaykdfdq4m9k";
    };
  
    vala_0_38 = generic {
      major   = "0.38";
      minor   = "9";
      sha256  = "1dh1qacfsc1nr6hxwhn9lqmhnq39rv8gxbapdmj1v65zs96j3fn3";
      extraNativeBuildInputs = [ autoconf ] ++ lib.optional stdenv.isDarwin libtool;
    };
  
    vala_0_40 = generic {
      major   = "0.40";
      minor   = "6";
      sha256  = "1qjbwhifwwqbdg5zilvnwm4n76g8p7jwqs3fa0biw3rylzqm193d";
    };
  
    vala = vala_0_38;
  