Change:
# test and dry-activate actions are tested further down below <ins> # invalid action fails the script switch_to_specialisation("${machine}", "", action="broken-action", fail=True) # no action fails the script assert "Usage:" in machine.fail("${machine}/bin/switch-to-configuration 2>&1") with subtest("init interface version"): # Do not try to switch to an invalid init interface version assert "incompatible" in switch_to_specialisation("${machine}", "brokenInitInterface", fail=True) with subtest("systemd restarts"): # systemd is restarted when its system.conf changes out = switch_to_specialisation("${machine}", "modifiedSystemConf") assert_contains(out, "restarting systemd...") with subtest("continuing from an aborted switch"): # An aborted switch will write into a file what it tried to start # and a second switch should continue from this machine.succeed("echo dbus.service > /run/nixos/start-list") out = switch_to_specialisation("${machine}", "modifiedSystemConf") assert_contains(out, "starting the following units: dbus.servicen") with subtest("fstab mounts"): switch_to_specialisation("${machine}", "") # add a mountpoint out = switch_to_specialisation("${machine}", "addedMount") assert_lacks(out, "stopping the following units:") assert_lacks(out, "NOT restarting the following changed units:") assert_lacks(out, "nrestarting the following units:") assert_lacks(out, "nstarting the following units:") assert_contains(out, "the following new units were started: test.mountn") # modify the mountpoint's options out = switch_to_specialisation("${machine}", "addedMountOptsModified") assert_lacks(out, "stopping the following units:") assert_lacks(out, "NOT restarting the following changed units:") assert_contains(out, "reloading the following units: test.mountn") assert_lacks(out, "nrestarting the following units:") assert_lacks(out, "nstarting the following units:") assert_lacks(out, "the following new units were started:") # modify the device out = switch_to_specialisation("${machine}", "addedMountDevModified") assert_lacks(out, "stopping the following units:") assert_lacks(out, "NOT restarting the following changed units:") assert_lacks(out, "reloading the following units:") assert_contains(out, "nrestarting the following units: test.mountn") assert_lacks(out, "nstarting the following units:") assert_lacks(out, "the following new units were started:") # modify both out = switch_to_specialisation("${machine}", "addedMount") assert_lacks(out, "stopping the following units:") assert_lacks(out, "NOT restarting the following changed units:") assert_lacks(out, "reloading the following units:") assert_contains(out, "nrestarting the following units: test.mountn") assert_lacks(out, "nstarting the following units:") assert_lacks(out, "the following new units were started:") # remove the mount out = switch_to_specialisation("${machine}", "") assert_contains(out, "stopping the following units: test.mountn") assert_lacks(out, "NOT restarting the following changed units:") assert_contains(out, "reloading the following units: dbus.servicen") assert_lacks(out, "nrestarting the following units:") assert_lacks(out, "nstarting the following units:") assert_lacks(out, "the following new units were started:") # change something about the / mount out = switch_to_specialisation("${machine}", "storeMountModified") assert_lacks(out, "stopping the following units:") assert_contains(out, "NOT restarting the following changed units: -.mount") assert_contains(out, "reloading the following units: dbus.servicen") assert_lacks(out, "nrestarting the following units:") assert_lacks(out, "nstarting the following units:") assert_lacks(out, "the following new units were started:") with subtest("swaps"): switch_to_specialisation("${machine}", "") # add a swap out = switch_to_specialisation("${machine}", "swap") assert_lacks(out, "stopping the following units:") assert_lacks(out, "NOT restarting the following changed units:") assert_contains(out, "reloading the following units: dbus.servicen") assert_lacks(out, "nrestarting the following units:") assert_lacks(out, "nstarting the following units:") assert_contains(out, "the following new units were started: swapfile.swap") # remove it out = switch_to_specialisation("${machine}", "") assert_contains(out, "stopping swap device: /swapfile") assert_lacks(out, "stopping the following units:") assert_lacks(out, "NOT restarting the following changed units:") assert_contains(out, "reloading the following units: dbus.servicen") assert_lacks(out, "nrestarting the following units:") assert_lacks(out, "nstarting the following units:") assert_lacks(out, "the following new units were started:") </ins> with subtest("services"): switch_to_specialisation("${machine}", "") # Nothing happens when nothing is changed

Discussion:
The script is apparently trying to stop and start changed .mount units, presumably to cause a ? If that happens the script fails and the new configuration is not activated. Worse, the system is left in a broken state with some of the stopped (as part of the switch) units never restarted. Steps to reproduce the behavior: the value of , for example from to . The unit should probably not be stopped and the switch should succeed. If using remotely also the SSH connection drops. NixOS version: 23.05.1194. (Stoat) The filesystem entry is: cc:
I just ran into this error myself. I am unsure of which configuration change caused this. But I was changing config and I think was saying some setting conflicts with my , which was at . So I updated to and then flashed me this error: before giving me a black screen and send me to the login prompt.
were you ever able to fix your issue?
No fix, I'm pretty sure changing the unit will still trigger a stop.
Unfortunately, you are correct. I do have a fix in the pipeline though. improves the handling of mount units () and I plan to adapt this to fstab mounts as well (). This is currently being blocked by the fstab parser not having any tests but I plan on writing them. Will keep this issue in mind.
Now that I look at the code again… it already looks correct. Can someone with this issue post a diff of their fstab? Something like should do.