Commit Graph

48 Commits

Author SHA1 Message Date
Jared Baur
6e192c4489
nixos/activation: Add pre-switch checks
Add an option for shell script fragments that are ran before switching
to a new NixOS system configuration (pre installation of bootloader or
system activation). Also add a new subcommand for
switch-to-configuration called "check" that will cause the program to
always exit after checks are ran.
2024-11-21 13:02:54 -08:00
Will Fancher
f92ec1bc93 nixos/tests/switchTest: Add test for dbus reloading 2024-11-04 04:12:52 -05:00
Will Fancher
a7cda6835f nixos/tests/switchTest: Remove spurious dbus reload checks
Previously, the base system had grub in `systemPackages` but the
specialisations did not. This is because of a few factors:

- Grub was enabled in the nixos config
- Specialisations set `grub.device = "nodev"` (see: system/activation/no-clone.nix)
- Grub is added to `systemPackages` depending on whether `devices == ["nodev"]`

This meant that switching between the base system and a specialisation
always changed `system-path.drv`, which is a reload trigger for
dbus. With grub disabled in this test, this no longer happens.
2024-11-04 04:12:52 -05:00
Will Fancher
40b7674b98 nixos/tests/switchTest: Test no boot loader 2024-11-04 03:33:26 -05:00
Jared Baur
f6fed8b831
nixos/switch-test: add test for multi-line unit values 2024-09-21 08:28:03 -07:00
K900
932903acff nixos/tests/switch-test: enable switch-to-configuration 2024-09-08 17:09:01 +03:00
Emily
73f34448ca nixos/tests/switch-test: simplify enableNg setting 2024-09-06 08:35:43 +01:00
Jared Baur
32bf051ba4
nixos/switch-to-configuration: add new implementation
This adds an implementation of switch-to-configuration that allows for
closer interaction with the lifecycle of systemd units by using DBus
APIs directly instead of using systemctl. It is disabled by default, but
can be enabled by specifying `{ system.switch = { enable = false; enableNg = true; }; }`.
2024-05-10 16:33:06 -07:00
Jared Baur
3cdbad2ef1
nixos/switch-to-configuration: fix dbus implementation used for test
Makes the switch-test work with both dbus server implementations.
2024-04-29 21:41:07 -07:00
K900
2975aecbcb nixos/tests/switch-test: s/dbus.service/dbus-broker.service/g
Fixes the test after the default DBus implementation change.
2024-04-06 23:21:06 +03:00
Janne Heß
358347e8b6
nixos/switchTest: Also test swap devices 2023-09-22 10:26:11 +02:00
Janne Heß
85c1c30fd9
nixos/switch-to-configuration: Never unmount / or /nix
Also adds a huge test for fstab handling
2023-09-22 10:26:10 +02:00
Janne Heß
c3e6412260
nixos/switchTest: Also test restarting from aborted switches 2023-09-13 17:11:32 +02:00
Janne Heß
e0717ce857
nixos/switchTest: Also test systemd restarts 2023-09-13 17:04:54 +02:00
Janne Heß
211e2d738b
nixos/switchTest: Also test init interface version 2023-09-13 16:56:01 +02:00
Janne Heß
d1c1335908
nixos/switch-to-configuration: Test more action things 2023-09-13 16:42:19 +02:00
Janne Heß
eb831f759b
nixos/stc: Improve mount unit handling
We should sometimes restart the units rather than reloading them so the
changes are actually applied. / and /nix are explicitly excluded because
there was some very old issue where these were unmounted. I don't think
this will affect many people since most people use fstab mounts instead
but I plan to adapt this behavior for fstab mounts as well in the future
(once I wrote a test for the fstab thingies).
2023-08-21 09:07:14 +02:00
Janne Heß
7937c5816d
nixos/switchTest: Also check for base unit modifications 2023-08-13 14:25:24 +02:00
oddlama
d073105d6b
nixos/switch-to-configuration: fix ignoring of template unit specialization dropins 2023-07-23 13:16:58 +02:00
Robert Hensing
772d6076e8 nixos: Add system.activatable flag for images that are pre-activated 2023-06-28 14:06:28 +02:00
Robert Hensing
89664199e1 nixos/tests/switch-test.nix: Fix warnings 2023-06-28 12:49:34 +02:00
Weathercold
7874b995fb nixos/switch-test: add test for services starting with dash
Ensures that services starting with dash can be reloaded.
2022-08-20 16:43:25 -04:00
Janne Heß
2473cce829
nixos/switchTest: Also test boot/switch actions 2022-03-20 13:04:24 +01:00
Janne Heß
5c00fe6b1b
nixos/switchTest: Also test the os-release parser 2022-03-20 13:01:11 +01:00
Janne Heß
bc58430068
nixos/switch-to-configuration: Fix reloading of stopped services 2022-03-11 14:05:19 +01:00
Janne Heß
c96180c53f
nixos/switch-to-configuration: Ignore some unit keys
Some unit keys don't need to restart the service to make them effective.
Reduce the amount of service restarts by ignoring these keys
2022-03-11 13:30:03 +01:00
Janne Heß
acb535fb61
nixos/switchTest: Also test targets 2022-03-11 13:30:03 +01:00
Janne Heß
f6ad15fd8c
nixos/switchTest: Make checks more precise 2022-03-03 20:56:37 +01:00
Janne Heß
1def557525
nixos/switch-to-configuration: Document and test socket-activated services 2022-03-03 20:49:20 +01:00
Naïm Favier
8022c82a39 nixosTests.switchTest: fix race condition on /testpath
Currently the test-watch.service gets started in a loop as long as
/testpath exists, so `rm /testpath /testpath-modified` runs into a race
condition where if the service was just getting activated, it will
create /testpath-modified and make the test fail.

