mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-13 05:05:29 +03:00
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:
parent
f659db7ba2
commit
0f83261f0e
1 changed files with 23 additions and 2 deletions
|
@ -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"; }];
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue