nixos/timesyncd: replace activationScript via ExecPreStart

Changed files
+22 -23
nixos
modules
system
+22 -23
nixos/modules/system/boot/timesyncd.nix
···
wantedBy = [ "sysinit.target" ];
aliases = [ "dbus-org.freedesktop.timesync1.service" ];
restartTriggers = [ config.environment.etc."systemd/timesyncd.conf".source ];
+
+
preStart = (
+
# Ensure that we have some stored time to prevent
+
# systemd-timesyncd to resort back to the fallback time. If
+
# the file doesn't exist we assume that our current system
+
# clock is good enough to provide an initial value.
+
''
+
if ! [ -f /var/lib/systemd/timesync/clock ]; then
+
test -d /var/lib/systemd/timesync || mkdir -p /var/lib/systemd/timesync
+
touch /var/lib/systemd/timesync/clock
+
fi
+
'' +
+
# workaround an issue of systemd-timesyncd not starting due to upstream systemd reverting their dynamic users changes
+
# - https://github.com/NixOS/nixpkgs/pull/61321#issuecomment-492423742
+
# - https://github.com/systemd/systemd/issues/12131
+
(lib.optionalString (versionOlder config.system.stateVersion "19.09") ''
+
if [ -L /var/lib/systemd/timesync ]; then
+
rm /var/lib/systemd/timesync
+
mv /var/lib/private/systemd/timesync /var/lib/systemd/timesync
+
fi
+
'')
+
);
};
environment.etc."systemd/timesyncd.conf".text = ''
···
group = "systemd-timesync";
};
users.groups.systemd-timesync.gid = config.ids.gids.systemd-timesync;
-
-
system.activationScripts.systemd-timesyncd-migration =
-
# workaround an issue of systemd-timesyncd not starting due to upstream systemd reverting their dynamic users changes
-
# - https://github.com/NixOS/nixpkgs/pull/61321#issuecomment-492423742
-
# - https://github.com/systemd/systemd/issues/12131
-
mkIf (versionOlder config.system.stateVersion "19.09") ''
-
if [ -L /var/lib/systemd/timesync ]; then
-
rm /var/lib/systemd/timesync
-
mv /var/lib/private/systemd/timesync /var/lib/systemd/timesync
-
fi
-
'';
-
system.activationScripts.systemd-timesyncd-init-clock =
-
# Ensure that we have some stored time to prevent systemd-timesyncd to
-
# resort back to the fallback time.
-
# If the file doesn't exist we assume that our current system clock is
-
# good enough to provide an initial value.
-
''
-
if ! [ -f /var/lib/systemd/timesync/clock ]; then
-
test -d /var/lib/systemd/timesync || mkdir -p /var/lib/systemd/timesync
-
touch /var/lib/systemd/timesync/clock
-
fi
-
'';
};
-
}