This is fixed by making the service RemainAfterExit so that it only
starts once, and stopping it manually after we remove /testpath.
2022-02-26 19:13:40 +09:00
Janne Heß
3617ecb67f
nixos/switch-to-configuration: Fix backslashes in unit names
systemd needs this so special characters (like the ones in wireguard
units that appear because they are part of base64) can be escaped using
the \x syntax.

Root of the issue is that `glob()` handles the backslash internally
which is obviously not what we want here.

Also add a test case and fix some perlcritic issues in the subroutine.
2022-02-17 12:49:45 +01:00
Janne Heß
1c1f8c59e1
nixos/switch-test: Test the unit file parser and reloads 2022-02-09 15:14:38 +01:00
Janne Heß
b52372675d
nixos/switch-to-configuration: Clean up lower part of the script
- Fully get rid of `parseKeyValues` and use systemctl features for that
- Add some regex modifiers recommended by perlcritic
- Get rid of a postfix if
- Sort units when showing their status
- Clean the logic for showing what failed from `elif` to `next`
- Switch from `state` to `substate` for `auto-restart` because that's
  actually where the value is stored
- Show status of units with one single systemctl call and get rid of
  COLUMNS in favor of --full
- Add a test for failing units
2022-01-20 17:10:02 +01:00
Janne Heß
2cf157c781
nixos/switch-to-configuration: Rework activation script restarts
This removes `/run/nixos/activation-reload-list` (which we will need in
the future when reworking the reload logic) and makes
`/run/nixos/activation-restart-list` honor `restartIfChanged` and
`reloadIfChanged`. This way activation scripts don't have to bother with
choosing between reloading and restarting.
2022-01-17 17:57:23 +01:00
Janne Heß
efcdc01d62
nixos/switchTest: Massively extend the test 2021-12-09 12:30:48 +01:00
Michael Weiss
1cfecb636b
Revert "Merge pull request #141192 from helsinki-systems/feat/improved-socket-handling2"
This reverts commit 57961d2b83, reversing
changes made to b04f913afc.
(I.e. this reverts PR #141192.)

While well-intended, this change does unfortunately introduce very
serious regressions that are especially disruptive/noticeable on desktop
systems (e.g. users of Sway will loose their graphical session when
running "nixos-rebuild switch").

Therefore, this change has to be reverted ASAP instead of trying to fix
it in "production".
Note: An updated version should be extensively discussed, reviewed, and
tested before re-landing this change as an earlier version also had to
be reverted for the exact same issues [0].

Fix: #146727

[0]: https://github.com/NixOS/nixpkgs/pull/73871#issuecomment-559783752
2021-11-27 17:22:22 +01:00
Janne Heß
c2bdad7ab6
nixos/switchTest: Make less flakey 2021-10-28 11:51:21 +02:00
Janne Heß
720571eefa
nixos/switchTest: Also test mounts 2021-10-17 14:35:47 +02:00
Janne Heß
4f870c7d70
nixos/switch-to-configuration: Restart timers 2021-10-17 14:35:47 +02:00
Janne Heß
adc033cd59
nixos/switch-to-configuration: Ignore path units 2021-10-17 14:35:46 +02:00
Janne Heß
de128feacc
nixos/switch-to-configuration: Ignore slice units 2021-10-17 14:35:46 +02:00
Janne Heß
cfad5e3403
nixos/switch-to-configuration: Improve socket support
This commit changes a lot more that you'd expect but it also adds a lot
of new testing code so nothing breaks in the future. The main change is
that sockets are now restarted when they change. The main reason for
the large amount of changes is the ability of activation scripts to
restart/reload units. This also works for socket-activated units now,
and honors reloadIfChanged and restartIfChanged. The two changes don't
really work without each other so they are done in the one large commit.

The test should show what works now and ensure it will continue to do so
in the future.
2021-10-17 14:35:43 +02:00
Dominik Xaver Hörl
25bef2d8f9 treewide: simplify pkgs.stdenv.lib -> pkgs.lib
The library does not depend on stdenv, that `stdenv` exposes `lib` is
an artifact of the ancient origins of nixpkgs.
2021-01-10 20:12:06 +01:00
Jörg Thalheim
cf3328e7e3
treewide: use runtimeShell in nixos/
This is needed for cross-compilation.
2020-04-07 07:26:47 +01:00
Christian Kampka
aeeabe0b89
nixosTests.switch-test: Port tests to python 2019-12-15 18:22:35 +01:00
Samuel Dionne-Riel
98419a0f64 nixos/tests/switch-test: Ensures the test fails on failure (#55744)
The `| tee` invocation always masked the return value of the
switch-to-configuration test.

```
~ $ false | tee && echo "oh no"
oh no
```

The added wrapper script will still output everything to stderr, while
passing failures to the test harness.
2019-02-14 22:55:16 +01:00
volth
2e979e8ceb [bot] nixos/*: remove unused arguments in lambdas 2018-07-20 20:56:59 +00:00
Gleb Peregud
2f6148c743 nixos/system: make switch-to-configuration script pure.
Fixes #28443

Fixed few invocations to `systemctl` to have an absolute path. Additionally add
LOCALE_ARCHIVE so that perl stops spewing warning messages.
2017-11-19 19:42:54 +01:00