diff options
author | danbst <abcz2.uprola@gmail.com> | 2017-08-22 15:04:18 +0300 |
---|---|---|
committer | danbst <abcz2.uprola@gmail.com> | 2017-08-22 15:04:18 +0300 |
commit | 65ff0d5f9de3e8f0ca5ec3a70549e30afd84a6d5 (patch) | |
tree | d7e0417809bac268db2ddcc98fcbac3a5a360f81 /nixos/modules/system/activation/switch-to-configuration.pl | |
parent | 37c340728eb0be40ff1b78b4f855a6625ff58475 (diff) | |
download | nixlib-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.pl | 9 |
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]*$//; |