53 lines
2 KiB
Nix
53 lines
2 KiB
Nix
|
# Regression test for systemd-timesync having moved the state directory without
|
||
|
# upstream providing a migration path. https://github.com/systemd/systemd/issues/12131
|
||
|
|
||
|
import ./make-test.nix (let
|
||
|
common = { lib, ... }: {
|
||
|
# override the `false` value from the qemu-vm base profile
|
||
|
services.timesyncd.enable = lib.mkForce true;
|
||
|
};
|
||
|
mkVM = conf: { imports = [ conf common ]; };
|
||
|
in {
|
||
|
name = "systemd-timesyncd";
|
||
|
nodes = {
|
||
|
current = mkVM {};
|
||
|
pre1909 = mkVM ({lib, ... }: with lib; {
|
||
|
# create the path that should be migrated by our activation script when
|
||
|
# upgrading to a newer nixos version
|
||
|
system.stateVersion = "19.03";
|
||
|
system.activationScripts.simulate-old-timesync-state-dir = mkBefore ''
|
||
|
rm -f /var/lib/systemd/timesync
|
||
|
mkdir -p /var/lib/systemd /var/lib/private/systemd/timesync
|
||
|
ln -s /var/lib/private/systemd/timesync /var/lib/systemd/timesync
|
||
|
chown systemd-timesync: /var/lib/private/systemd/timesync
|
||
|
'';
|
||
|
});
|
||
|
};
|
||
|
|
||
|
testScript = ''
|
||
|
startAll;
|
||
|
$current->succeed('systemctl status systemd-timesyncd.service');
|
||
|
# on a new install with a recent systemd there should not be any
|
||
|
# leftovers from the dynamic user mess
|
||
|
$current->succeed('test -e /var/lib/systemd/timesync');
|
||
|
$current->succeed('test ! -L /var/lib/systemd/timesync');
|
||
|
|
||
|
# timesyncd should be running on the upgrading system since we fixed the
|
||
|
# file bits in the activation script
|
||
|
$pre1909->succeed('systemctl status systemd-timesyncd.service');
|
||
|
|
||
|
# the path should be gone after the migration
|
||
|
$pre1909->succeed('test ! -e /var/lib/private/systemd/timesync');
|
||
|
|
||
|
# and the new path should no longer be a symlink
|
||
|
$pre1909->succeed('test -e /var/lib/systemd/timesync');
|
||
|
$pre1909->succeed('test ! -L /var/lib/systemd/timesync');
|
||
|
|
||
|
# after a restart things should still work and not fail in the activation
|
||
|
# scripts and cause the boot to fail..
|
||
|
$pre1909->shutdown;
|
||
|
$pre1909->start;
|
||
|
$pre1909->succeed('systemctl status systemd-timesyncd.service');
|
||
|
'';
|
||
|
})
|