{ lib, config, ... }: let inherit (lib) types; in { perSystem.options.ci.buildbot = lib.mkOption { type = types.lazyAttrsOf types.raw; default = { }; description = '' A set of tests for [buildbot] to run. [buildbot]: https://buildbot.nix-community.org ''; }; flake = { # top-level CI option # # NOTE: # This must be an actual option, NOT a set of options. # Otherwise, flake partitions will not be lazy. options.ci = lib.mkOption { type = types.lazyAttrsOf (types.lazyAttrsOf types.raw); default = { }; description = '' Outputs related to CI. Usually defined via the `perSystem.ci` options. ''; }; # Transpose per-system CI outputs to the top-level config.ci.buildbot = lib.mapAttrs ( _: sysCfg: sysCfg.ci.buildbot ) config.allSystems; }; }