labs/tidepool/src/packages/default.nix

94 lines
2.6 KiB
Nix
Raw Normal View History

{
lib,
2024-06-15 03:58:25 -07:00
lib',
config,
2024-06-22 10:58:44 -07:00
}:
let
2024-06-13 10:22:57 -07:00
doubles = lib'.systems.doubles.all;
2024-06-15 03:58:25 -07:00
2024-06-22 10:58:44 -07:00
packages = builtins.removeAttrs config.packages [ "cross" ];
in
{
includes = [ ./foundation ];
options = {
packages = lib.options.create {
description = "The package set.";
2024-06-15 03:58:25 -07:00
type = lib.types.submodule {
2024-06-22 10:58:44 -07:00
freeform = lib.types.attrs.of (lib.types.submodule { freeform = lib'.types.alias; });
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-15 03:58:25 -07:00
lib.options.create {
description = "The cross-compiled package set for the ${system} target.";
type = lib'.types.packages;
2024-06-22 10:58:44 -07:00
default = { };
}
);
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:
if package != { } then
(package.extend (
{ config }:
{
2024-06-15 03:58:25 -07:00
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;
};
};
};
2024-06-22 10:58:44 -07:00
}
)).config
else
package;
2024-06-15 03:58:25 -07:00
2024-06-22 10:58:44 -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-22 10:58:44 -07:00
) packages
2024-06-15 03:58:25 -07:00
);
}