diff options
author | Michael Weiss <dev.primeos@gmail.com> | 2018-05-11 19:13:10 +0200 |
---|---|---|
committer | Michael Weiss <dev.primeos@gmail.com> | 2018-07-17 19:37:36 +0200 |
commit | 7098b0fcdfd7fa4b82c036d8116b60b78f497316 (patch) | |
tree | b8a0d99f64dfb1a2a7b06e8a8f4e8f03ebd630fa /nixos/modules/system/activation | |
parent | ffaf902ee34d1c85b98903f1bcc9c573f145fd13 (diff) | |
download | nixlib-7098b0fcdfd7fa4b82c036d8116b60b78f497316.tar nixlib-7098b0fcdfd7fa4b82c036d8116b60b78f497316.tar.gz nixlib-7098b0fcdfd7fa4b82c036d8116b60b78f497316.tar.bz2 nixlib-7098b0fcdfd7fa4b82c036d8116b60b78f497316.tar.lz nixlib-7098b0fcdfd7fa4b82c036d8116b60b78f497316.tar.xz nixlib-7098b0fcdfd7fa4b82c036d8116b60b78f497316.tar.zst nixlib-7098b0fcdfd7fa4b82c036d8116b60b78f497316.zip |
nixos/switch-to-configuration: Never stop system.slice
Problem: Restarting (stopping) system.slice would not only stop X11 but also most system units/services. We obviously don't want this happening to users when they switch from 18.03 to 18.09 or nixos-unstable. Reason: The following change in systemd: https://github.com/systemd/systemd/commit/d8e5a9338278d6602a0c552f01f298771a384798 The commit adds system.slice to the perpetual units, which means removing the unit file and adding it to the source code. This is done so that system.slice can't be stopped anymore but in our case it ironically would cause this script to stop system.slice because the unit file was removed (and an older systemd version is still running). Related issue: https://github.com/NixOS/nixpkgs/issues/39791
Diffstat (limited to 'nixos/modules/system/activation')
-rw-r--r-- | nixos/modules/system/activation/switch-to-configuration.pl | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/nixos/modules/system/activation/switch-to-configuration.pl b/nixos/modules/system/activation/switch-to-configuration.pl index 2ce04ed5342c..ecd35767e01d 100644 --- a/nixos/modules/system/activation/switch-to-configuration.pl +++ b/nixos/modules/system/activation/switch-to-configuration.pl @@ -166,6 +166,24 @@ while (my ($unit, $state) = each %{$activePrev}) { if (-e $prevUnitFile && ($state->{state} eq "active" || $state->{state} eq "activating")) { if (! -e $newUnitFile || abs_path($newUnitFile) eq "/dev/null") { + # Ignore (i.e. never stop) these units: + if ($unit eq "system.slice") { + # TODO: This can be removed a few months after 18.09 is out + # (i.e. after everyone switched away from 18.03). + # Problem: Restarting (stopping) system.slice would not only + # stop X11 but also most system units/services. We obviously + # don't want this happening to users when they switch from 18.03 + # to 18.09 or nixos-unstable. + # Reason: The following change in systemd: + # https://github.com/systemd/systemd/commit/d8e5a9338278d6602a0c552f01f298771a384798 + # The commit adds system.slice to the perpetual units, which + # means removing the unit file and adding it to the source code. + # This is done so that system.slice can't be stopped anymore but + # in our case it ironically would cause this script to stop + # system.slice because the unit was removed (and an older + # systemd version is still running). + next; + } my $unitInfo = parseUnit($prevUnitFile); $unitsToStop{$unit} = 1 if boolIsTrue($unitInfo->{'X-StopOnRemoval'} // "yes"); } |