Commit Graph

1092 Commits

Author SHA1 Message Date
Stefan Hertrampf
b505db6f6d nixos/test-driver: add AbstractLogger interface 2024-05-07 15:17:15 +02:00
Jared Baur
38907ef84d
nixos/systemd-lib: fix assertRangeOrOneOf when value is not comparable
We cannot compare non-numerical values to a min or max value in a range.
2024-05-06 10:41:20 -07:00
stove
a7931adab8 nixos/lib/qemu-common: add riscv{32,64}-linux to qemu guest matrix 2024-04-29 14:05:39 +02:00
Florian Klink
5a2d4496d3
Merge pull request #297726 from r-vdp/systemd-unit-names
systemd: add a name option to all systemd units
2024-04-23 12:58:51 +03:00
Stefan Hertrampf
a6160e5763 nixos/test-driver: use function instead of var
Use a proper function to enable serial log printing instead of setting
class member variables directly.
2024-04-22 13:35:25 +02:00
Stefan Hertrampf
c2c525f5bc nixos/test-driver: add junit-xml python package 2024-04-22 13:35:24 +02:00
Stefan Hertrampf
0d015895de nixos/test-driver: separate the subtest log call
We do not use the generic "nested" function but introduce a separate
subtest log call. This will later allow us to track subtests and account
logs to specific subtests.
2024-04-22 13:35:24 +02:00
Ryan Hendrickson
61153af068
Merge pull request #298983 from illustris/mysql
nixos/systemd-lib: fix restart/reloadTriggers when passing paths
2024-04-21 17:45:16 -04:00
illustris
4a9c962aca
nixos/systemd-lib: fix restart/reloadTriggers when passing paths
When passing a path to restartTriggers or reloadTriggers, X-Restart/Reload-Triggers
will get populated by the absolute path of the file on the machine where the
config is evaluated. This patch corrects this behavior.
2024-04-21 09:40:17 +05:30
r-vdp
9258f57625
systemd: add a name option to all systemd units
This allows us to set things like dependencies in a way that we can
catch typos at eval time.
So instead of
```nix
systemd.services.foo.wants = [ "bar.service" ];
```
we can write
```nix
systemd.services.foo.wants = [ config.systemd.services.bar.name ];
```
which will throw an error if no such service has been defined.

Not all cases can be done like this (eg template services), but in a lot
of cases this will allow to avoid typos.

There is a matching option on the unit option
(`systemd.units."foo.service".name`) as well.
2024-04-15 11:32:45 +02:00
Astrid Yu
ed854ed0e3 nixos/networkd: add [Bridge] section to netdev conf
This setting was missing from netdev.

This commit additionally adds a test using the new
section, ensuring that STP can be enabled.
2024-04-14 15:16:44 -07:00
Jacek Galowicz
8d3a38e8b1 NixOS Integration tests: Re-enable for macOS 2024-04-12 13:41:27 +02:00
Cole Helbling
dbc967d14d Revert "NixOS Integration Tests: Enable again for darwin" 2024-04-10 12:52:12 -07:00
Jacek Galowicz
e4bf075cff NixOS Integration Tests: Enable again for darwin 2024-04-10 17:59:11 +02:00
nikstur
80cafa6a29
Merge pull request #302590 from nikstur/repart-image-label-length
nixos/image/repart: assert maximum label length
2024-04-08 18:48:53 +02:00
nikstur
4c397ea6de systemd-lib: include GPTMaxLabelLength constant 2024-04-08 16:42:25 +02:00
Jacek Galowicz
aaef13b238
Merge pull request #301799 from alyssais/QEMU_OPTS
nixos/test-driver: don't add QEMU_OPTS twice
2024-04-05 14:56:09 +02:00
Alyssa Ross
4491b9ec0d
nixos/test-driver: don't add QEMU_OPTS twice
As the TODO says, this is already included by the script.

