104 lines
3.1 KiB
Nix
104 lines
3.1 KiB
Nix
{config}: let
|
|
inherit (config) lib;
|
|
|
|
doubles = lib.systems.doubles.all;
|
|
|
|
packages = builtins.removeAttrs config.packages ["cross"];
|
|
in {
|
|
includes = [
|
|
./foundation
|
|
./aux/a.nix
|
|
./aux/b.nix
|
|
];
|
|
|
|
options = {
|
|
packages = lib.options.create {
|
|
description = "The package set.";
|
|
type = lib.types.submodule {
|
|
freeform = lib.types.packages;
|
|
|
|
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:
|
|
package // {
|
|
__modules__ = package.__modules__ ++ [
|
|
{
|
|
config.platform = {
|
|
host = lib.modules.override 5 system;
|
|
target = lib.modules.override 5 system;
|
|
};
|
|
}
|
|
];
|
|
};
|
|
# 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
|
|
);
|
|
}
|