Commit 3c1c4b65 authored by Julian Stecklina's avatar Julian Stecklina Committed by nikstur
Browse files

nixos/timesyncd: replace activationScript via ExecPreStart

parent f827f7ad
Loading
Loading
Loading
Loading
+22 −23
Original line number Diff line number Diff line
@@ -46,6 +46,28 @@ with lib;
      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 = ''
@@ -59,28 +81,5 @@ with lib;
      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
      '';
  };

}