network-interfaces: set hostname from sysctl if defined
The `networking.hostname` option was changed to not permit periods in names, due to a strict reading of RFC 1123. For users who need the hostname to be fully qualified, the networking.hostName option suggests using boot.kernel.sysctl."kernel.hostname" as a workaround. This option works correctly at boot time, but every "nixos-rebuild switch" will change the hostname back to the unqualified version. This commit brings the activation script in line with the documentation's recommendation.
This commit is contained in:
parent
c622182b38
commit
857c649083
@ -1115,9 +1115,10 @@ in
|
||||
# Set the host and domain names in the activation script. Don't
|
||||
# clear it if it's not configured in the NixOS configuration,
|
||||
# since it may have been set by dhcpcd in the meantime.
|
||||
system.activationScripts.hostname =
|
||||
optionalString (cfg.hostName != "") ''
|
||||
hostname "${cfg.hostName}"
|
||||
system.activationScripts.hostname = let
|
||||
effectiveHostname = config.boot.kernel.sysctl."kernel.hostname" or cfg.hostName;
|
||||
in optionalString (effectiveHostname != "") ''
|
||||
hostname "${effectiveHostname}"
|
||||
'';
|
||||
system.activationScripts.domain =
|
||||
optionalString (cfg.domain != null) ''
|
||||
|
Loading…
Reference in New Issue
Block a user