about summary refs log tree commit diff
path: root/nixos/modules/system/activation/switch-to-configuration.pl
diff options
context:
space:
mode:
authordanbst <abcz2.uprola@gmail.com>2017-08-22 15:04:18 +0300
committerdanbst <abcz2.uprola@gmail.com>2017-08-22 15:04:18 +0300
commit65ff0d5f9de3e8f0ca5ec3a70549e30afd84a6d5 (patch)
treed7e0417809bac268db2ddcc98fcbac3a5a360f81 /nixos/modules/system/activation/switch-to-configuration.pl
parent37c340728eb0be40ff1b78b4f855a6625ff58475 (diff)
downloadnixlib-65ff0d5f9de3e8f0ca5ec3a70549e30afd84a6d5.tar
nixlib-65ff0d5f9de3e8f0ca5ec3a70549e30afd84a6d5.tar.gz
nixlib-65ff0d5f9de3e8f0ca5ec3a70549e30afd84a6d5.tar.bz2
nixlib-65ff0d5f9de3e8f0ca5ec3a70549e30afd84a6d5.tar.lz
nixlib-65ff0d5f9de3e8f0ca5ec3a70549e30afd84a6d5.tar.xz
nixlib-65ff0d5f9de3e8f0ca5ec3a70549e30afd84a6d5.tar.zst
nixlib-65ff0d5f9de3e8f0ca5ec3a70549e30afd84a6d5.zip
switch-to-configuration: fix detection of changes between rebuilds for template instances
This makes declarative containers truly reloadable. Current code already declares it:

https://github.com/NixOS/nixpkgs/blob/56904d7c423f2b13b37fbd29f39bbb4b52bc7824/nixos/modules/virtualisation/containers.nix#L488

```
  restartIfChanged = false;
```

https://github.com/NixOS/nixpkgs/blob/56904d7c423f2b13b37fbd29f39bbb4b52bc7824/nixos/modules/virtualisation/containers.nix#L540

```
  reloadIfChanged = true;
```

Original author: @chrisfarms in https://github.com/NixOS/nixpkgs/pull/3021/commits/6e36619b277f78ece1bb81b79b5651897e46a2bf
Most of stuff from that commit has already been ported.
Diffstat (limited to 'nixos/modules/system/activation/switch-to-configuration.pl')
-rw-r--r--nixos/modules/system/activation/switch-to-configuration.pl9
1 files changed, 7 insertions, 2 deletions
diff --git a/nixos/modules/system/activation/switch-to-configuration.pl b/nixos/modules/system/activation/switch-to-configuration.pl
index 88e7847cf8c8..29cc60b00324 100644
--- a/nixos/modules/system/activation/switch-to-configuration.pl
+++ b/nixos/modules/system/activation/switch-to-configuration.pl
@@ -147,11 +147,16 @@ my $activePrev = getActiveUnits;
 while (my ($unit, $state) = each %{$activePrev}) {
     my $baseUnit = $unit;
 
-    # Recognise template instances.
-    $baseUnit = "$1\@.$2" if $unit =~ /^(.*)@[^\.]*\.(.*)$/;
     my $prevUnitFile = "/etc/systemd/system/$baseUnit";
     my $newUnitFile = "$out/etc/systemd/system/$baseUnit";
 
+    # Detect template instances.
+    if (!-e $prevUnitFile && !-e $newUnitFile && $unit =~ /^(.*)@[^\.]*\.(.*)$/) {
+      $baseUnit = "$1\@.$2";
+      $prevUnitFile = "/etc/systemd/system/$baseUnit";
+      $newUnitFile = "$out/etc/systemd/system/$baseUnit";
+    }
+
     my $baseName = $baseUnit;
     $baseName =~ s/\.[a-z]*$//;