anchor.diff:        DM_CRYPT m
         MD y
         REISERFS_FS m
  -      BTRFS_FS y
  -      XFS_FS m
  -      JFS_FS y
  -      EXT4_FS y
  +      EXT4_FS m
  +      USB_STORAGE_CYPRESS_ATACB m
   
         IP_PNP y
         IP_PNP_DHCP y
  +      IP_PNP_BOOTP y
         NFS_FS y
         ROOT_NFS y
         TUN m
  
positive.code: 
        FUSE_FS m
  
        # nixos mounts some cgroup
        CGROUPS y
  
        # Latencytop
        LATENCYTOP y
  
        # Disable the common config Xen, it doesn't build on ARM
        XEN? n
      '';
      kernelTarget = "zImage";
    };
  
    scaleway-c1 = armv7l-hf-multiplatform // {
      gcc = {
        cpu = "cortex-a9";
        fpu = "vfpv3";
      };
    };
  
    utilite = {
      name = "utilite";
      kernelMajor = "2.6";
      kernelBaseConfig = "multi_v7_defconfig";
      kernelArch = "arm";
      kernelAutoModules = false;
      kernelExtraConfig =
        ''
          # Ubi for the mtd
          MTD_UBI y
          UBIFS_FS y
          UBIFS_FS_XATTR y
          UBIFS_FS_ADVANCED_COMPR y
          UBIFS_FS_LZO y
          UBIFS_FS_ZLIB y
          UBIFS_FS_DEBUG n
        '';
      kernelMakeFlags = [ "LOADADDR=0x10800000" ];
      kernelTarget = "uImage";
      kernelDTB = true;
      gcc = {
        cpu = "cortex-a9";
        fpu = "neon";
      };
    };
  
    guruplug = sheevaplug // {
      # Define `CONFIG_MACH_GURUPLUG' (see
      # <http://kerneltrap.org/mailarchive/git-commits-head/2010/5/19/33618>)
      # and other GuruPlug-specific things.  Requires the `guruplug-defconfig'
      # patch.
  
      kernelBaseConfig = "guruplug_defconfig";
    };
  
    beaglebone = armv7l-hf-multiplatform // {
      name = "beaglebone";
      kernelBaseConfig = "bb.org_defconfig";
      kernelAutoModules = false;
      kernelExtraConfig = ""; # TBD kernel config
      kernelTarget = "zImage";
    };
  
    # https://developer.android.com/ndk/guides/abis#armeabi
    armv5te-android = {
      name = "armeabi";
      gcc = {
        arch = "armv5te";
        float = "soft";
        float-abi = "soft";
      };
    };
  
    # https://developer.android.com/ndk/guides/abis#v7a
    armv7a-android =  {
      name = "armeabi-v7a";
      gcc = {
        arch = "armv7-a";
        float = "hard";
        float-abi = "softfp";
        fpu = "vfpv3-d16";
      };
    };
  
    armv7l-hf-multiplatform = {
      name = "armv7l-hf-multiplatform";
      kernelMajor = "2.6"; # Using "2.6" enables 2.6 kernel syscalls in glibc.
      kernelBaseConfig = "multi_v7_defconfig";
      kernelArch = "arm";
      kernelDTB = true;
      kernelAutoModules = true;
      kernelPreferBuiltin = true;
      kernelTarget = "zImage";
      kernelExtraConfig = ''
        # Serial port for Raspberry Pi 3. Upstream forgot to add it to the ARMv7 defconfig.
        SERIAL_8250_BCM2835AUX y
        SERIAL_8250_EXTENDED y
        SERIAL_8250_SHARE_IRQ y
  
        # Fix broken sunxi-sid nvmem driver.
        TI_CPTS y
  
        # Hangs ODROID-XU4
        ARM_BIG_LITTLE_CPUIDLE n
      '';
      gcc = {
        # Some table about fpu flags:
        # http://community.arm.com/servlet/JiveServlet/showImage/38-1981-3827/blogentry-103749-004812900+1365712953_thumb.png
        # Cortex-A5: -mfpu=neon-fp16
        # Cortex-A7 (rpi2): -mfpu=neon-vfpv4
        # Cortex-A8 (beaglebone): -mfpu=neon
        # Cortex-A9: -mfpu=neon-fp16
        # Cortex-A15: -mfpu=neon-vfpv4
  
        # More about FPU:
        # https://wiki.debian.org/ArmHardFloatPort/VfpComparison
  
        # vfpv3-d16 is what Debian uses and seems to be the best compromise: NEON is not supported in e.g. Scaleway or Tegra 2,
        # and the above page suggests NEON is only an improvement with hand-written assembly.
        arch = "armv7-a";
        fpu = "vfpv3-d16";
  
        # For Raspberry Pi the 2 the best would be:
        #   cpu = "cortex-a7";
        #   fpu = "neon-vfpv4";
      };
    };
  
    aarch64-multiplatform = {
      name = "aarch64-multiplatform";
      kernelMajor = "2.6"; # Using "2.6" enables 2.6 kernel syscalls in glibc.
      kernelBaseConfig = "defconfig";
      kernelArch = "arm64";
      kernelDTB = true;
      kernelAutoModules = true;
      kernelPreferBuiltin = true;
      kernelExtraConfig = ''
        # Raspberry Pi 3 stuff. Not needed for kernels >= 4.10.
        ARCH_BCM2835 y
        BCM2835_MBOX y
        BCM2835_WDT y
        RASPBERRYPI_FIRMWARE y
        RASPBERRYPI_POWER y
        SERIAL_8250_BCM2835AUX y
        SERIAL_8250_EXTENDED y
        SERIAL_8250_SHARE_IRQ y
  
        # Cavium ThunderX stuff.
        PCI_HOST_THUNDER_ECAM y
  
        # Nvidia Tegra stuff.
        PCI_TEGRA y
  
        # The default (=y) forces us to have the XHCI firmware available in initrd,
        # which our initrd builder can't currently do easily.
        USB_XHCI_TEGRA m
      '';
      kernelTarget = "Image";
      gcc = {
        arch = "armv8-a";
      };
    };
  
    ##
    ## MIPS
    ##
  
    ben_nanonote = {
      name = "ben_nanonote";
      kernelMajor = "2.6";
      kernelArch = "mips";
      gcc = {
        arch = "mips32";
        float = "soft";
      };
    };
  
    fuloong2f_n32 = {
      name = "fuloong2f_n32";
      kernelMajor = "2.6";
      kernelBaseConfig = "lemote2f_defconfig";
      kernelArch = "mips";
      kernelAutoModules = false;
      kernelExtraConfig = ''
        MIGRATION n
        COMPACTION n
  
        # nixos mounts some cgroup
        CGROUPS y
  
        BLK_DEV_RAM y
        BLK_DEV_INITRD y
        BLK_DEV_CRYPTOLOOP m
        BLK_DEV_DM m
        DM_CRYPT m
        MD y
        REISERFS_FS m
        EXT4_FS m
        USB_STORAGE_CYPRESS_ATACB m
  
        IP_PNP y
        IP_PNP_DHCP y
        IP_PNP_BOOTP y
        NFS_FS y
        ROOT_NFS y
        TUN m
        NFS_V4 y
        NFS_V4_1 y
        NFS_FSCACHE y
        NFSD m
        NFSD_V2_ACL y
        NFSD_V3 y
        NFSD_V3_ACL y
        NFSD_V4 y
  
        # Fail to build
        DRM n
        SCSI_ADVANSYS n
        USB_ISP1362_HCD n
        SND_SOC n
        SND_ALI5451 n
        FB_SAVAGE n
        SCSI_NSP32 n
        ATA_SFF n
        SUNGEM n
        IRDA n
        ATM_HE n
        SCSI_ACARD n
        BLK_DEV_CMD640_ENHANCED n
  
        FUSE_FS m
  
        # Needed for udev >= 150
        SYSFS_DEPRECATED_V2 n
  
  
negative.code:       NFSD_V3 y
        NFSD_V3_ACL y
        NFSD_V4 y
  
        # Fail to build
        DRM n
  