In Nix, "system" generally refers to the cpu-os string, such as
In Flakes specifically, these strings are used as attribute names, so that the Nix CLI can find a derivation for the right platform.
Many things, such as packages, can exist on multiple systems. For these, use
Other things do not exist on multiple systems. Examples are the configuration
of a specific machine, or a the execution of a deployment. These are not
perSystem, but in other top-level options, or directly into the
flake outputs' top level (e.g.
Such top-level entities typically do need to read packages, etc that are defined
perSystem. Instead of reading them from
it may be more convenient to bring all
perSystem definitions for a system into