labs/tidepool/src/packages/default.nix

105 lines
3.1 KiB
Nix
Raw Normal View History

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
packages = builtins.removeAttrs config.packages ["cross"];
in {
includes = [
./foundation
./aux/a.nix
./aux/b.nix
];
options = {
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:
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;
default = {};
}
2024-06-22 10:58:44 -07:00
);
2024-06-15 03:58:25 -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"
];
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
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 (
namespace:
builtins.mapAttrs (
name: alias: let
setHost = package:
2024-07-03 02:43:27 -07:00
package // {
__modules__ = package.__modules__ ++ [
{
config.platform = {
host = lib.modules.override 5 system;
target = lib.modules.override 5 system;
};
}
];
};
2024-07-03 00:35:21 -07:00
# 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
updated =
alias
// {
versions = builtins.mapAttrs (version: package: setHost package) alias.versions;
};
in
updated
)
2024-06-15 03:58:25 -07:00
)
packages
2024-06-15 03:58:25 -07:00
);
}