about summary refs log tree commit diff
path: root/nixos/modules/system/activation/switch-to-configuration.pl
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2015-08-07 05:25:59 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2015-08-07 05:37:23 +0200
commit80d9b426638563a6d8b6dc1604180cc60b4b2862 (patch)
tree64a8a4c19452de810fb347f5005a8c0d119c3817 /nixos/modules/system/activation/switch-to-configuration.pl
parent382b49e634227ad013f80a17cf394e94147330d0 (diff)
downloadnixlib-80d9b426638563a6d8b6dc1604180cc60b4b2862.tar
nixlib-80d9b426638563a6d8b6dc1604180cc60b4b2862.tar.gz
nixlib-80d9b426638563a6d8b6dc1604180cc60b4b2862.tar.bz2
nixlib-80d9b426638563a6d8b6dc1604180cc60b4b2862.tar.lz
nixlib-80d9b426638563a6d8b6dc1604180cc60b4b2862.tar.xz
nixlib-80d9b426638563a6d8b6dc1604180cc60b4b2862.tar.zst
nixlib-80d9b426638563a6d8b6dc1604180cc60b4b2862.zip
Allow units to specify that they shouldn't be stopped when removed
Diffstat (limited to 'nixos/modules/system/activation/switch-to-configuration.pl')
-rw-r--r--nixos/modules/system/activation/switch-to-configuration.pl5
1 files changed, 3 insertions, 2 deletions
diff --git a/nixos/modules/system/activation/switch-to-configuration.pl b/nixos/modules/system/activation/switch-to-configuration.pl
index 4289740322ad..655fbab2a843 100644
--- a/nixos/modules/system/activation/switch-to-configuration.pl
+++ b/nixos/modules/system/activation/switch-to-configuration.pl
@@ -97,7 +97,7 @@ sub parseFstab {
 sub parseUnit {
     my ($filename) = @_;
     my $info = {};
-    parseKeyValues($info, read_file($filename));
+    parseKeyValues($info, read_file($filename)) if -f $filename;
     parseKeyValues($info, read_file("${filename}.d/overrides.conf")) if -f "${filename}.d/overrides.conf";
     return $info;
 }
@@ -157,7 +157,8 @@ 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") {
-            $unitsToStop{$unit} = 1;
+            my $unitInfo = parseUnit($prevUnitFile);
+            $unitsToStop{$unit} = 1 if boolIsTrue($unitInfo->{'X-StopOnRemoval'} // "yes");
         }
 
         elsif ($unit =~ /\.target$/) {