labs/tidepool/src/exports/packages.nix

46 lines
1.1 KiB
Nix
Raw Normal View History

2024-06-22 17:58:44 +00:00
{ config, lib }:
let
2024-06-13 17:22:57 +00:00
lib' = config.lib;
2024-06-22 17:58:44 +00:00
in
{
options = {
exports.packages = lib.options.create {
type = lib.types.attrs.of (lib'.types.raw);
2024-06-22 17:58:44 +00:00
default.value = { };
};
exported.packages = lib.options.create {
2024-06-14 11:47:54 +00:00
type = lib.types.attrs.of (lib.types.attrs.of lib.types.derivation);
2024-06-22 17:58:44 +00:00
default.value = { };
};
};
config = {
2024-06-22 17:58:44 +00:00
exported.packages =
let
all = lib.attrs.generate lib'.systems.doubles.all (
system:
let
all = builtins.mapAttrs (
name: package:
let
2024-06-17 09:15:45 +00:00
result = lib'.packages.build package system system system;
in
2024-06-22 17:58:44 +00:00
result
) config.exports.packages;
2024-06-14 11:47:54 +00:00
2024-06-22 17:58:44 +00:00
available = lib.attrs.filter (name: package: builtins.elem system package.meta.platforms) all;
2024-06-22 17:58:44 +00:00
packages = builtins.mapAttrs (name: package: package.package) available;
in
packages
2024-06-22 17:58:44 +00:00
);
2024-06-14 11:47:54 +00:00
2024-06-22 17:58:44 +00:00
available = lib.attrs.filter (
system: packages: builtins.length (builtins.attrNames packages) != 0
) all;
in
2024-06-14 11:47:54 +00:00
available;
};
}