Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: NixOS/nixpkgs
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: e986624620f8
Choose a base ref
...
head repository: NixOS/nixpkgs
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 0f31f03f2246
Choose a head ref
  • 5 commits
  • 1 file changed
  • 2 contributors

Commits on Jan 6, 2021

  1. Verified

    This commit was signed with the committer’s verified signature. The key has expired.
    ctem Ctem
    Copy the full SHA
    9550d86 View commit details
  2. Verified

    This commit was signed with the committer’s verified signature. The key has expired.
    ctem Ctem
    Copy the full SHA
    2e131e1 View commit details
  3. Verified

    This commit was signed with the committer’s verified signature. The key has expired.
    ctem Ctem
    Copy the full SHA
    2aec205 View commit details
  4. Verified

    This commit was signed with the committer’s verified signature. The key has expired.
    ctem Ctem
    Copy the full SHA
    5477855 View commit details

Commits on Jan 22, 2021

  1. Merge pull request #108578 from ctem/feature/chrony

    nixos/chrony: add support for Network Time Security (NTS) authentication
    AndersonTorres authored Jan 22, 2021

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    0f31f03 View commit details
Showing with 45 additions and 5 deletions.
  1. +45 −5 nixos/modules/services/networking/ntp/chrony.nix
50 changes: 45 additions & 5 deletions nixos/modules/services/networking/ntp/chrony.nix
Original file line number Diff line number Diff line change
@@ -4,13 +4,14 @@ with lib;

let
cfg = config.services.chrony;
chronyPkg = cfg.package;

stateDir = "/var/lib/chrony";
stateDir = cfg.directory;
driftFile = "${stateDir}/chrony.drift";
keyFile = "${stateDir}/chrony.keys";

configFile = pkgs.writeText "chrony.conf" ''
${concatMapStringsSep "\n" (server: "server " + server + " iburst") cfg.servers}
${concatMapStringsSep "\n" (server: "server " + server + " " + cfg.serverOption + optionalString (cfg.enableNTS) " nts") cfg.servers}
${optionalString
(cfg.initstepslew.enabled && (cfg.servers != []))
@@ -19,6 +20,7 @@ let
driftfile ${driftFile}
keyfile ${keyFile}
${optionalString (cfg.enableNTS) "ntsdumpdir ${stateDir}"}
${optionalString (!config.time.hardwareClockInLocalTime) "rtconutc"}
@@ -39,6 +41,15 @@ in
'';
};

package = mkOption {
type = types.package;
default = pkgs.chrony;
defaultText = "pkgs.chrony";
description = ''
Which chrony package to use.
'';
};

servers = mkOption {
default = config.networking.timeServers;
type = types.listOf types.str;
@@ -47,6 +58,29 @@ in
'';
};

serverOption = mkOption {
default = "iburst";
type = types.enum [ "iburst" "offline" ];
description = ''
Set option for server directives.
Use "iburst" to rapidly poll on startup. Recommended if your machine
is consistently online.
Use "offline" to prevent polling on startup. Recommended if your
machine boots offline or is otherwise frequently offline.
'';
};

enableNTS = mkOption {
type = types.bool;
default = false;
description = ''
Whether to enable Network Time Security authentication.
Make sure it is supported by your selected NTP server(s).
'';
};

initstepslew = mkOption {
default = {
enabled = true;
@@ -59,6 +93,12 @@ in
'';
};

directory = mkOption {
type = types.str;
default = "/var/lib/chrony";
description = "Directory where chrony state is stored.";
};

extraConfig = mkOption {
type = types.lines;
default = "";
@@ -80,7 +120,7 @@ in
config = mkIf cfg.enable {
meta.maintainers = with lib.maintainers; [ thoughtpolice ];

environment.systemPackages = [ pkgs.chrony ];
environment.systemPackages = [ chronyPkg ];

users.groups.chrony.gid = config.ids.gids.chrony;

@@ -110,12 +150,12 @@ in
after = [ "network.target" ];
conflicts = [ "ntpd.service" "systemd-timesyncd.service" ];

path = [ pkgs.chrony ];
path = [ chronyPkg ];

unitConfig.ConditionCapability = "CAP_SYS_TIME";
serviceConfig =
{ Type = "simple";
ExecStart = "${pkgs.chrony}/bin/chronyd ${chronyFlags}";
ExecStart = "${chronyPkg}/bin/chronyd ${chronyFlags}";

ProtectHome = "yes";
ProtectSystem = "full";