nixos/preload: init
[NixPkgs.git] / nixos / lib / testing / interactive.nix
blob317ed4241882bee7bc8e8c3ae32bf4f3cc850232
1 { config, lib, moduleType, hostPkgs, ... }:
2 let
3   inherit (lib) mkOption types mdDoc;
4 in
6   options = {
7     interactive = mkOption {
8       description = mdDoc ''
9         Tests [can be run interactively](#sec-running-nixos-tests-interactively)
10         using the program in the test derivation's `.driverInteractive` attribute.
12         When they are, the configuration will include anything set in this submodule.
14         You can set any top-level test option here.
16         Example test module:
18         ```nix
19         { config, lib, ... }: {
21           nodes.rabbitmq = {
22             services.rabbitmq.enable = true;
23           };
25           # When running interactively ...
26           interactive.nodes.rabbitmq = {
27             # ... enable the web ui.
28             services.rabbitmq.managementPlugin.enable = true;
29           };
30         }
31         ```
33         For details, see the section about [running tests interactively](#sec-running-nixos-tests-interactively).
34       '';
35       type = moduleType;
36       visible = "shallow";
37     };
38   };
40   config = {
41     interactive.qemu.package = hostPkgs.qemu;
42     interactive.extraDriverArgs = [ "--interactive" ];
43     passthru.driverInteractive = config.interactive.driver;
44   };