anchor.diff:  { stdenv, fetchurl, pkgconfig, libpng, openssl, curl, gtk2, check, SDL
  -, libxml2, libidn, perl, nettools, perlPackages
  +, libxml2, libidn, perl, nettools, perlPackages, xxd
   , libXcursor, libXrandr, makeWrapper
   , uilib ? "framebuffer"
   , buildsystem
  
positive.code:     cmd=$(case "${uilib}" in framebuffer) echo nsfb;; gtk) echo nsgtk;; esac)
      cp $cmd $out/bin/netsurf
      wrapProgram $out/bin/netsurf --set NETSURFRES $out/share/Netsurf/${uilib}/res
      tar -hcf - ${uilib}/res | (cd $out/share/Netsurf/ && tar -xvpf -)
    '';
  
    meta = with stdenv.lib; {
  
negative.code: , libnsgif
  , libnsutils
  , libutf8proc
  , wrapGAppsHook
  }:
  
  stdenv.mkDerivation rec {
  
    name = "netsurf-${version}";
    version = "3.9";
  
    # UI libs incldue Framebuffer, and gtk
  
    src = fetchurl {
      url = "http://download.netsurf-browser.org/netsurf/releases/source/netsurf-${version}-src.tar.gz";
      sha256 = "1hzcm2s2wh5sapgr000lg63hcdbj6hyajxl43xa1x80kc5piqbyp";
    };
  
    nativeBuildInputs = [
      pkgconfig
      xxd
    ] ++ stdenv.lib.optionals (uilib == "gtk") [
      wrapGAppsHook
    ];
  
    buildInputs = [ libpng openssl curl gtk2 check libxml2 libidn perl
      nettools perlPackages.HTMLParser libXcursor libXrandr makeWrapper SDL
      buildsystem
  