nixos/testing: Add node.pkgsReadOnly escape hatch
By adding this option indirection, a test can declare all by itself that it needs a custom nixpkgs. This is a more convenient way of going about this when the caller of the test framework receives a `node.pkgs` unconditionally.
This commit is contained in:
@@ -1,7 +1,17 @@
|
|||||||
testModuleArgs@{ config, lib, hostPkgs, nodes, ... }:
|
testModuleArgs@{ config, lib, hostPkgs, nodes, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
inherit (lib) mkOption mkForce optional types mapAttrs mkDefault mkIf mdDoc;
|
inherit (lib)
|
||||||
|
literalExpression
|
||||||
|
literalMD
|
||||||
|
mapAttrs
|
||||||
|
mdDoc
|
||||||
|
mkDefault
|
||||||
|
mkIf
|
||||||
|
mkOption mkForce
|
||||||
|
optional
|
||||||
|
types
|
||||||
|
;
|
||||||
|
|
||||||
baseOS =
|
baseOS =
|
||||||
import ../eval-config.nix {
|
import ../eval-config.nix {
|
||||||
@@ -85,6 +95,17 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
node.pkgsReadOnly = mkOption {
|
||||||
|
description = mdDoc ''
|
||||||
|
Whether to make the `nixpkgs.*` options read-only. This is only relevant when [`node.pkgs`](#test-opt-node.pkgs) is set.
|
||||||
|
|
||||||
|
Set this to `false` when any of the [`nodes`](#test-opt-nodes) needs to configure any of the `nixpkgs.*` options. This will slow down evaluation of your test a bit.
|
||||||
|
'';
|
||||||
|
type = types.bool;
|
||||||
|
default = config.node.pkgs != null;
|
||||||
|
defaultText = literalExpression ''node.pkgs != null'';
|
||||||
|
};
|
||||||
|
|
||||||
node.specialArgs = mkOption {
|
node.specialArgs = mkOption {
|
||||||
type = types.lazyAttrsOf types.raw;
|
type = types.lazyAttrsOf types.raw;
|
||||||
default = { };
|
default = { };
|
||||||
@@ -118,7 +139,7 @@ in
|
|||||||
|
|
||||||
passthru.nodes = config.nodesCompat;
|
passthru.nodes = config.nodesCompat;
|
||||||
|
|
||||||
defaults = mkIf (config.node.pkgs != null) {
|
defaults = mkIf config.node.pkgsReadOnly {
|
||||||
nixpkgs.pkgs = config.node.pkgs;
|
nixpkgs.pkgs = config.node.pkgs;
|
||||||
imports = [ ../../modules/misc/nixpkgs/read-only.nix ];
|
imports = [ ../../modules/misc/nixpkgs/read-only.nix ];
|
||||||
disabledModules = [{ key = "nodes.nix-pkgs"; }];
|
disabledModules = [{ key = "nodes.nix-pkgs"; }];
|
||||||
|
|||||||
Reference in New Issue
Block a user