anchor.diff:  , udev
   }:
   
  -assert withGui -> gtk2 != null;
  +assert withGui -> gtk3 != null && wrapGAppsHook != null;
   assert withTeensyduino -> withGui;
   let
     externalDownloads = import ./downloads.nix {
  
positive.code: , ncurses
  , readline
  , withGui ? false
  , gtk2 ? null
  , withTeensyduino ? false
    /* Packages needed for Teensyduino */
  , upx
  
negative.code: 
    # This will be patched into `arduino` wrapper script
    # Java loads gtk dynamically, so we need to provide it using LD_LIBRARY_PATH
    dynamicLibraryPath = lib.makeLibraryPath [ gtk3 ];
    javaPath = lib.makeBinPath [ jdk ];
  
    # Everything else will be patched into rpath
  