anchor.diff:  , fetchFromGitHub
   , cmake
   , pkgconfig
  -, python
  -, libusb1
  +# See https://files.ettus.com/manual_archive/v3.15.0.0/html/page_build_guide.html for dependencies explanations
   , boost
  +, enableLibuhd_C_api ? true
  +# requires numpy
  +, enableLibuhd_Python_api ? false
  +, python ? null
  +, enableExamples ? false
  +, enableUtils ? false
  +, enableLiberio ? false
  +, liberio ? null
  +, libusb1 ? null
  +, enableDpdk ? false
  +, dpdk ? null
  +# Devices
  +, enableOctoClock ? true
  +, enableMpmd ? true
  +, enableB100 ? true
  +, enableB200 ? true
  +, enableUsrp1 ? true
  +, enableUsrp2 ? true
  +, enableX300 ? true
  +, enableN230 ? true
  +, enableN300 ? true
  +, enableN320 ? true
  +, enableE300 ? true
  +, enableE320 ? true
   }:
   
   # You need these udev rules to not have to run as root (copied from
  
positive.code: #
  #   SUBSYSTEMS=="usb", ATTRS{idVendor}=="fffe", ATTRS{idProduct}=="0002", MODE:="0666"
  #   SUBSYSTEMS=="usb", ATTRS{idVendor}=="2500", ATTRS{idProduct}=="0002", MODE:="0666"
  
  stdenv.mkDerivation rec {
    pname = "uhd";
  
negative.code:   # https://files.ettus.com/manual_archive/v3.15.0.0/html/page_build_guide.html#build_instructions_unix_arm
    patches = if stdenv.isAarch32 then ./neon.patch else null;
  
    postPhases = [ "installFirmware" "removeInstalledTests" ];
  
    # UHD expects images in `$CMAKE_INSTALL_PREFIX/share/uhd/images`
    installFirmware = ''
      mkdir -p "$out/share/uhd/images"
      tar --strip-components=1 -xvf "${uhdImagesSrc}" -C "$out/share/uhd/images"
    '';
  
    # -DENABLE_TESTS=ON installs the tests, we don't need them in the output
    removeInstalledTests = ''
      rm -r $out/lib/uhd/tests
    '';
  
    meta = with stdenv.lib; {
  