mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-02-16 09:03:42 +00:00
nixos/dhcpcd: optimize exitHook
This commit is contained in:
parent
403690caaf
commit
1293f046b5
@ -13,6 +13,8 @@ let
|
||||
enableDHCP = config.networking.dhcpcd.enable &&
|
||||
(config.networking.useDHCP || any (i: i.useDHCP == true) interfaces);
|
||||
|
||||
enableNTPService = (config.services.ntp.enable || config.services.ntpd-rs.enable || config.services.openntpd.enable || config.services.chrony.enable);
|
||||
|
||||
# Don't start dhcpcd on explicitly configured interfaces or on
|
||||
# interfaces that are part of a bridge, bond or sit device.
|
||||
ignoredInterfaces =
|
||||
@ -89,20 +91,22 @@ let
|
||||
${cfg.extraConfig}
|
||||
'';
|
||||
|
||||
exitHook = pkgs.writeText "dhcpcd.exit-hook"
|
||||
''
|
||||
exitHook = pkgs.writeText "dhcpcd.exit-hook" ''
|
||||
${optionalString enableNTPService ''
|
||||
if [ "$reason" = BOUND -o "$reason" = REBOOT ]; then
|
||||
# Restart ntpd. We need to restart it to make sure that it
|
||||
# will actually do something: if ntpd cannot resolve the
|
||||
# server hostnames in its config file, then it will never do
|
||||
# anything ever again ("couldn't resolve ..., giving up on
|
||||
# it"), so we silently lose time synchronisation. This also
|
||||
# applies to openntpd.
|
||||
/run/current-system/systemd/bin/systemctl try-reload-or-restart ntpd.service openntpd.service chronyd.service ntpd-rs.service || true
|
||||
# Restart ntpd. We need to restart it to make sure that it will actually do something:
|
||||
# if ntpd cannot resolve the server hostnames in its config file, then it will never do
|
||||
# anything ever again ("couldn't resolve ..., giving up on it"), so we silently lose
|
||||
# time synchronisation. This also applies to openntpd.
|
||||
${optionalString config.services.ntp.enable "/run/current-system/systemd/bin/systemctl try-reload-or-restart ntpd.service || true"}
|
||||
${optionalString config.services.ntpd-rs.enable "/run/current-system/systemd/bin/systemctl try-reload-or-restart ntpd-rs.service || true"}
|
||||
${optionalString config.services.openntpd.enable "/run/current-system/systemd/bin/systemctl try-reload-or-restart openntpd.service || true"}
|
||||
${optionalString config.services.chrony.enable "/run/current-system/systemd/bin/systemctl try-reload-or-restart chronyd.service || true"}
|
||||
fi
|
||||
''}
|
||||
|
||||
${cfg.runHook}
|
||||
'';
|
||||
${cfg.runHook}
|
||||
'';
|
||||
|
||||
in
|
||||
|
||||
@ -232,7 +236,7 @@ in
|
||||
wants = [ "network.target" ];
|
||||
before = [ "network-online.target" ];
|
||||
|
||||
restartTriggers = [ exitHook ];
|
||||
restartTriggers = optional (enableNTPService || cfg.runHook != "") [ exitHook ];
|
||||
|
||||
# Stopping dhcpcd during a reconfiguration is undesirable
|
||||
# because it brings down the network interfaces configured by
|
||||
@ -261,7 +265,9 @@ in
|
||||
|
||||
environment.systemPackages = [ dhcpcd ];
|
||||
|
||||
environment.etc."dhcpcd.exit-hook".source = exitHook;
|
||||
environment.etc."dhcpcd.exit-hook" = mkIf (enableNTPService || cfg.runHook != "") {
|
||||
source = exitHook;
|
||||
};
|
||||
|
||||
powerManagement.resumeCommands = mkIf config.systemd.services.dhcpcd.enable
|
||||
''
|
||||
|
Loading…
Reference in New Issue
Block a user