expand on the extra-platforms option

This commit is contained in:
Valentin Gagarin 2023-07-19 10:57:37 +02:00
parent fcadac0a02
commit 0779005f49

View file

@ -194,7 +194,7 @@ public:
this, SYSTEM, "system", this, SYSTEM, "system",
R"( R"(
The system type of the current Nix installation. The system type of the current Nix installation.
Nix will only build a given [derivation](@docroot@/language/derivations.md) locally when its `system` attribute equals the value specified here or in [`extra-platforms`](@docroot@/command-ref/conf-file.html#conf-extra-platforms). Nix will only build a given [derivation](@docroot@/language/derivations.md) locally when its `system` attribute equals any of the values specified here or in [`extra-platforms`](#conf-extra-platforms).
The default value is set when Nix itself is compiled for the system it will run on. The default value is set when Nix itself is compiled for the system it will run on.
The following system types are widely used, as [Nix is actively supported on these platforms](@docroot@/contributing/hacking.md#platforms): The following system types are widely used, as [Nix is actively supported on these platforms](@docroot@/contributing/hacking.md#platforms):
@ -676,18 +676,20 @@ public:
getDefaultExtraPlatforms(), getDefaultExtraPlatforms(),
"extra-platforms", "extra-platforms",
R"( R"(
Platforms other than the native one which this machine is capable of System types of executables that can be run on this machine.
building for. This can be useful for supporting additional
architectures on compatible machines: i686-linux can be built on Nix will only build a given [derivation](@docroot@/language/derivations.md) locally when its `system` attribute equals any of the values specified here or in the [`system` option](#conf-system).
x86\_64-linux machines (and the default for this setting reflects
this); armv7 is backwards-compatible with armv6 and armv5tel; some Setting this can be useful to build derivations locally on compatible machines:
aarch64 machines can also natively run 32-bit ARM code; and - `i686-linux` executables can be run on `x86_64-linux` machines (set by default)
qemu-user may be used to support non-native platforms (though this - `x86_64-darwin` executables can be run on macOS `aarch64-darwin` with Rosetta 2 (set by default where applicable)
may be slow and buggy). Most values for this are not enabled by - `armv6` and `armv5tel` executables can be run on `armv7`
default because build systems will often misdetect the target - some `aarch64` machines can also natively run 32-bit ARM code
platform and generate incompatible code, so you may wish to - `qemu-user` may be used to support non-native platforms (though this
cross-check the results of using this option against proper may be slow and buggy)
natively-built versions of your derivations.
Build systems will usually detect the target platform to be the current physical system and therefore produce machine code incompatible with what may be intended in the derivation.
You should design your derivation's `builder` accordingly and cross-check the results when using this option against natively-built versions of your derivation.
)", {}, false}; )", {}, false};
Setting<StringSet> systemFeatures{ Setting<StringSet> systemFeatures{