29 lines
654 B
Nix
29 lines
654 B
Nix
{
|
|
config,
|
|
lib,
|
|
...
|
|
}:
|
|
let
|
|
cfg = config.khscodes.fqdn;
|
|
in
|
|
{
|
|
options.khscodes.fqdn = lib.mkOption {
|
|
type = lib.types.nullOr lib.types.str;
|
|
default = null;
|
|
description = "Sets the FQDN of the machine. This is a prerequisite for many modules to be used";
|
|
};
|
|
|
|
config = lib.mkIf (cfg != null) (
|
|
let
|
|
hostname = builtins.head (lib.strings.splitString "." cfg);
|
|
domain = if hostname == cfg then null else (lib.strings.removePrefix "${hostname}." cfg);
|
|
in
|
|
{
|
|
networking.hostName = hostname;
|
|
networking.domain = domain;
|
|
boot.kernel.sysctl = {
|
|
"kernel.hostname" = cfg;
|
|
};
|
|
}
|
|
);
|
|
}
|