anchor.diff:  , udev
   }:
   
  -assert withGui -> gtk3 != null && wrapGAppsHook != null;
   assert withTeensyduino -> withGui;
   let
     externalDownloads = import ./downloads.nix {
  
positive.code:                         else if stdenv.hostPlatform.isAarch32 then "linuxarm"
                          else throw "${stdenv.hostPlatform.system} is not supported in teensy";
  
    flavor = (if withTeensyduino then "teensyduino" else "arduino")
               + lib.optionalString (!withGui) "-core";
  in
  stdenv.mkDerivation rec {
    version = "1.8.16";
    name = "${flavor}-${version}";
  
    src = fetchFromGitHub {
      owner = "arduino";
  
negative.code:   javaPath = lib.makeBinPath [ jdk ];
  
    # Everything else will be patched into rpath
    rpath = lib.makeLibraryPath [ zlib libusb-compat-0_1 libusb1 readline ncurses5 stdenv.cc.cc ];
  
    installPhase = ''
      mkdir -p $out/share/arduino
  