mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-26 17:03:01 +00:00
Merge pull request #100155 from primeos/nixos-add-fqdn-option
nixos/networking: Add a read-only option for the FQDN
This commit is contained in:
commit
b2f3bd4d79
@ -124,7 +124,8 @@ in
|
||||
};
|
||||
hostName = mkOption {
|
||||
type = types.str;
|
||||
default = config.networking.hostName;
|
||||
default = config.networking.fqdn;
|
||||
defaultText = "\${config.networking.fqdn}";
|
||||
example = "somewhere.example.com";
|
||||
description = "DNS name for the urls generated in the cgi.";
|
||||
};
|
||||
@ -156,6 +157,7 @@ in
|
||||
ownerEmail = mkOption {
|
||||
type = types.str;
|
||||
default = "no-reply@${cfg.hostName}";
|
||||
defaultText = "no-reply@\${hostName}";
|
||||
example = "no-reply@yourdomain.com";
|
||||
description = "Email contact for owner";
|
||||
};
|
||||
@ -239,18 +241,18 @@ in
|
||||
targetConfig = mkOption {
|
||||
type = types.lines;
|
||||
default = ''
|
||||
probe = FPing
|
||||
menu = Top
|
||||
title = Network Latency Grapher
|
||||
remark = Welcome to the SmokePing website of xxx Company. \
|
||||
Here you will learn all about the latency of our network.
|
||||
+ Local
|
||||
menu = Local
|
||||
title = Local Network
|
||||
++ LocalMachine
|
||||
menu = Local Machine
|
||||
title = This host
|
||||
host = localhost
|
||||
probe = FPing
|
||||
menu = Top
|
||||
title = Network Latency Grapher
|
||||
remark = Welcome to the SmokePing website of xxx Company. \
|
||||
Here you will learn all about the latency of our network.
|
||||
+ Local
|
||||
menu = Local
|
||||
title = Local Network
|
||||
++ LocalMachine
|
||||
menu = Local Machine
|
||||
title = This host
|
||||
host = localhost
|
||||
'';
|
||||
description = "Target configuration";
|
||||
};
|
||||
|
@ -398,6 +398,24 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
networking.fqdn = mkOption {
|
||||
readOnly = true;
|
||||
type = types.str;
|
||||
default = if (cfg.hostName != "" && cfg.domain != null)
|
||||
then "${cfg.hostName}.${cfg.domain}"
|
||||
else throw ''
|
||||
The FQDN is required but cannot be determined. Please make sure that
|
||||
both networking.hostName and networking.domain are set properly.
|
||||
'';
|
||||
defaultText = literalExample ''''${networking.hostName}.''${networking.domain}'';
|
||||
description = ''
|
||||
The fully qualified domain name (FQDN) of this host. It is the result
|
||||
of combining networking.hostName and networking.domain. Using this
|
||||
option will result in an evaluation error if the hostname is empty or
|
||||
no domain is specified.
|
||||
'';
|
||||
};
|
||||
|
||||
networking.hostId = mkOption {
|
||||
default = null;
|
||||
example = "4e98920d";
|
||||
|
@ -7,9 +7,12 @@ with import ../lib/testing-python.nix { inherit system pkgs; };
|
||||
with pkgs.lib;
|
||||
|
||||
let
|
||||
makeHostNameTest = hostName: domain:
|
||||
makeHostNameTest = hostName: domain: fqdnOrNull:
|
||||
let
|
||||
fqdn = hostName + (optionalString (domain != null) ".${domain}");
|
||||
getStr = str: # maybeString2String
|
||||
let res = builtins.tryEval str;
|
||||
in if (res.success && res.value != null) then res.value else "null";
|
||||
in
|
||||
makeTest {
|
||||
name = "hostname-${fqdn}";
|
||||
@ -26,13 +29,16 @@ let
|
||||
];
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
testScript = { nodes, ... }: ''
|
||||
start_all()
|
||||
|
||||
machine = ${hostName}
|
||||
|
||||
machine.wait_for_unit("network-online.target")
|
||||
|
||||
# Test if NixOS computes the correct FQDN (either a FQDN or an error/null):
|
||||
assert "${getStr nodes.machine.config.networking.fqdn}" == "${getStr fqdnOrNull}"
|
||||
|
||||
# The FQDN, domain name, and hostname detection should work as expected:
|
||||
assert "${fqdn}" == machine.succeed("hostname --fqdn").strip()
|
||||
assert "${optionalString (domain != null) domain}" == machine.succeed("dnsdomainname").strip()
|
||||
@ -60,7 +66,7 @@ let
|
||||
|
||||
in
|
||||
{
|
||||
noExplicitDomain = makeHostNameTest "ahost" null;
|
||||
noExplicitDomain = makeHostNameTest "ahost" null null;
|
||||
|
||||
explicitDomain = makeHostNameTest "ahost" "adomain";
|
||||
explicitDomain = makeHostNameTest "ahost" "adomain" "ahost.adomain";
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import ./make-test-python.nix ({ pkgs, ...} : {
|
||||
sm =
|
||||
{ ... }:
|
||||
{
|
||||
networking.domain = "example.com"; # FQDN: sm.example.com
|
||||
services.smokeping = {
|
||||
enable = true;
|
||||
port = 8081;
|
||||
|
Loading…
Reference in New Issue
Block a user