If adding a device, including this again here would result in either
two devices being added, or, if they were explicitly named, an error
due to reuse of the name.
2024-04-05 12:30:36 +02:00
K900
7b602cff5c nixos/tests/installer: avoid create_machine, clean up
- use normal VM nodes for target, with some extra trickery
- rename preBootCommands to postBootCommands to match its actual intent
- rename VMs to installer and target, so they're not all called machine
- set platforms on non-UEFI tests properly
- add missing packages for systemd-boot test
- fix initrd secrets leaking into the store and having wrong paths
2024-04-03 16:16:11 +03:00
Philip Taron
ebde306504
nixos/lib, doc: remove references to mdDoc (#300738)
* doc: remove references to mdDoc in nixos/doc/manual/development/option-declarations.section.md

* nixos/lib: remove mdDoc in nixos/lib/make-options-doc/default.nix

* nixos/lib: remove mdDoc in nixos/lib/systemd-types.nix

* nixos/lib: remove mdDoc in nixos/lib/systemd-unit-options.nix

* nixos/lib: remove mdDoc in nixos/lib/testing/driver.nix

* nixos/lib: remove mdDoc in nixos/lib/testing/interactive.nix

* nixos/lib: remove mdDoc in nixos/lib/testing/meta.nix

* nixos/lib: remove mdDoc in nixos/lib/testing/name.nix

* nixos/lib: remove mdDoc in nixos/lib/testing/network.nix

* nixos/lib: remove mdDoc in nixos/lib/testing/nodes.nix

* nixos/lib: remove mdDoc in nixos/lib/testing/run.nix

* nixos/lib: remove mdDoc in nixos/lib/testing/testScript.nix
2024-04-01 16:58:23 -07:00
Florian Klink
27968a064c
Merge pull request #299652 from philiptaron/issue-208242/nixos/lib/systemd
Avoid top-level `with ...;` in `nixos/lib/systemd*`
2024-04-01 17:19:15 +02:00
Silvan Mosberger
1f7ac8f58b
Merge pull request #296384 from pennae/remove-docbook-docs-support
nixos/docs: remove docbook support machinery
2024-03-28 18:03:31 +01:00
pennae
02aff756c3 nixos/doc: remove optionsDocBook
these were deprecated in 23.11 and slated for removal in 24.05. 24.05 is
soon enough, so we should probably make good on this promise.
2024-03-28 17:21:37 +01:00
Philip Taron
546fc67242
Avoid top-level with ...; in nixos/lib/utils.nix 2024-03-27 22:04:17 -07:00
Philip Taron
ad920b32c2
Avoid top-level with ...; in nixos/lib/systemd-unit-options.nix 2024-03-27 22:00:34 -07:00
Philip Taron
7d130cf752
Avoid top-level with ...; in nixos/lib/systemd-types.nix 2024-03-27 21:56:52 -07:00
Philip Taron
d509d28475
Avoid top-level with ...; in nixos/lib/systemd-network-units.nix 2024-03-27 21:43:22 -07:00
Philip Taron
f290c5901b
Avoid top-level with ...; in nixos/lib/systemd-lib.nix 2024-03-27 21:42:17 -07:00
Will Fancher
7935db1456 nixos/tests: Remove unnecesary wait from initrdBackdoor 2024-03-26 23:40:05 -04:00
Martin Weinelt
a4b6e457b8
nixos/lib: Support derivations in escapeSystemdExecArg
They can be transformed into their outpath string, which is useful for
config generators.
2024-03-23 15:59:50 +01:00
Johannes Kirschbauer
9a21db7be8
doc: write improved documentation for nixosOptionsDoc (#295279)
* doc: write improved documentation for nixosOptionsDoc

* Apply suggestions from @infinisil

Co-authored-by: Silvan Mosberger <github@infinisil.com>

* doc: minor fixup

---------

Co-authored-by: Silvan Mosberger <github@infinisil.com>
2024-03-21 16:07:18 +01:00
Will Fancher
486e837cbe
Merge pull request #293710 from B4dM4n/networkd-policy-rule-port-range
nixos/networkd: allow RoutingPolicyRule port ranges
2024-03-17 12:36:30 -07:00
K900
77536af43b nixos/iso-image: extremely cursed performance optimization for Hydra
Right now the worst case chain of events for building an ISO on Hydra is

    - copy everything to squashfs builder
    - run squashfs builder
    - download squashfs from builder
    - compress squashfs
    - upload squashfs to S3
    - copy squashfs to ISO builder
    - run ISO builder
    - download ISO from builder
    - compress ISO
    - upload ISO to S3

This inlines the squashfs build into the ISO build, which makes it

    - copy everything to ISO builder
    - run ISO builder
    - download ISO from builder
    - compress ISO
    - upload ISO to S3

Which should reduce queue runner load by $alot per ISO, which we have four of on small channels
(one release, one test per arch) and a lot more than four of on large channels (with various desktops)
2024-03-12 15:41:59 +03:00
K900
7764fc5335 nixos/lib/test-driver: fix mypy errors after staging-next merge 2024-03-08 15:33:48 +03:00
Fabian Möller
f753e58e6e
nixos/networkd: allow RoutingPolicyRule port ranges
Linux and Systemd allow port ranges to be used in routing policy rules.

https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html#SourcePort=
2024-03-06 09:11:54 +01:00
Gabriella Gonzalez
b8698cd8d6
macOS support for NixOS tests (#282401)
Closes #193336
Closes #261694
Related to #108984

The goal here was to get the following flake to build and run on
`aarch64-darwin`:

```nix
{ inputs.nixpkgs.url = <this branch>;

  outputs = { nixpkgs, ... }: {
    checks.aarch64-darwin.default =
      nixpkgs.legacyPackages.aarch64-darwin.nixosTest {
        name = "test";

        nodes.machine = { };

        testScript = "";
      };
  };
}
```

… and after this change it does.  There's no longer a need for the
user to set `nodes.*.nixpkgs.pkgs` or
`nodes.*.virtualisation.host.pkgs` as the correct values are inferred
from the host system.
2024-03-02 06:33:14 +01:00
Arian van Putten
b75a29cb6c nixos/lib/make-disk-image.nix: fix systemd-boot-builder clobbering /homeless-shelter
systemd-boot-builder.py calls nix-env --list-generations which creates
$HOME/.nix-defexpr/channels/nixos if it doesn't exist. This would cause a folder
/homeless-shelter to show up in the final image which in turn breaks nix builds
in the target image if sandboxing is turned off (as /homeless-shelter is never
allowed to exist).
2024-03-01 12:52:48 +01:00
K900
e758ca61fe nixos/lib/test-driver: make the warning message more noticeable 2024-03-01 13:20:09 +03:00
Franz Pletz
317a383090
Merge pull request #292189 from nagisa/fixes-systemd-upheldBy-propagation 2024-02-29 02:08:56 +01:00
Simonas Kazlauskas
34c5cc74a1 systemd: fix propagation of upheldBy option to units 2024-02-29 02:01:24 +02:00
K900
d53c203739
Merge pull request #291544 from K900/ovmf-oof
nixos/tests: drop LegacyStartCommand
2024-02-28 09:32:26 +03:00
K900
bdacdc46e4 nixos/lib/test-driver: provide legacy path for create_machine({"startCommand": "..."}) 2024-02-28 09:32:11 +03:00
Will Fancher
f5622df470
Merge pull request #290946 from ju1m/systemd-option-list
nixos/systemd: merge unit options as lists when at least one value is a list
2024-02-27 20:49:39 -05:00
Will Fancher
a587a6a357
Merge pull request #285401 from sdht0/systemd-boot-xbootldr
nixos/systemd-boot: Add support for an XBOOTLDR partition
2024-02-27 20:35:03 -05:00
K900
d93db9066a nixos/lib/testing: remove yet another source of unnecessary test rebuilds 2024-02-27 23:35:05 +03:00
K900
423098c284 nixos/lib/test-driver: drop LegacyStartCommand, clean up create_machine API
We can finally do this now that it's no longer used.
2024-02-27 23:15:59 +03:00
K900
d9a37adc04 lib/test-driver: don't swallow qemu stderr 2024-02-27 23:15:58 +03:00
K900
bde7471aa2 nixos/lib/testing: remove another source of unnecessary test rebuilds 2024-02-27 18:00:58 +03:00
Siddhartha
04beb0aea2 nixos/lib/make-disk-image: Add ability to setup an XBOOTLDR partition 2024-02-26 21:51:41 -05:00
Adam C. Stephens
af810fc67e
Merge pull request #284874 from shlevy/ovmf-ms
Enable MS-compatible secure boot with OVMF
2024-02-25 22:34:05 -05:00
Julien Moutinho
7d0c812963 nixos/systemd: merge unit options as lists when at least one value is a list 2024-02-25 01:20:29 +01:00
Michael Schneider
fe4edb712c nixos/testDriver: remove pinned mypy python version 2024-02-23 02:36:58 +00:00
Shea Levy
9188bb5186
OVMF: Add test with secure boot enabled
Co-authored-by: Arthur Gautier <arthur.gautier@arista.com>
2024-02-15 12:13:05 -05:00
Silvan Mosberger
1cd71881f2 nixos/systemd: Support notify-reload service Type
Support for this was added in systemd 253:
https://github.com/systemd/systemd/releases/tag/v253
2024-02-14 17:52:13 +01:00
Simonas Kazlauskas
fd5664871f review 2024-02-10 22:25:24 +02:00
Simonas Kazlauskas
74eeb75af1 systemd: add support for upholds and upheldBy 2024-02-10 13:48:40 +02:00
Yureka
c94d63a527
nixos/utils: fix stack overflow in genJqReplacementSnippet (#284027)
When the input contains derivations, don't attempt to recurse into them
2024-01-30 11:00:08 +01:00
K900
07e7fcc46f nixos/test-driver: black 2024-01-26 16:27:53 +03:00
Jacek Galowicz
d6318f4a86
Merge pull request #262772 from RaitoBezarius/qemu-vm/wait-for-event
nixos/lib/test-driver: add `wait_for_qmp_event`
2024-01-26 08:27:06 +01:00
Raito Bezarius
1196ae6e6b nixos/lib/test-driver: add wait_for_qmp_event
Adds a function to wait for a new QMP event with a model filter
so that you can expect specific type of events with specific payloads.

e.g. a guest-reset-induced shutdown event.
2024-01-25 20:50:20 +01:00
Robert Hensing
e0000983db
Merge pull request #279170 from SuperSandro2000/nixos-repl-lib
nixos-rebuild: add lib to repl to make debugging even easier
2024-01-19 12:29:04 +01:00
K900
3d6a5ad604 systemd-lib: fix automount generation after 9fbf82d9cb
This one got missed in the refactor.
2024-01-18 08:33:46 +03:00
Will Fancher
59ba511744
Merge pull request #266370 from SuperSandro2000/systemd-install-wantedby
systemd-lib: add Install WantedBy section to make units similar to upstream ones
2024-01-17 13:04:03 -05:00
Robert Hensing
8e934650ce nixos: Expose lib attribute on configuration for repl 2024-01-15 00:28:07 +01:00
Ryan Lahfa
b5a944511d
Merge pull request #256709 from colemickens/make-squashfs-skip-compression
nixos/lib/make-squashfs.nix: allow disabling compression
2024-01-13 20:23:25 +01:00
Ryan Lahfa
f520eb3f0c
Merge pull request #263658 from siriobalmelli-foss/sb/zfs-image
openstack-image-zfs and make-single-disk-zfs-image: optionally specify qemu instance memory
2024-01-12 20:25:26 +01:00
K900
9490738be7 nixos/lib/test-driver: add setuptools build dep 2024-01-12 13:58:07 +03:00
Cole Mickens
5a718794d0
nixos/lib/make-squashfs.nix: allow disabling compression 2024-01-07 22:46:20 -06:00
Sandro Jäckel
9fbf82d9cb
systemd-lib: add Install WantedBy section to make units similar to upstream ones
and make them better grepable
2024-01-02 23:09:03 +01:00
github-actions[bot]
b3ceb9c6b7
Merge staging-next into staging 2023-12-26 18:01:24 +00:00
Martin Weinelt
0392a07511
nixos/lib/make-disk-image: Create build products metadata
For hydra to expose built images for direct download, listing the
relevant files in nix-support/hydra-build-products is required.
2023-12-26 16:02:51 +01:00
Sandro Jäckel
e2702f5aee
treewide: don't use python3Minimal where it is not required
Building a python environment with python3Minimal requires hydra
to bootstrap pip and build all packages used in the environment
which would otherwise not be built. This reduces cache re-use and duplicates things.

Also common dependencies normally included in python itself
are not properly checked and can cause hard to debug errors
because everyone just assumes those modules are there.
2023-12-21 02:21:48 +01:00
Jacek Galowicz
66ca9c90e2
Merge pull request #267937 from SomeoneSerge/fix/test-driver-activestate
nixos/lib/test-driver: make wait_for_unit ask for ActiveState only
2023-12-14 06:55:06 +01:00
Philip Taron
bc7a939ced nixos/networkd: add [IPVLAN] and [IPVTAP] configuration options to systemd.netdev files
[IPVLAN](https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html#%5BIPVLAN%5D%20Section%20Options)
[IPVTAP](https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html#%5BIPVTAP%5D%20Section%20Options)
2023-11-18 08:43:21 +01:00
Someone Serge
392fbc90a8
nixos/lib/test-driver: make wait_for_unit ask for ActiveState only
This is a hotfix for https://github.com/NixOS/nixpkgs/issues/266690,
where `systemctl show $unit` sometimes randomly leaves ActiveState out
2023-11-16 18:25:42 +00:00
Ryan Lahfa
b8218af2e6
Merge pull request #256226 from ElvishJerricco/systemd-stage-1-testing-backdoor 2023-11-10 14:08:07 +01:00
Will Fancher
9a0f523372 systemd-stage-1: Enable backdoor in nixos tests 2023-11-09 17:53:48 -05:00
Will Fancher
c20ad5d379
Merge pull request #266369 from SuperSandro2000/systemd-unit-empty-lines
systemd-lib: cleanup empty lines in unit files
2023-11-09 16:49:11 -05:00
Sandro Jäckel
ae0bbc00e8
systemd-lib: cleanup empty lines in unit files 2023-11-09 02:08:57 +01:00
Robert Hensing
87391b681f
Merge pull request #265836 from hercules-ci/nixosTests-no-surprises
nixos/testing/nodes: Do allow aliases
2023-11-08 00:55:32 +01:00
Samuel Cormier-Iijima
61bdb29a05
nixos/lib/make-btrfs-fs: Use fakeroot and faketime (#265686) 2023-11-07 02:17:38 +02:00
Robert Hensing
ae5cb919f5 nixos/testing/nodes: Do allow aliases
Aliases exist for a reason. Sure it is nice to make sure that
some aliases aren't used within Nixpkgs, but this creates two problems
which are far worse than your failing to meet your neatness compulsions.

- Users encounter missing attributes, https://github.com/NixOS/nixpkgs/issues/264577
  wasting their time, stalling their progress, and even occupying others
  time that would be better spent on fixing *real* issues.

- Hydra doesn't treat evaluation errors seriously enough, with the
  effect that actual relevant test failures are masked by evaluation
  failures such as those caused by this no aliases business.

- We don't even have the infrastructure to get rid of aliases, because
  all warnings in package attributes are disallowed by Nixpkgs CI
  tooling, last I checked.

Before re-disabling this, make sure that

- An actually helpful deprecation process is in place.

- Aliases are still allowed when `nixos-lib.runTests` and
  `pkgs.testers.runNixOSTest` are invoked by external projects.
  For instance, `all-tests.nix` could provide such an
  override (e.g. with `newScope`).
2023-11-06 12:30:28 +01:00
emilylange
6c7ad5e732
nixos/systemd-lib: fix building of empty unit files
This is a fixup for c1ae82f448.

nix' `passAsFile` does not create empty files for variables that are
`null`.

This results in the following error for units that have no overrides or
content, but are, e.g. `wantedBy`:
`mv: cannot stat '': No such file or directory`.

Minimal reproducer:
`systemd.units.empty.wantedBy = [ "multi-user.target" ];`

This is often necessary when a unit is loaded in via `systemd.packages`.
2023-11-02 01:18:46 +01:00
Sirio Balmelli
30d1e55e25
make-single-disk-zfs-image: make memSize configurable
Signed-off-by: Sirio Balmelli <sirio@b-ad.ch>
2023-10-31 08:28:45 +01:00
5aaee9
c1ae82f448 nixos/systemd: fix make unit failed when unit too large 2023-10-31 01:06:37 +08:00
Ryan Lahfa
92fdbd284c
Merge pull request #262839 from RaitoBezarius/qemu-vm/timeout 2023-10-29 17:21:10 +01:00
Raito Bezarius
05dd78cf4b nixos/lib/test-driver: add driver-timeout as a passthru test
From now on, we will aim to ensure that the test driver
gets tested by OfBorg using all our available tests.

This commit adds the driver timeout test to the driver.
2023-10-29 12:45:00 +01:00
Raito Bezarius
a0dc17bd57 nixos/lib/testing/run: expose rawTestDerivation
For `testBuildFailure` and similar functions, we need a full blown derivation and not a lazy one.
This is an internal option for test framework developers.
2023-10-29 12:45:00 +01:00
Raito Bezarius
d4d7550108 nixos/test-driver: provide a global timeout
Since the debut of the test-driver, we didn't obtain
a race timer with the test execution to ensure that tests doesn't run beyond
a certain amount of time.

This is particularly important when you are running into hanging tests
which cannot be detected by current facilities (requires more pvpanic wiring up, QMP
API stuff, etc.).

Two easy examples:

- Some QEMU tests may get stuck in some situation and run for more than 24 hours → we default to 1 hour max.
- Some QEMU tests may panic in the wrong place, e.g. UEFI firmware or worse → end users can set a "reasonable" amount of time

And then, we should let the retry logic retest them until they succeed and adjust
their global timeouts.

Of course, this does not help with the fact that the timeout may need to be
a function of the actual busyness of the machine running the tests.
This is only one step towards increased reliability.
2023-10-29 12:45:00 +01:00
Robert Hensing
5dfc78a8ad
Merge pull request #262021 from Enzime/linux-builder-cross
linux-builder: support `x86_64-linux` on `aarch64`
2023-10-24 14:34:29 +02:00
Michael Hoang
ab1f45f3d3 linux-builder: support x86_64-linux on aarch64 2023-10-24 13:35:37 +02:00
Maciej Krüger
1ecbbb6e3f
Merge pull request #260595 from adamcstephens/lxc/squashfs
lxc-container: add squashfs image support and release output
2023-10-24 02:06:36 +02:00
Jacek Galowicz
dda77fcc55
Merge pull request #257535 from RaitoBezarius/vmstate
nixos/lib/test-driver: use QMP API to watch for VM state
2023-10-22 14:22:34 +01:00
Ryan Lahfa
c5442c247f
Merge pull request #257262 from dongcarl/2023-09-nginx-fixes
nixos/nginx: Allow empty port for listen directive (for unix socket)
2023-10-21 17:26:57 +01:00
Raito Bezarius
f94876a65c nixos/lib/test-driver: wire up QMP client
Now that we have a QMP client, we can wire it up in the test driver.

For now, it is almost completely useless because of the need of a constant "event loop", especially
for event listening.

In the next commits, we will slowly enable more and more usecases.
2023-10-21 13:03:15 +02:00
Philip Taron
989cca26c4
systemd.network.netdev: Add support for WLAN devices
These are virtual interface, where one physical wifi adapter can have
more than one interface.

See https://systemd.network/systemd.netdev.html#%5BWLAN%5D%20Section%20Options
and dedf2d0054
2023-10-16 15:04:44 -07:00
Adam Stephens
a91bd0b468
make-squashfs: add support for pseudoFiles, custom name, and disabling strip 2023-10-12 10:51:41 -04:00
Robert Hensing
a14f3f829d nixos/eval-config.nix: Rename arg nixosSystem -> configuration
For some time now the attrset returned by `evalModules` has
`type = "configuration"`.

This is a clean refactor because the name is not exposed.
(never is for simple lambda)
2023-10-10 13:25:15 +02:00
Robert Hensing
1c0427862e nixos/eval-config.nix: Rename let withExtraArgs -> withExtraAttrs
Presumably it only used to add `extraArgs`, but it also adds other
attributes now.
2023-10-10 13:24:55 +02:00
Carl Dong
e5c2c71280 nixos/nginx: Allow empty port for listen directive
When listening on unix sockets, it doesn't make sense to specify a port
for nginx's listen directive.

Since nginx defaults to port 80 when the port isn't specified (but the
address is), we can change the default for the option to null as well
without changing any behaviour.
2023-10-09 21:16:03 -04:00