2024-06-11 04:39:26 -07:00
|
|
|
{
|
|
|
|
lib,
|
2024-06-15 03:58:25 -07:00
|
|
|
lib',
|
2024-06-11 04:39:26 -07:00
|
|
|
config,
|
|
|
|
}: let
|
2024-06-13 10:22:57 -07:00
|
|
|
doubles = lib'.systems.doubles.all;
|
2024-06-15 03:58:25 -07:00
|
|
|
|
|
|
|
packages = builtins.removeAttrs config.packages ["cross"];
|
2024-06-11 04:39:26 -07:00
|
|
|
in {
|
|
|
|
includes = [
|
2024-06-15 07:08:45 -07:00
|
|
|
./foundation
|
2024-06-11 04:39:26 -07:00
|
|
|
];
|
|
|
|
|
|
|
|
options = {
|
2024-06-15 02:35:37 -07:00
|
|
|
packages = lib.options.create {
|
|
|
|
description = "The package set.";
|
2024-06-15 03:58:25 -07:00
|
|
|
type = lib.types.submodule {
|
|
|
|
freeform = lib.modules.overrides.force (lib.types.attrs.of (lib.types.submodule {
|
|
|
|
freeform = lib.modules.overrides.force 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 = {};
|
|
|
|
});
|
|
|
|
};
|
2024-06-11 04:39:26 -07:00
|
|
|
};
|
|
|
|
|
2024-06-15 02:35:37 -07:00
|
|
|
preferences.packages = {
|
|
|
|
version = lib.options.create {
|
|
|
|
description = "The preferred package version when using aliases.";
|
|
|
|
type = lib.types.enum ["latest" "stable"];
|
|
|
|
default.value = "latest";
|
|
|
|
};
|
2024-06-14 01:26:16 -07:00
|
|
|
};
|
2024-06-13 10:22:57 -07:00
|
|
|
};
|
2024-06-15 03:58:25 -07:00
|
|
|
|
2024-06-15 07:08:45 -07:00
|
|
|
config.packages.config.cross = lib.attrs.generate doubles (
|
2024-06-15 03:58:25 -07:00
|
|
|
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;
|
2024-06-15 04:18:05 -07:00
|
|
|
target = lib.modules.overrides.default system;
|
2024-06-15 03:58:25 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
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;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
})
|
|
|
|
else package;
|
|
|
|
|
|
|
|
updated =
|
|
|
|
alias
|
|
|
|
// {
|
|
|
|
versions =
|
|
|
|
builtins.mapAttrs
|
|
|
|
(version: package: setHost package)
|
|
|
|
alias.versions;
|
|
|
|
};
|
|
|
|
in
|
|
|
|
updated)
|
|
|
|
)
|
|
|
|
packages
|
|
|
|
);
|
2024-06-11 04:39:26 -07:00
|
|
|
}
|