Commit graph

57 commits

Author SHA1 Message Date
Jared Baur fe6a73c0f7
nixosTests.switchTest: assert automount units are handled appropriately 2025-09-14 16:11:13 -07:00
Jared Baur 477b8796f9
nixosTests.switchTest: assert switch-to-configuration ignores generated units 2025-09-14 14:06:20 -07:00
Grimmauld a48bc46a3e
nixos/tests/switchTest: migrate to systemd.settings.Manager 2025-07-28 11:24:23 +02:00
Jared Baur c59d4343f9
treewide: remove Perl-based switch-to-configuration 2025-06-11 08:56:42 -07:00
Silvan Mosberger 374e6bcc40 treewide: Format all Nix files
Format all Nix files using the officially approved formatter,
making the CI check introduced in the previous commit succeed:

  nix-build ci -A fmt.check

This is the next step of the of the [implementation](https://github.com/NixOS/nixfmt/issues/153)
of the accepted [RFC 166](https://github.com/NixOS/rfcs/pull/166).

This commit will lead to merge conflicts for a number of PRs,
up to an estimated ~1100 (~33%) among the PRs with activity in the past 2
months, but that should be lower than what it would be without the previous
[partial treewide format](https://github.com/NixOS/nixpkgs/pull/322537).

Merge conflicts caused by this commit can now automatically be resolved while rebasing using the
[auto-rebase script](8616af08d9/maintainers/scripts/auto-rebase).

If you run into any problems regarding any of this, please reach out to the
[formatting team](https://nixos.org/community/teams/formatting/) by
pinging @NixOS/nix-formatting.
2025-04-01 20:10:43 +02:00
r-vdp 1aa7e7a131
switch-to-configuration: add a test to make sure that we don't block on the lockfile
We should exit with a clear error message instead.
2025-02-17 15:47:08 +01:00
r-vdp e6bc540ce0
nixos/activation: pass the action as an argument to the pre-switch-checks
This allows for instance to reject switching into a configuration, while
still allowing to reboot into that same configuration.

This can be useful for instance to reject switching to a configuration
with a new systemd major version, but setting that same configuration as
the new boot default with `switch-to-configuration boot` is fine.
2025-01-28 11:40:38 +01:00
r-vdp 113dbd79de
nixos/activation: improve preSwitchChecks
A couple of improvements:

1. Avoid the generally discouraged apply argument to options, as it has
   quite weird semantics
2. Avoid issues when a user calls a preSwitchCheck `script`, which
   would've been silently overridden by the existing implementation.
   Reliance on a special attribute name like that is bound to lead to a
   very-hard-to-debug problem for someone at some point
3. Use writeShellApplication so that the preSwitchChecks are checked by
   shellcheck and and so that they run with basic bash guardrails
4. Fix shellcheck issue (testing the value of $?)
5. Add a positive preSwitchCheck to the nixos test, to make sure that
   that works as intended
2025-01-23 15:51:37 +01:00
r-vdp 779c710476
nixos/switch-test: use the runTest handler to improve eval performance
The newer runTest handler uses a single nixpkgs instance to eval all the
specialisations, reducing the memory usage and eval time of the test
drastically compared to handleTest which creates a new nixpkgs instance
for every specialisation.
2024-12-11 10:06:03 +01:00
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