aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/nixos/modules/system/activation/switch-to-configuration.pl
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/nixos/modules/system/activation/switch-to-configuration.pl')
-rw-r--r--nixpkgs/nixos/modules/system/activation/switch-to-configuration.pl12
1 files changed, 11 insertions, 1 deletions
diff --git a/nixpkgs/nixos/modules/system/activation/switch-to-configuration.pl b/nixpkgs/nixos/modules/system/activation/switch-to-configuration.pl
index 641cf9faadc..12a80a12d19 100644
--- a/nixpkgs/nixos/modules/system/activation/switch-to-configuration.pl
+++ b/nixpkgs/nixos/modules/system/activation/switch-to-configuration.pl
@@ -214,7 +214,17 @@ while (my ($unit, $state) = each %{$activePrev}) {
# Reload the changed mount unit to force a remount.
$unitsToReload{$unit} = 1;
recordUnit($reloadListFile, $unit);
- } elsif ($unit =~ /\.socket$/ || $unit =~ /\.path$/ || $unit =~ /\.slice$/) {
+ } elsif ($unit =~ /\.socket$/) {
+ my $unitInfo = parseUnit($newUnitFile);
+ # If a socket unit has been changed, the corresponding
+ # service unit has to be stopped before the socket can
+ # be restarted. The service will be started again on demand.
+ my $serviceUnit = $unitInfo->{'Unit'} // "$baseName.service";
+ $unitsToStop{$serviceUnit} = 1;
+ $unitsToStop{$unit} = 1;
+ $unitsToStart{$unit} = 1;
+ recordUnit($startListFile, $unit);
+ } elsif ($unit =~ /\.path$/ || $unit =~ /\.slice$/) {
# FIXME: do something?
} else {
my $unitInfo = parseUnit($newUnitFile);