Commit graph

385 commits

Author SHA1 Message Date
Robert Hensing 63e2606ddf nixos.runTest: Add extend, overrideTestDerivation 2025-07-06 13:39:15 +02:00
Maximilian Bosch c6978e8a58
nixos/test-driver: exit early if /dev/vhost-vsock isn't available
Right now it wrongly seems as if you can set
`sshBackdoor.enable = true;` for each test and not only for debugging
purposes.

This is wrong however since you'd need to pass /dev/vhost-vsock into the
sandbox for this (which is also a prerequisite for #392117).

To make that clear, two things were changed:

* add a warning to the manual to communicate this.
* exit both interactive and non-interactive driver early if
  /dev/vhost-vsock is missing and the ssh backdoor is enabled.

  If that's the case, we pass a CLI flag to the driver already in the
  interactive case. This change also sets the flag for the
  non-interactive case.

  That way we also get a better error if somebody tries to enable this
  on a system that doesn't support that.
2025-05-13 11:14:13 +02:00
Jacek Galowicz 08ed87ccc6
nixos/test-driver: allow assigning other vsock number ranges (#405508) 2025-05-11 13:24:41 +02:00
Arnout Engelen eb9ce0eed3
treewide: remove inactive maintainer ericsagnes 2025-05-09 12:03:09 +02:00
Maximilian Bosch a9adfc631a
nixos/test-driver: allow assigning other vsock number ranges
I'm a little annoyed at myself that I only realized this _after_ #392030
got merged. But I realized that if something else is using AF_VSOCK or
you simply have another interactive test running (e.g. by another user
on a larger builder), starting up VMs in the driver fails with

    qemu-system-x86_64: -device vhost-vsock-pci,guest-cid=3: vhost-vsock: unable to set guest cid: Address already in use

Multi-user setups are broken anyways because you usually don't have
permissions to remove the VM state from another user and thus starting
the driver fails with

    PermissionError: [Errno 13] Permission denied: PosixPath('/tmp/vm-state-machine')

but this is something you can work around at least.

I was considering to generate random offsets, but that's not feasible
given we need to know the numbers at eval time to inject them into the
QEMU args. Also, while we could do this via the test-driver, we should
also probe if the vsock numbers are unused making the code even more
complex for a use-case I consider rather uncommon.

Hence the solution is to do

    sshBackdoor.vsockOffset = 23542;

when encountering conflicts.
2025-05-09 11:54:00 +02:00
Jacek Galowicz 8b3baa1402
nixos/test-driver: add backdoor based on systemd-ssh-proxy & AF_VSOCK (#392030) 2025-05-09 08:03:55 +02:00
NotAShelf ce5cf79e21
nixos/doc: fix typos in settings-options section 2025-05-01 19:20:22 +03:00
Maximilian Bosch 1bd8073958
nixos/test-driver: add backdoor based on systemd-ssh-proxy & AF_VSOCK
With this it's possible to trivially SSH into running machines from the
test-driver. This is especially useful when running VM tests
interactively on a remote system.

This is based on `systemd-ssh-proxy(1)`, so there's no need to configure
any additional networking on the host-side.

Suggested-by: Ryan Lahfa <masterancpp@gmail.com>
2025-04-26 11:35:47 +02:00
Jacek Galowicz d0c304d4c1
nixos/test-driver: improve error reporting and assertions (#390996) 2025-04-26 10:26:01 +02:00
Morgan Jones 85fef808ad
doc: init Testing Hardware Features section with vwifi 2025-04-20 15:39:25 -07:00
Martin Weinelt f362195287
nixos/doc: update python39Packages reference
The packages set is now gone and pytorch has been renamed to just torch.
2025-04-13 01:26:42 +02:00
Johannes Kirschbauer 33daa3f4b9
lib.modules: init test for lib.mkDefinition 2025-04-03 15:03:00 +02:00
Johannes Kirschbauer c906064af1
lib.modules: document mkDefinition section 2025-04-03 14:12:08 +02:00
Wolfgang Walther 9992c0fd4d
doc/option-types: fix attrTag example
Further down, `ssh = { drop = {}; };` is used.
2025-03-27 14:22:53 +01:00
maryjane a6f14a6036 nixos/doc: Fix outdated references in the NixOS manual 2025-03-25 19:51:54 +00:00
Maximilian Bosch a1dfaf51e2
nixos/test-driver: integrate Python unittest assertions
Replaces / Closes #345948

I tried to integrate `pytest` assertions because I like the reporting,
but I only managed to get the very basic thing and even that was messing
around a lot with its internals.

The approach in #345948 shifts too much maintenance effort to us, so
it's not really desirable either.

After discussing with Benoit on Ocean Sprint about this, we decided that
it's probably the best compromise to integrate `unittest`: it also
provides good diffs when needed, but the downside is that existing tests
don't benefit from it.

This patch essentially does the following things:

* Add a new global `t` that is an instance of a `unittest.TestCase`
  class. I decided to just go for `t` given that e.g.
  `tester.assertEqual` (or any other longer name) seems quite verbose.

* Use a special class for errors that get special treatment:
  * The traceback is minimized to only include frames from the
    testScript: in this case I don't really care about anything else and
    IMHO that's just visual noise.

    This is not the case for other exceptions since these may indicate a
    bug and then people should be able to send the full traceback to the
    maintainers.
  * Display the error, but with `!!!` as prefix to make sure it's
    easier to spot in between other logs.

This looks e.g. like

    !!! Traceback (most recent call last):
    !!!   File "<string>", line 7, in <module>
    !!!     foo()
    !!!   File "<string>", line 5, in foo
    !!!     t.assertEqual({"foo":[1,2,{"foo":"bar"}]},{"foo":[1,2,{"bar":"foo"}],"bar":[1,2,3,4,"foo"]})
    !!!
    !!! NixOSAssertionError: {'foo': [1, 2, {'foo': 'bar'}]} != {'foo': [1, 2, {'bar': 'foo'}], 'bar': [1, 2, 3, 4, 'foo']}
    !!! - {'foo': [1, 2, {'foo': 'bar'}]}
    !!! + {'bar': [1, 2, 3, 4, 'foo'], 'foo': [1, 2, {'bar': 'foo'}]}
    cleanup
    kill machine (pid 9)
    qemu-system-x86_64: terminating on signal 15 from pid 6 (/nix/store/wz0j2zi02rvnjiz37nn28h3gfdq61svz-python3-3.12.9/bin/python3.12)
    kill vlan (pid 7)
    (finished: cleanup, in 0.00 seconds)

Co-authored-by: bew <bew@users.noreply.github.com>
2025-03-20 12:30:58 +00:00
Matt Sturgeon 2611d5bd70
formats.lua: init
Add a lua format, based on `lib.generators.toLua`.
2025-03-19 21:18:49 +00:00
Matt Sturgeon c347d605c9
lib.types: add luaInline
Represents inline lua as expected by `lib.generators.toLua`, for
embedding raw lua expressions within structurally generated lua.
2025-03-15 10:29:28 +00:00
Peder Bergebakken Sundt d525eb5838 treewide: fix typos
done with `fd \\\.md$ . --type f -x typos --write-changes`
2025-02-22 02:02:07 +01:00
Jeremy Fleischman 6d7f6a92cc
lib/types: add types.pathWith
This gives people some flexibility when they need a path type, and
prevents a "combinatorial explosion" of various path stops.

I've re-implemented our existing `path` and `pathInStore` types using
`pathWith`. Our existing `package` type is potentially a candidate for
similar treatment, but it's a little quirkier (there's some stuff with
`builtins.hasContext` and `toDerivation` that I don't completely
understand), and I didn't want to muddy this PR with that.

As a happy side effect of this work, we get a new feature: the ability
to create a type for paths *not* in the store. This is useful for when a
module needs a path to a file, and wants to protect people from
accidentally leaking that file into the nix store.
2025-02-15 16:14:06 +07:00
Silvan Mosberger 4fbf6bf123
pkgs-lib.formats.xml: init (#342633) 2025-01-13 22:11:17 +01:00
Felix Buehler a468405d67 pkgs-lib.formats.xml: init 2025-01-13 21:56:22 +01:00
Gavin John ce02ad25ed doc/manual: replace bad advice about package options and overlays 2025-01-08 12:49:40 -08:00
uku ccfeb0ac5b
pkgs.formats: add documentation entry for CDN 2025-01-08 14:02:24 +01:00
Robert Hensing 04a5fd4b4f
nixos/eval-config: Deprecate NIXOS_EXTRA_MODULE_PATH (#349549) 2025-01-05 20:51:20 +01:00
Will Fancher 15be453e9a
switch-to-configuration: Better handling of socket-activated units (#359724) 2025-01-04 11:51:21 -05:00
misuzu bec0f1da1b
nixos/manual: add hint to interactive testing about Internet access (#338639) 2024-12-14 13:21:43 +02:00
Johannes Kirschbauer d504a1e680
lib.types.attrsWith: add placeholder parameter 2024-12-09 15:25:18 +01:00
Andreas Fuchs d95a8f5a13 Document the logic around X-NotSocketActivated in the manual 2024-12-09 08:57:47 -05:00
Johannes Kirschbauer f2d4dc7a32
doc: lib.types.attrsWith init documentation 2024-12-03 08:37:33 +01:00
Johannes Kirschbauer 6b53949b0c
formats.ini: expose INI atom from all ini formats 2024-11-18 16:07:22 +01:00
Will Fancher 37ee6ba681 Revert "NixOS apply script"
Reverts #344407

This has broken nixos-rebuild switch so that it no longer updates the profile, which has bad consequences including not updating the systemd-boot menu with new generations.
2024-11-01 20:18:09 -04:00
Aleksana 11874eccfa
nixos/doc: Split mkdir mode into chmod command for clarity (#236740) 2024-11-01 11:09:52 +08:00
Robert Hensing 7902cea1de nixos: Update documentation to refer to bin/apply 2024-10-30 00:21:21 +01:00
Jacek Galowicz d2e4b94d8a nixos documentation: Suggest pkgs.testers.runNixOSTest
`pkgs.testers.runNixOSTest` is the latest and best way to run NixOS Tests
outside of nixpkgs as it also improves evaluation performance by
injecting the host pkgs into all the guests.
It seems no one uses it because it is not mentioned at the right places.
2024-10-28 09:36:39 +01:00
Robert Hensing 5f197bf5d0 nixos/eval-config: Deprecate NIXOS_EXTRA_MODULE_PATH
This gets rid of a potentially confusing behavior that doesn't need to
be in NixOS, and nobody ever bothered to add a test for it.
Let's keep things simple!
The suggested snippet is better than this feature ever was, and will be
in the user's face, where it belongs, kindly.

Tested with

    nix-instantiate nixos/lib/eval-config.nix --arg modules '[{fileSystems."/".device="x";boot.loader.grub.enable=false;}]' -A config.system.build.toplevel
    NIXOS_EXTRA_MODULE_PATH=$HOME/whatever.nix nix-instantiate nixos/lib/eval-config.nix --arg modules '[{fileSystems."/".device="x";boot.loader.grub.enable=false;}]' -A config.system.build.toplevel
2024-10-18 17:04:35 +02:00
K900 1f9fc918ce treewide: use pkgs.nixos-enter instead of config.system.build.nixos-enter 2024-09-21 16:13:36 +03:00
Artturin 7a199f5dd6
nixos/doc: add documentation for formats.hocon and formats.libconfig (#320339) 2024-09-10 18:26:10 +03:00
Felix Stupp 61fd315b42
nixos/manual: add hint to interactive testing about Internet access
verified with following minimal test, embedded in a flake for ease of
execution:
```nix
{
  inputs.nixpkgs.url = "github:NixOS/nixpkgs/master";
  outputs = { nixpkgs, ... }:
    let
      pkgs = import nixpkgs { system = "x86_64-linux"; };
    in
    {
      nixosTests.x86_64-linux.internet = pkgs.nixosTest {
        name = "internet";
        nodes.machine = { };
        # only succeeds in interactive mode
        testScript = ''
          machine.wait_for_unit("default.target")
          print(machine.succeed("curl -4 https://nixos.org"))
        '';
      };
    };
}
```

Launch this test interactively as described in the manual & run
`test_script()` to verify that the VM has Internet access.
2024-08-31 14:40:14 +00:00
Peder Bergebakken Sundt 99dec1f6b0 treewide: fix doc typos
Done with `fd \\\.md$ . --type f -x typos --write-changes`
2024-07-26 00:55:13 +02:00
h7x4 bf2adb82b7
nixos/doc: move implementation notes for formats.libconfig to docs 2024-06-16 20:58:50 +02:00
h7x4 a891526b22
nixos/doc: add documentation for formats.libconfig 2024-06-16 20:58:49 +02:00
h7x4 141a8a6c86
nixos/doc: move implementation notes for formats.hocon to docs 2024-06-16 20:58:48 +02:00
h7x4 89aaab565e
nixos/doc: add documentation for formats.hocon 2024-06-16 20:58:47 +02:00
Pedro O. A. Regis 015e29a742 doc: removes extra backtick 2024-06-07 15:21:57 -03:00
Sizhe Zhao 5209c84957
nixos/activation/bootspec: fix style 2024-06-05 11:14:36 +08:00
Sizhe Zhao 4f05b8e213
nixos/activation/bootspec: rephrase 2024-06-05 11:13:43 +08:00
Sizhe Zhao 3a4753867d
nixos/activation/bootspec: no longer experimental 2024-06-05 11:09:55 +08:00
Sizhe Zhao 0aaccaa596
nixos/activation/bootspec: now enabled by default 2024-06-05 11:06:03 +08:00
crayor1 970f689a49
nixos/doc: fix a typo in option-declarations.section.md (#304733)
Fix a typo
2024-05-18 13:06:50 +08:00