2024-07-03 00:35:21 -07:00
|
|
|
{config}: let
|
|
|
|
inherit (config) lib;
|
|
|
|
|
|
|
|
doubles = lib.systems.doubles.all;
|
2024-06-15 03:58:25 -07:00
|
|
|
|
2024-06-24 10:51:25 -07:00
|
|
|
packages = builtins.removeAttrs config.packages ["cross"];
|
|
|
|
in {
|
|
|
|
includes = [
|
|
|
|
./foundation
|
|
|
|
./aux/a.nix
|
|
|
|
./aux/b.nix
|
|
|
|
];
|
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 {
|
2024-07-03 00:35:21 -07:00
|
|
|
freeform = lib.types.packages;
|
2024-06-15 03:58:25 -07:00
|
|
|
|
2024-06-22 10:58:44 -07:00
|
|
|
options.cross = lib.attrs.generate doubles (
|
|
|
|
system:
|
2024-06-24 10:51:25 -07:00
|
|
|
lib.options.create {
|
|
|
|
description = "The cross-compiled package set for the ${system} target.";
|
2024-07-03 00:35:21 -07:00
|
|
|
type = lib.types.packages;
|
2024-06-24 10:51:25 -07:00
|
|
|
default = {};
|
|
|
|
}
|
2024-06-22 10:58:44 -07:00
|
|
|
);
|
2024-06-15 03:58:25 -07:00
|
|
|
};
|
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.";
|
2024-06-22 10:58:44 -07:00
|
|
|
type = lib.types.enum [
|
|
|
|
"latest"
|
|
|
|
"stable"
|
|
|
|
];
|
2024-06-15 02:35:37 -07:00
|
|
|
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-16 02:24:21 -07:00
|
|
|
config.packages.cross = lib.attrs.generate doubles (
|
2024-06-15 03:58:25 -07:00
|
|
|
system:
|
2024-06-22 10:58:44 -07:00
|
|
|
builtins.mapAttrs (
|
2024-06-24 10:51:25 -07:00
|
|
|
namespace:
|
|
|
|
builtins.mapAttrs (
|
|
|
|
name: alias: let
|
|
|
|
setHost = package:
|
2024-07-03 00:35:21 -07:00
|
|
|
package;
|
|
|
|
# if package != {}
|
|
|
|
# then
|
|
|
|
# (package.extend (
|
|
|
|
# {config}: {
|
|
|
|
# config = {
|
|
|
|
# platform = {
|
|
|
|
# host = lib.modules.overrides.force system;
|
|
|
|
# target = lib.modules.overrides.default system;
|
|
|
|
# };
|
2024-06-15 03:58:25 -07:00
|
|
|
|
2024-07-03 00:35:21 -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;
|
|
|
|
# };
|
|
|
|
# };
|
|
|
|
# };
|
|
|
|
# }
|
|
|
|
# ))
|
|
|
|
# .config
|
|
|
|
# else package;
|
2024-06-15 03:58:25 -07:00
|
|
|
|
2024-06-24 10:51:25 -07:00
|
|
|
updated =
|
|
|
|
alias
|
|
|
|
// {
|
|
|
|
versions = builtins.mapAttrs (version: package: setHost package) alias.versions;
|
|
|
|
};
|
|
|
|
in
|
|
|
|
updated
|
|
|
|
)
|
2024-06-15 03:58:25 -07:00
|
|
|
)
|
2024-06-24 10:51:25 -07:00
|
|
|
packages
|
2024-06-15 03:58:25 -07:00
|
|
|
);
|
2024-06-11 04:39:26 -07:00
|
|
|
}
|