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
|
||||
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
|
||||
{
|
||||
perSystem = {
|
||||
# Declare per-system CI options
|
||||
# per-system CI options
|
||||
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 = {
|
||||
# Declare top-level CI options
|
||||
options.ci = {
|
||||
buildbot = lib.mkOption {
|
||||
type = types.lazyAttrsOf buildbotOpt.type;
|
||||
default = { };
|
||||
description = ''
|
||||
See `perSystem.ci.buildbot` for description and examples.
|
||||
'';
|
||||
};
|
||||
# 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
|
||||
# Transpose per-system definitions to the top-level
|
||||
config.ci = {
|
||||
buildbot = mapAttrs (_: sysCfg: sysCfg.ci.buildbot) config.allSystems;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue