7 baseConfig = "defconfig";
8 # Build whatever possible as a module, if not stated in the extra config.
14 pc_simplekernel = lib.recursiveUpdate pc {
15 linux-kernel.autoModules = false;
22 baseConfig = "powernv_defconfig";
24 installTarget = "install";
27 # avoid driver/FS trouble arising from unusual page size
44 baseConfig = "multi_v5_defconfig";
51 UBIFS_FS_ADVANCED_COMPR y
56 makeFlags = [ "LOADADDR=0x8000" ];
58 # TODO reenable once manual-config's config actually builds a .dtb and this is checked to be working
70 baseConfig = "multi_v5_defconfig";
84 USB_STORAGE_CYPRESS_ATACB m
86 # mv cesa requires this sw fallback, for mv-sha1
90 CRYPTO_TWOFISH_COMMON y
92 CRYPTO_BLOWFISH_COMMON y
110 IP_NF_MATCH_ADDRTYPE y
129 # Disable OABI to have seccomp_filter (required for systemd)
130 # https://github.com/raspberrypi/firmware/issues/651
146 BLK_DEV_CMD640_ENHANCED n
150 # systemd uses cgroups
160 UBIFS_FS_ADVANCED_COMPR y
165 # Kdb, for kernel troubles
167 KGDB_SERIAL_CONSOLE y
170 makeFlags = [ "LOADADDR=0x0200000" ];
172 DTB = true; # Beyond 3.10
181 name = "raspberrypi";
183 baseConfig = "bcm2835_defconfig";
186 preferBuiltin = true;
188 # Disable OABI to have seccomp_filter (required for systemd)
189 # https://github.com/raspberrypi/firmware/issues/651
200 # Legacy attribute, for compatibility with existing configs only.
201 raspberrypi2 = armv7l-hf-multiplatform;
205 name = "zero-gravitas";
207 baseConfig = "zero-gravitas_defconfig";
208 # Target verified by checking /boot on reMarkable 1 device
223 baseConfig = "zero-sugar_defconfig";
226 preferBuiltin = true;
236 scaleway-c1 = lib.recursiveUpdate armv7l-hf-multiplatform {
246 maseConfig = "multi_v7_defconfig";
253 UBIFS_FS_ADVANCED_COMPR y
258 makeFlags = [ "LOADADDR=0x10800000" ];
268 guruplug = lib.recursiveUpdate sheevaplug {
269 # Define `CONFIG_MACH_GURUPLUG' (see
270 # <http://kerneltrap.org/mailarchive/git-commits-head/2010/5/19/33618>)
271 # and other GuruPlug-specific things. Requires the `guruplug-defconfig'
273 linux-kernel.baseConfig = "guruplug_defconfig";
276 beaglebone = lib.recursiveUpdate armv7l-hf-multiplatform {
279 baseConfig = "bb.org_defconfig";
281 extraConfig = ""; # TBD kernel config
286 # https://developer.android.com/ndk/guides/abis#v7a
288 linux-kernel.name = "armeabi-v7a";
291 float-abi = "softfp";
296 armv7l-hf-multiplatform = {
298 name = "armv7l-hf-multiplatform";
299 Major = "2.6"; # Using "2.6" enables 2.6 kernel syscalls in glibc.
300 baseConfig = "multi_v7_defconfig";
303 preferBuiltin = true;
306 # Serial port for Raspberry Pi 3. Wasn't included in ARMv7 defconfig
308 SERIAL_8250_BCM2835AUX y
309 SERIAL_8250_EXTENDED y
310 SERIAL_8250_SHARE_IRQ y
313 ARM_BIG_LITTLE_CPUIDLE n
315 # Disable OABI to have seccomp_filter (required for systemd)
316 # https://github.com/raspberrypi/firmware/issues/651
321 # Some table about fpu flags:
322 # http://community.arm.com/servlet/JiveServlet/showImage/38-1981-3827/blogentry-103749-004812900+1365712953_thumb.png
323 # Cortex-A5: -mfpu=neon-fp16
324 # Cortex-A7 (rpi2): -mfpu=neon-vfpv4
325 # Cortex-A8 (beaglebone): -mfpu=neon
326 # Cortex-A9: -mfpu=neon-fp16
327 # Cortex-A15: -mfpu=neon-vfpv4
330 # https://wiki.debian.org/ArmHardFloatPort/VfpComparison
332 # vfpv3-d16 is what Debian uses and seems to be the best compromise: NEON is not supported in e.g. Scaleway or Tegra 2,
333 # and the above page suggests NEON is only an improvement with hand-written assembly.
337 # For Raspberry Pi the 2 the best would be:
339 # fpu = "neon-vfpv4";
343 aarch64-multiplatform = {
345 name = "aarch64-multiplatform";
346 baseConfig = "defconfig";
349 preferBuiltin = true;
351 # Raspberry Pi 3 stuff. Not needed for s >= 4.10.
355 RASPBERRYPI_FIRMWARE y
357 SERIAL_8250_BCM2835AUX y
358 SERIAL_8250_EXTENDED y
359 SERIAL_8250_SHARE_IRQ y
361 # Cavium ThunderX stuff.
362 PCI_HOST_THUNDER_ECAM y
364 # Nvidia Tegra stuff.
367 # The default (=y) forces us to have the XHCI firmware available in initrd,
368 # which our initrd builder can't currently do easily.
384 name = "ben_nanonote";
394 name = "fuloong2f_n32";
395 baseConfig = "lemote2f_defconfig";
401 # nixos mounts some cgroup
412 USB_STORAGE_CYPRESS_ATACB m
442 BLK_DEV_CMD640_ENHANCED n
446 # Needed for udev >= 150
447 SYSFS_DEPRECATED_V2 n
450 VT_HW_CONSOLE_BINDING y
451 SERIAL_8250_CONSOLE y
452 FRAMEBUFFER_CONSOLE y
458 # The kernel doesn't boot at all, with FTRACE
474 riscv-multiplatform = {
476 name = "riscv-multiplatform";
479 baseConfig = "defconfig";
489 /**/ if platform.isx86 then pc
492 else if platform.isAarch32 then let
493 version = platform.parsed.cpu.version or null;
494 in if version == null then pc
495 else if lib.versionOlder version "6" then sheevaplug
496 else if lib.versionOlder version "7" then raspberrypi
497 else armv7l-hf-multiplatform
498 else if platform.isAarch64 then aarch64-multiplatform
500 else if platform.isRiscV then riscv-multiplatform
502 else if platform.parsed.cpu == lib.systems.parse.cpuTypes.mipsel then fuloong2f_n32
504 else if platform.parsed.cpu == lib.systems.parse.cpuTypes.powerpc64le then powernv