Commit graph

53 commits

Author SHA1 Message Date
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
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