summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2021-01-22 20:33:55 -0500
committerJohn Ericson <John.Ericson@Obsidian.Systems>2021-01-23 10:01:28 -0500
commit9c213398b312e0f0bb9cdf05090fd20223a82ad0 (patch)
treec645a940abedfc4abf51dbb99ce1a8e871e5e799 /lib
parent2bc16b381e09eeb75deefdf6fd5bdc4771b795f3 (diff)
lib: Clean up how linux and gcc config is specified
Second attempt of 8929989614589ee3acd070a6409b2b9700c92d65; see that commit for details. This reverts commit 0bc275e63423456d6deb650e146120c39c1e0723.
Diffstat (limited to 'lib')
-rw-r--r--lib/systems/architectures.nix2
-rw-r--r--lib/systems/default.nix19
-rw-r--r--lib/systems/examples.nix48
-rw-r--r--lib/systems/platforms.nix670
4 files changed, 365 insertions, 374 deletions
diff --git a/lib/systems/architectures.nix b/lib/systems/architectures.nix
index 8e3a56b0d7c9..ddc320d24e0a 100644
--- a/lib/systems/architectures.nix
+++ b/lib/systems/architectures.nix
@@ -1,7 +1,7 @@
{ lib }:
rec {
- # platform.gcc.arch to its features (as in /proc/cpuinfo)
+ # gcc.arch to its features (as in /proc/cpuinfo)
features = {
default = [ ];
# x86_64 Intel
diff --git a/lib/systems/default.nix b/lib/systems/default.nix
index 4edcbeb36f16..1a89120e2bf6 100644
--- a/lib/systems/default.nix
+++ b/lib/systems/default.nix
@@ -24,8 +24,6 @@ rec {
# Either of these can be losslessly-extracted from `parsed` iff parsing succeeds.
system = parse.doubleFromSystem final.parsed;
config = parse.tripleFromSystem final.parsed;
- # Just a guess, based on `system`
- platform = platforms.select final;
# Determine whether we are compatible with the provided CPU
isCompatible = platform: parse.isCompatible final.parsed.cpu platform.parsed.cpu;
# Derived meta-data
@@ -79,11 +77,20 @@ rec {
};
isStatic = final.isWasm || final.isRedox;
- kernelArch =
+ # Just a guess, based on `system`
+ inherit
+ ({
+ linux-kernel = args.linux-kernel or {};
+ gcc = args.gcc or {};
+ rustc = args.rust or {};
+ } // platforms.select final)
+ linux-kernel gcc rustc;
+
+ linuxArch =
if final.isAarch32 then "arm"
else if final.isAarch64 then "arm64"
- else if final.isx86_32 then "x86"
- else if final.isx86_64 then "x86"
+ else if final.isx86_32 then "i386"
+ else if final.isx86_64 then "x86_64"
else if final.isMips then "mips"
else final.parsed.cpu.name;
@@ -129,7 +136,7 @@ rec {
else throw "Don't know how to run ${final.config} executables.";
} // mapAttrs (n: v: v final.parsed) inspect.predicates
- // mapAttrs (n: v: v final.platform.gcc.arch or "default") architectures.predicates
+ // mapAttrs (n: v: v final.gcc.arch or "default") architectures.predicates
// args;
in assert final.useAndroidPrebuilt -> final.isAndroid;
assert lib.foldl
diff --git a/lib/systems/examples.nix b/lib/systems/examples.nix
index 16002450f2d1..de12e0b83c1d 100644
--- a/lib/systems/examples.nix
+++ b/lib/systems/examples.nix
@@ -7,7 +7,6 @@ let
riscv = bits: {
config = "riscv${bits}-unknown-linux-gnu";
- platform = platforms.riscv-multiplatform;
};
in
@@ -17,84 +16,68 @@ rec {
#
powernv = {
config = "powerpc64le-unknown-linux-gnu";
- platform = platforms.powernv;
};
musl-power = {
config = "powerpc64le-unknown-linux-musl";
- platform = platforms.powernv;
};
sheevaplug = {
config = "armv5tel-unknown-linux-gnueabi";
- platform = platforms.sheevaplug;
- };
+ } // platforms.sheevaplug;
raspberryPi = {
config = "armv6l-unknown-linux-gnueabihf";
- platform = platforms.raspberrypi;
- };
+ } // platforms.raspberrypi;
remarkable1 = {
config = "armv7l-unknown-linux-gnueabihf";
- platform = platforms.zero-gravitas;
- };
+ } // platforms.zero-gravitas;
remarkable2 = {
config = "armv7l-unknown-linux-gnueabihf";
- platform = platforms.zero-sugar;
- };
+ } // platforms.zero-sugar;
armv7l-hf-multiplatform = {
config = "armv7l-unknown-linux-gnueabihf";
- platform = platforms.armv7l-hf-multiplatform;
};
aarch64-multiplatform = {
config = "aarch64-unknown-linux-gnu";
- platform = platforms.aarch64-multiplatform;
};
armv7a-android-prebuilt = {
config = "armv7a-unknown-linux-androideabi";
sdkVer = "29";
ndkVer = "21";
- platform = platforms.armv7a-android;
useAndroidPrebuilt = true;
- };
+ } // platforms.armv7a-android;
aarch64-android-prebuilt = {
config = "aarch64-unknown-linux-android";
sdkVer = "29";
ndkVer = "21";
- platform = platforms.aarch64-multiplatform;
useAndroidPrebuilt = true;
};
- scaleway-c1 = armv7l-hf-multiplatform // rec {
- platform = platforms.scaleway-c1;
- inherit (platform.gcc) fpu;
- };
+ scaleway-c1 = armv7l-hf-multiplatform // platforms.scaleway-c1;
pogoplug4 = {
config = "armv5tel-unknown-linux-gnueabi";
- platform = platforms.pogoplug4;
- };
+ } // platforms.pogoplug4;
ben-nanonote = {
config = "mipsel-unknown-linux-uclibc";
- platform = platforms.ben_nanonote;
- };
+ } // platforms.ben_nanonote;
fuloongminipc = {
config = "mipsel-unknown-linux-gnu";
- platform = platforms.fuloong2f_n32;
- };
+ } // platforms.fuloong2f_n32;
muslpi = raspberryPi // {
config = "armv6l-unknown-linux-musleabihf";
};
- aarch64-multiplatform-musl = aarch64-multiplatform // {
+ aarch64-multiplatform-musl = {
config = "aarch64-unknown-linux-musl";
};
@@ -110,13 +93,11 @@ rec {
riscv64-embedded = {
config = "riscv64-none-elf";
libc = "newlib";
- platform = platforms.riscv-multiplatform;
};
riscv32-embedded = {
config = "riscv32-none-elf";
libc = "newlib";
- platform = platforms.riscv-multiplatform;
};
mmix = {
@@ -136,13 +117,11 @@ rec {
vc4 = {
config = "vc4-elf";
libc = "newlib";
- platform = {};
};
or1k = {
config = "or1k-elf";
libc = "newlib";
- platform = {};
};
arm-embedded = {
@@ -204,7 +183,6 @@ rec {
xcodeVer = "11.3.1";
xcodePlatform = "iPhoneOS";
useiOSPrebuilt = true;
- platform = {};
};
iphone32 = {
@@ -214,7 +192,6 @@ rec {
xcodeVer = "11.3.1";
xcodePlatform = "iPhoneOS";
useiOSPrebuilt = true;
- platform = {};
};
iphone64-simulator = {
@@ -224,7 +201,6 @@ rec {
xcodeVer = "11.3.1";
xcodePlatform = "iPhoneSimulator";
useiOSPrebuilt = true;
- platform = {};
};
iphone32-simulator = {
@@ -234,7 +210,6 @@ rec {
xcodeVer = "11.3.1";
xcodePlatform = "iPhoneSimulator";
useiOSPrebuilt = true;
- platform = {};
};
#
@@ -245,7 +220,6 @@ rec {
mingw32 = {
config = "i686-w64-mingw32";
libc = "msvcrt"; # This distinguishes the mingw (non posix) toolchain
- platform = {};
};
# 64 bit mingw-w64
@@ -253,7 +227,6 @@ rec {
# That's the triplet they use in the mingw-w64 docs.
config = "x86_64-w64-mingw32";
libc = "msvcrt"; # This distinguishes the mingw (non posix) toolchain
- platform = {};
};
# BSDs
@@ -275,6 +248,5 @@ rec {
# Ghcjs
ghcjs = {
config = "js-unknown-ghcjs";
- platform = {};
};
}
diff --git a/lib/systems/platforms.nix b/lib/systems/platforms.nix
index e869de488c14..f399c1873f5e 100644
--- a/lib/systems/platforms.nix
+++ b/lib/systems/platforms.nix
@@ -1,39 +1,36 @@
{ lib }:
rec {
- pcBase = {
- name = "pc";
- kernelBaseConfig = "defconfig";
- # Build whatever possible as a module, if not stated in the extra config.
- kernelAutoModules = true;
- kernelTarget = "bzImage";
- };
-
- pc64 = pcBase // { kernelArch = "x86_64"; };
-
- pc32 = pcBase // { kernelArch = "i386"; };
-
- pc32_simplekernel = pc32 // {
- kernelAutoModules = false;
+ pc = {
+ linux-kernel = {
+ name = "pc";
+
+ baseConfig = "defconfig";
+ # Build whatever possible as a module, if not stated in the extra config.
+ autoModules = true;
+ target = "bzImage";
+ };
};
- pc64_simplekernel = pc64 // {
- kernelAutoModules = false;
+ pc_simplekernel = lib.recursiveUpdate pc {
+ linux-kernel.autoModules = false;
};
powernv = {
- name = "PowerNV";
- kernelArch = "powerpc";
- kernelBaseConfig = "powernv_defconfig";
- kernelTarget = "zImage";
- kernelInstallTarget = "install";
- kernelFile = "vmlinux";
- kernelAutoModules = true;
- # avoid driver/FS trouble arising from unusual page size
- kernelExtraConfig = ''
- PPC_64K_PAGES n
- PPC_4K_PAGES y
- IPV6 y
- '';
+ linux-kernel = {
+ name = "PowerNV";
+
+ baseConfig = "powernv_defconfig";
+ target = "zImage";
+ installTarget = "install";
+ file = "vmlinux";
+ autoModules = true;
+ # avoid driver/FS trouble arising from unusual page size
+ extraConfig = ''
+ PPC_64K_PAGES n
+ PPC_4K_PAGES y
+ IPV6 y
+ '';
+ };
};
##
@@ -41,17 +38,121 @@ rec {
##
pogoplug4 = {
- name = "pogoplug4";
+ linux-kernel = {
+ name = "pogoplug4";
+ baseConfig = "multi_v5_defconfig";
+ autoModules = false;
+ extraConfig = ''
+ # 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
+ '';
+ makeFlags = [ "LOADADDR=0x8000" ];
+ target = "uImage";
+ # TODO reenable once manual-config's config actually builds a .dtb and this is checked to be working
+ #DTB = true;
+ };
gcc = {
arch = "armv5te";
};
+ };
+
+ sheevaplug = {
+ linux-kernel = {
+ name = "sheevaplug";
+
+ baseConfig = "multi_v5_defconfig";
+ autoModules = false;
+ extraConfig = ''
+ BLK_DEV_RAM y
+ BLK_DEV_INITRD y
+ BLK_DEV_CRYPTOLOOP m
+ BLK_DEV_DM m
+ DM_CRYPT m
+ MD y
+ REISERFS_FS m
+ BTRFS_FS m
+ XFS_FS m
+ JFS_FS m
+ EXT4_FS m
+ USB_STORAGE_CYPRESS_ATACB m
+
+ # mv cesa requires this sw fallback, for mv-sha1
+ CRYPTO_SHA1 y
+ # Fast crypto
+ CRYPTO_TWOFISH y
+ CRYPTO_TWOFISH_COMMON y
+ CRYPTO_BLOWFISH y
+ CRYPTO_BLOWFISH_COMMON y
+
+ IP_PNP y
+ IP_PNP_DHCP 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
+ NETFILTER y
+ IP_NF_IPTABLES y
+ IP_NF_FILTER y
+ IP_NF_MATCH_ADDRTYPE y
+ IP_NF_TARGET_LOG y
+ IP_NF_MANGLE y
+ IPV6 m
+ VLAN_8021Q m
+
+ CIFS y
+ CIFS_XATTR y
+ CIFS_POSIX y
+ CIFS_FSCACHE y
+ CIFS_ACL y
+
+ WATCHDOG y
+ WATCHDOG_CORE y
+ ORION_WATCHDOG m
+
+ ZRAM m
+ NETCONSOLE m
+
+ # Disable OABI to have seccomp_filter (required for systemd)
+ # https://github.com/raspberrypi/firmware/issues/651
+ OABI_COMPAT n
+
+ # 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
+
+ # systemd uses cgroups
+ CGROUPS y
+
+ # Latencytop
+ LATENCYTOP y
- kernelBaseConfig = "multi_v5_defconfig";
- kernelArch = "arm";
- kernelAutoModules = false;
- kernelExtraConfig =
- ''
# Ubi for the mtd
MTD_UBI y
UBIFS_FS y
@@ -60,137 +161,36 @@ rec {
UBIFS_FS_LZO y
UBIFS_FS_ZLIB y
UBIFS_FS_DEBUG n
- '';
- kernelMakeFlags = [ "LOADADDR=0x8000" ];
- kernelTarget = "uImage";
- # TODO reenable once manual-config's config actually builds a .dtb and this is checked to be working
- #kernelDTB = true;
- };
- sheevaplug = {
- name = "sheevaplug";
- kernelBaseConfig = "multi_v5_defconfig";
- kernelArch = "arm";
- kernelAutoModules = false;
- kernelExtraConfig = ''
- BLK_DEV_RAM y
- BLK_DEV_INITRD y
- BLK_DEV_CRYPTOLOOP m
- BLK_DEV_DM m
- DM_CRYPT m
- MD y
- REISERFS_FS m
- BTRFS_FS m
- XFS_FS m
- JFS_FS m
- EXT4_FS m
- USB_STORAGE_CYPRESS_ATACB m
-
- # mv cesa requires this sw fallback, for mv-sha1
- CRYPTO_SHA1 y
- # Fast crypto
- CRYPTO_TWOFISH y
- CRYPTO_TWOFISH_COMMON y
- CRYPTO_BLOWFISH y
- CRYPTO_BLOWFISH_COMMON y
-
- IP_PNP y
- IP_PNP_DHCP 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
- NETFILTER y
- IP_NF_IPTABLES y
- IP_NF_FILTER y
- IP_NF_MATCH_ADDRTYPE y
- IP_NF_TARGET_LOG y
- IP_NF_MANGLE y
- IPV6 m
- VLAN_8021Q m
-
- CIFS y
- CIFS_XATTR y
- CIFS_POSIX y
- CIFS_FSCACHE y
- CIFS_ACL y
-
- WATCHDOG y
- WATCHDOG_CORE y
- ORION_WATCHDOG m
-
- ZRAM m
- NETCONSOLE m
-
- # Disable OABI to have seccomp_filter (required for systemd)
- # https://github.com/raspberrypi/firmware/issues/651
- OABI_COMPAT n
-
- # 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
-
- # systemd uses cgroups
- CGROUPS y
-
- # Latencytop
- LATENCYTOP y
-
- # 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
-
- # Kdb, for kernel troubles
- KGDB y
- KGDB_SERIAL_CONSOLE y
- KGDB_KDB y
- '';
- kernelMakeFlags = [ "LOADADDR=0x0200000" ];
- kernelTarget = "uImage";
- kernelDTB = true; # Beyond 3.10
+ # Kdb, for kernel troubles
+ KGDB y
+ KGDB_SERIAL_CONSOLE y
+ KGDB_KDB y
+ '';
+ makeFlags = [ "LOADADDR=0x0200000" ];
+ target = "uImage";
+ DTB = true; # Beyond 3.10
+ };
gcc = {
arch = "armv5te";
};
};
raspberrypi = {
- name = "raspberrypi";
- kernelBaseConfig = "bcm2835_defconfig";
- kernelDTB = true;
- kernelArch = "arm";
- kernelAutoModules = true;
- kernelPreferBuiltin = true;
- kernelExtraConfig = ''
- # Disable OABI to have seccomp_filter (required for systemd)
- # https://github.com/raspberrypi/firmware/issues/651
- OABI_COMPAT n
- '';
- kernelTarget = "zImage";
+ linux-kernel = {
+ name = "raspberrypi";
+
+ baseConfig = "bcm2835_defconfig";
+ DTB = true;
+ autoModules = true;
+ preferBuiltin = true;
+ extraConfig = ''
+ # Disable OABI to have seccomp_filter (required for systemd)
+ # https://github.com/raspberrypi/firmware/issues/651
+ OABI_COMPAT n
+ '';
+ target = "zImage";
+ };
gcc = {
arch = "armv6";
fpu = "vfp";
@@ -201,13 +201,15 @@ rec {
raspberrypi2 = armv7l-hf-multiplatform;
zero-gravitas = {
- name = "zero-gravitas";
- kernelBaseConfig = "zero-gravitas_defconfig";
- kernelArch = "arm";
- # kernelTarget verified by checking /boot on reMarkable 1 device
- kernelTarget = "zImage";
- kernelAutoModules = false;
- kernelDTB = true;
+ linux-kernel = {
+ name = "zero-gravitas";
+
+ baseConfig = "zero-gravitas_defconfig";
+ # Target verified by checking /boot on reMarkable 1 device
+ target = "zImage";
+ autoModules = false;
+ DTB = true;
+ };
gcc = {
fpu = "neon";
cpu = "cortex-a9";
@@ -215,13 +217,15 @@ rec {
};
zero-sugar = {
- name = "zero-sugar";
- kernelBaseConfig = "zero-sugar_defconfig";
- kernelArch = "arm";
- kernelDTB = true;
- kernelAutoModules = false;
- kernelPreferBuiltin = true;
- kernelTarget = "zImage";
+ linux-kernel = {
+ name = "zero-sugar";
+
+ baseConfig = "zero-sugar_defconfig";
+ DTB = true;
+ autoModules = false;
+ preferBuiltin = true;
+ target = "zImage";
+ };
gcc = {
cpu = "cortex-a7";
fpu = "neon-vfpv4";
@@ -229,7 +233,7 @@ rec {
};
};
- scaleway-c1 = armv7l-hf-multiplatform // {
+ scaleway-c1 = lib.recursiveUpdate armv7l-hf-multiplatform {
gcc = {
cpu = "cortex-a9";
fpu = "vfpv3";
@@ -237,12 +241,11 @@ rec {
};
utilite = {
- name = "utilite";
- kernelBaseConfig = "multi_v7_defconfig";
- kernelArch = "arm";
- kernelAutoModules = false;
- kernelExtraConfig =
- ''
+ linux-kernel = {
+ name = "utilite";
+ maseConfig = "multi_v7_defconfig";
+ autoModules = false;
+ extraConfig = ''
# Ubi for the mtd
MTD_UBI y
UBIFS_FS y
@@ -252,35 +255,37 @@ rec {
UBIFS_FS_ZLIB y
UBIFS_FS_DEBUG n
'';
- kernelMakeFlags = [ "LOADADDR=0x10800000" ];
- kernelTarget = "uImage";
- kernelDTB = true;
+ makeFlags = [ "LOADADDR=0x10800000" ];
+ target = "uImage";
+ DTB = true;
+ };
gcc = {
cpu = "cortex-a9";
fpu = "neon";
};
};
- guruplug = sheevaplug // {
+ guruplug = lib.recursiveUpdate 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";
+ linux-kernel.baseConfig = "guruplug_defconfig";
};
- beaglebone = armv7l-hf-multiplatform // {
- name = "beaglebone";
- kernelBaseConfig = "bb.org_defconfig";
- kernelAutoModules = false;
- kernelExtraConfig = ""; # TBD kernel config
- kernelTarget = "zImage";
+ beaglebone = lib.recursiveUpdate armv7l-hf-multiplatform {
+ linux-kernel = {
+ name = "beaglebone";
+ baseConfig = "bb.org_defconfig";
+ autoModules = false;
+ extraConfig = ""; # TBD kernel config
+ target = "zImage";
+ };
};
# https://developer.android.com/ndk/guides/abis#v7a
- armv7a-android = {
- name = "armeabi-v7a";
+ armv7a-android = {
+ linux-kernel.name = "armeabi-v7a";
gcc = {
arch = "armv7-a";
float-abi = "softfp";
@@ -289,29 +294,31 @@ rec {
};
armv7l-hf-multiplatform = {
- name = "armv7l-hf-multiplatform";
- 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
-
- # Disable OABI to have seccomp_filter (required for systemd)
- # https://github.com/raspberrypi/firmware/issues/651
- OABI_COMPAT n
- '';
+ linux-kernel = {
+ name = "armv7l-hf-multiplatform";
+ Major = "2.6"; # Using "2.6" enables 2.6 kernel syscalls in glibc.
+ baseConfig = "multi_v7_defconfig";
+ DTB = true;
+ autoModules = true;
+ PreferBuiltin = true;
+ target = "zImage";
+ extraConfig = ''
+ # 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
+
+ # Disable OABI to have seccomp_filter (required for systemd)
+ # https://github.com/raspberrypi/firmware/issues/651
+ OABI_COMPAT n
+ '';
+ };
gcc = {
# Some table about fpu flags:
# http://community.arm.com/servlet/JiveServlet/showImage/38-1981-3827/blogentry-103749-004812900+1365712953_thumb.png
@@ -336,34 +343,35 @@ rec {
};
aarch64-multiplatform = {
- name = "aarch64-multiplatform";
- 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";
+ linux-kernel = {
+ name = "aarch64-multiplatform";
+ baseConfig = "defconfig";
+ DTB = true;
+ autoModules = true;
+ preferBuiltin = true;
+ extraConfig = ''
+ # Raspberry Pi 3 stuff. Not needed for s >= 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
+ '';
+ target = "Image";
+ };
gcc = {
arch = "armv8-a";
};
@@ -374,8 +382,9 @@ rec {
##
ben_nanonote = {
- name = "ben_nanonote";
- kernelArch = "mips";
+ linux-kernel = {
+ name = "ben_nanonote";
+ };
gcc = {
arch = "mips32";
float = "soft";
@@ -383,75 +392,76 @@ rec {
};
fuloong2f_n32 = {
- name = "fuloong2f_n32";
- 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
-
- VGA_CONSOLE n
- VT_HW_CONSOLE_BINDING y
- SERIAL_8250_CONSOLE y
- FRAMEBUFFER_CONSOLE y
- EXT2_FS y
- EXT3_FS y
- REISERFS_FS y
- MAGIC_SYSRQ y
-
- # The kernel doesn't boot at all, with FTRACE
- FTRACE n
- '';
- kernelTarget = "vmlinux";
+ linux-kernel = {
+ name = "fuloong2f_n32";
+ baseConfig = "lemote2f_defconfig";
+ autoModules = false;
+ extraConfig = ''
+ 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
+
+ VGA_CONSOLE n
+ VT_HW_CONSOLE_BINDING y
+ SERIAL_8250_CONSOLE y
+ FRAMEBUFFER_CONSOLE y
+ EXT2_FS y
+ EXT3_FS y
+ REISERFS_FS y
+ MAGIC_SYSRQ y
+
+ # The kernel doesn't boot at all, with FTRACE
+ FTRACE n
+ '';
+ target = "vmlinux";
+ };
gcc = {
arch = "loongson2f";
float = "hard";
@@ -464,34 +474,36 @@ rec {
##
riscv-multiplatform = {
- name = "riscv-multiplatform";
- kernelArch = "riscv";
- kernelTarget = "vmlinux";
- kernelAutoModules = true;
- kernelBaseConfig = "defconfig";
- kernelExtraConfig = ''
- FTRACE n
- SERIAL_OF_PLATFORM y
- '';
+ linux-kernel = {
+ name = "riscv-multiplatform";
+ target = "vmlinux";
+ autoModules = true;
+ baseConfig = "defconfig";
+ extraConfig = ''
+ FTRACE n
+ SERIAL_OF_PLATFORM y
+ '';
+ };
};
select = platform:
# x86
- /**/ if platform.isx86_32 then pc32
- else if platform.isx86_64 then pc64
+ /**/ if platform.isx86 then pc
# ARM
else if platform.isAarch32 then let
version = platform.parsed.cpu.version or null;
- in if version == null then pcBase
+ in if version == null then pc
else if lib.versionOlder version "6" then sheevaplug
else if lib.versionOlder version "7" then raspberrypi
else armv7l-hf-multiplatform
else if platform.isAarch64 then aarch64-multiplatform
+ else if platform.isRiscV then riscv-multiplatform
+
else if platform.parsed.cpu == lib.systems.parse.cpuTypes.mipsel then fuloong2f_n32
else if platform.parsed.cpu == lib.systems.parse.cpuTypes.powerpc64le then powernv
- else pcBase;
+ else pc;
}