{ lib, lib', config, }: let doubles = lib'.systems.doubles.all; packages = builtins.removeAttrs config.packages [ "cross" ]; in { includes = [ ./foundation ]; options = { packages = lib.options.create { description = "The package set."; type = lib.types.submodule { freeform = lib.types.attrs.of (lib.types.submodule { freeform = lib'.types.alias; }); options.cross = lib.attrs.generate doubles ( system: lib.options.create { description = "The cross-compiled package set for the ${system} target."; type = lib'.types.packages; default = { }; } ); }; }; preferences.packages = { version = lib.options.create { description = "The preferred package version when using aliases."; type = lib.types.enum [ "latest" "stable" ]; default.value = "latest"; }; }; }; config.packages.cross = lib.attrs.generate doubles ( system: builtins.mapAttrs ( namespace: builtins.mapAttrs ( name: alias: let setHost = package: if package != { } then (package.extend ( { config }: { config = { platform = { host = lib.modules.overrides.force system; target = lib.modules.overrides.default system; }; deps = { build = { only = setHost package.deps.build.only; build = setHost package.deps.build.build; host = setHost package.deps.build.host; target = setHost package.deps.build.target; }; host = { only = setHost package.deps.host.only; host = setHost package.deps.host.host; target = setHost package.deps.host.target; }; target = { only = setHost package.deps.target.only; target = setHost package.deps.target.target; }; }; }; } )).config else package; updated = alias // { versions = builtins.mapAttrs (version: package: setHost package) alias.versions; }; in updated ) ) packages ); }