diff options
author | John Ericson <John.Ericson@Obsidian.Systems> | 2020-11-29 00:01:14 +0000 |
---|---|---|
committer | John Ericson <John.Ericson@Obsidian.Systems> | 2021-01-21 22:44:09 -0500 |
commit | 8929989614589ee3acd070a6409b2b9700c92d65 (patch) | |
tree | 595f163bed2eda4b564fa19df7ed03e7679af00b /lib/systems/default.nix | |
parent | 77403c1c19f9e9c5f8ba9bb24f83c07eace126b2 (diff) |
lib: Clean up how linux and gcc config is specified
The `platform` field is pointless nesting: it's just stuff that happens to be defined together, and that should be an implementation detail. This instead makes `linux-kernel` and `gcc` top level fields in platform configs. They join `rustc` there [all are optional], which was put there and not in `platform` in anticipation of a change like this. `linux-kernel.arch` in particular also becomes `linuxArch`, to match the other `*Arch`es. The next step after is this to combine the *specific* machines from `lib.systems.platforms` with `lib.systems.examples`, keeping just the "multiplatform" ones for defaulting.
Diffstat (limited to 'lib/systems/default.nix')
-rw-r--r-- | lib/systems/default.nix | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/lib/systems/default.nix b/lib/systems/default.nix index 4edcbeb36f166..84d0b34805a01 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,7 +77,16 @@ 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" |