mirror of
https://github.com/nix-community/nixvim.git
synced 2025-07-10 09:14:31 +02:00
flake/ci: fix lazy eval of dev partition
If the `ci` options are a set of options rather than a single option,
then the module system cannot lazily override it via `mkForce`.
In practice, this means that the dev partition gets evaluated strictly
when the module system "pushes down" the `ci` definitions to its
options.
Instead, we must ensure that each attribute listed in `partitionedAttrs`
corresponds to an actual option which can be directly defined, with no
"pushing down" required.
Fixes #3532
(cherry picked from commit 67785f9577
)
This commit is contained in:
parent
76d059bac2
commit
a11133507a
1 changed files with 24 additions and 22 deletions
46
flake/ci.nix
46
flake/ci.nix
|
@ -4,38 +4,40 @@ let
|
||||||
mapAttrs
|
mapAttrs
|
||||||
types
|
types
|
||||||
;
|
;
|
||||||
|
|
||||||
buildbotOpt = lib.mkOption {
|
|
||||||
type = types.lazyAttrsOf types.package;
|
|
||||||
default = { };
|
|
||||||
description = ''
|
|
||||||
A set of tests for [buildbot] to run.
|
|
||||||
|
|
||||||
[buildbot]: https://buildbot.nix-community.org
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
perSystem = {
|
perSystem = {
|
||||||
# Declare per-system CI options
|
# per-system CI options
|
||||||
options.ci = {
|
options.ci = {
|
||||||
buildbot = buildbotOpt;
|
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 = {
|
flake = {
|
||||||
# Declare top-level CI options
|
# top-level CI option
|
||||||
options.ci = {
|
#
|
||||||
buildbot = lib.mkOption {
|
# NOTE:
|
||||||
type = types.lazyAttrsOf buildbotOpt.type;
|
# This must be an actual option, NOT a set of options.
|
||||||
default = { };
|
# Otherwise, flake partitions will not be lazy.
|
||||||
description = ''
|
options.ci = lib.mkOption {
|
||||||
See `perSystem.ci.buildbot` for description and examples.
|
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
|
# Transpose per-system definitions to the top-level
|
||||||
config.ci = {
|
config.ci = {
|
||||||
buildbot = mapAttrs (_: sysCfg: sysCfg.ci.buildbot) config.allSystems;
|
buildbot = mapAttrs (_: sysCfg: sysCfg.ci.buildbot) config.allSystems;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue