Unverified Commit bcc7693c authored by Florian Klink's avatar Florian Klink Committed by GitHub
Browse files

nixos/timesyncd: allow NTP servers advertised by DHCP to be used (#335755)

parents 8c3bca84 24e08d0e
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -448,6 +448,10 @@

- The hooks `yarnConfigHook` and `yarnBuildHook` were added. These should replace `yarn2nix.mkYarnPackage` and other `yarn2nix` related tools. The motivation to get rid of `yarn2nix` tools is the fact that they are too complex and hard to maintain, and they rely upon too much Nix evaluation which is problematic if import-from-derivation is not allowed (see more details at [#296856](https://github.com/NixOS/nixpkgs/issues/296856). The transition from `mkYarnPackage` to `yarn{Config,Build}Hook` is tracked at [#324246](https://github.com/NixOS/nixpkgs/issues/324246).

- `services.timesyncd.servers` now defaults to `null`, allowing systemd-timesyncd to use NTP servers advertised by DHCP.

- `services.timesyncd.fallbackServers` was added and defaults to `networking.timeServers`.

- Cinnamon has been updated to 6.2, please check [upstream announcement](https://www.linuxmint.com/rel_wilma_whatsnew.php) for more details.
  Following Mint 22 defaults, the Cinnamon module no longer ships geary and hexchat by default.

+36 −12
Original line number Diff line number Diff line
@@ -2,33 +2,52 @@

with lib;

let
  cfg = config.services.timesyncd;
in
{

  options = {

    services.timesyncd = {
    services.timesyncd = with types; {
      enable = mkOption {
        default = !config.boot.isContainer;
        defaultText = literalExpression "!config.boot.isContainer";
        type = types.bool;
        type = bool;
        description = ''
          Enables the systemd NTP client daemon.
        '';
      };
      servers = mkOption {
        default = null;
        type = nullOr (listOf str);
        description = ''
          The set of NTP servers from which to synchronise.

          Setting this option to an empty list will write `NTP=` to the
          `timesyncd.conf` file as opposed to setting this option to null which
          will remove `NTP=` entirely.

          See man:timesyncd.conf(5) for details.
        '';
      };
      fallbackServers = mkOption {
        default = config.networking.timeServers;
        defaultText = literalExpression "config.networking.timeServers";
        type = types.listOf types.str;
        type = nullOr (listOf str);
        description = ''
          The set of NTP servers from which to synchronise.
          Note if this is set to an empty list, the defaults systemd itself is
          compiled with ({0..4}.nixos.pool.ntp.org) apply,
          In case you want to disable timesyncd altogether, use the `enable` option.
          The set of fallback NTP servers from which to synchronise.

          Setting this option to an empty list will write `FallbackNTP=` to the
          `timesyncd.conf` file as opposed to setting this option to null which
          will remove `FallbackNTP=` entirely.

          See man:timesyncd.conf(5) for details.
        '';
      };
      extraConfig = mkOption {
        default = "";
        type = types.lines;
        type = lines;
        example = ''
          PollIntervalMaxSec=180
        '';
@@ -41,7 +60,7 @@ with lib;
    };
  };

  config = mkIf config.services.timesyncd.enable {
  config = mkIf cfg.enable {

    systemd.additionalUpstreamSystemUnits = [ "systemd-timesyncd.service" ];

@@ -82,9 +101,14 @@ with lib;

    environment.etc."systemd/timesyncd.conf".text = ''
      [Time]
      NTP=${concatStringsSep " " config.services.timesyncd.servers}
      ${config.services.timesyncd.extraConfig}
    '';
    ''
    + optionalString (cfg.servers != null) ''
      NTP=${concatStringsSep " " cfg.servers}
    ''
    + optionalString (cfg.fallbackServers != null) ''
      FallbackNTP=${concatStringsSep " " cfg.fallbackServers}
    ''
    + cfg.extraConfig;

    users.users.systemd-timesync = {
      uid = config.ids.uids.systemd-timesync;