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.
This commit is contained in:
@@ -147,11 +147,16 @@ my $activePrev = getActiveUnits;
|
|||||||
while (my ($unit, $state) = each %{$activePrev}) {
|
while (my ($unit, $state) = each %{$activePrev}) {
|
||||||
my $baseUnit = $unit;
|
my $baseUnit = $unit;
|
||||||
|
|
||||||
# Recognise template instances.
|
|
||||||
$baseUnit = "$1\@.$2" if $unit =~ /^(.*)@[^\.]*\.(.*)$/;
|
|
||||||
my $prevUnitFile = "/etc/systemd/system/$baseUnit";
|
my $prevUnitFile = "/etc/systemd/system/$baseUnit";
|
||||||
my $newUnitFile = "$out/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;
|
my $baseName = $baseUnit;
|
||||||
$baseName =~ s/\.[a-z]*$//;
|
$baseName =~ s/\.[a-z]*$//;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user