diff --git a/nixos/doc/manual/development/running-nixos-tests-interactively.section.md b/nixos/doc/manual/development/running-nixos-tests-interactively.section.md index b29f6df5bdaa..38d1e5916072 100644 --- a/nixos/doc/manual/development/running-nixos-tests-interactively.section.md +++ b/nixos/doc/manual/development/running-nixos-tests-interactively.section.md @@ -71,10 +71,19 @@ An SSH-based backdoor to log into machines can be enabled with { name = "…"; nodes.machines = { /* … */ }; - sshBackdoor.enable = true; + interactive.sshBackdoor.enable = true; } ``` +::: {.warning} +Make sure to only enable the backdoor for interactive tests +(i.e. by using `interactive.sshBackdoor.enable`)! This is the only +supported configuration. + +Running a test in a sandbox with this will fail because `/dev/vhost-vsock` isn't available +in the sandbox. +::: + This creates a [vsock socket](https://man7.org/linux/man-pages/man7/vsock.7.html) for each VM to log in with SSH. This configures root login with an empty password. diff --git a/nixos/lib/testing/run.nix b/nixos/lib/testing/run.nix index 4ea0b1e9a034..f37aa1bcd0e5 100644 --- a/nixos/lib/testing/run.nix +++ b/nixos/lib/testing/run.nix @@ -43,27 +43,30 @@ in }; config = { - rawTestDerivation = hostPkgs.stdenv.mkDerivation { - name = "vm-test-run-${config.name}"; + rawTestDerivation = + assert lib.assertMsg (!config.sshBackdoor.enable) + "The SSH backdoor is currently not supported for non-interactive testing! Please make sure to only set `interactive.sshBackdoor.enable = true;`!"; + hostPkgs.stdenv.mkDerivation { + name = "vm-test-run-${config.name}"; - requiredSystemFeatures = - [ "nixos-test" ] - ++ lib.optionals hostPkgs.stdenv.hostPlatform.isLinux [ "kvm" ] - ++ lib.optionals hostPkgs.stdenv.hostPlatform.isDarwin [ "apple-virt" ]; + requiredSystemFeatures = + [ "nixos-test" ] + ++ lib.optionals hostPkgs.stdenv.hostPlatform.isLinux [ "kvm" ] + ++ lib.optionals hostPkgs.stdenv.hostPlatform.isDarwin [ "apple-virt" ]; - buildCommand = '' - mkdir -p $out + buildCommand = '' + mkdir -p $out - # effectively mute the XMLLogger - export LOGFILE=/dev/null + # effectively mute the XMLLogger + export LOGFILE=/dev/null - ${config.driver}/bin/nixos-test-driver -o $out - ''; + ${config.driver}/bin/nixos-test-driver -o $out + ''; - passthru = config.passthru; + passthru = config.passthru; - meta = config.meta; - }; + meta = config.meta; + }; test = lib.lazyDerivation { # lazyDerivation improves performance when only passthru items and/or meta are used. derivation = config.rawTestDerivation;