109 lines
3.1 KiB
Nix
109 lines
3.1 KiB
Nix
|
{
|
||
|
config,
|
||
|
pkgs,
|
||
|
lib,
|
||
|
inputs,
|
||
|
...
|
||
|
}: {
|
||
|
options = {
|
||
|
host.systemdDhcpSrv = {
|
||
|
enable = lib.mkEnableOption "systemd DHCP server";
|
||
|
|
||
|
interface = lib.mkOption {
|
||
|
type = lib.types.str;
|
||
|
description = "interface to run dhcp server on";
|
||
|
};
|
||
|
|
||
|
uplinkInterface = lib.mkOption {
|
||
|
type = lib.types.str;
|
||
|
description = "if dns, router, or ntp are set but no adresses are set, pass on the settings of this interface.";
|
||
|
default = ":auto";
|
||
|
};
|
||
|
|
||
|
pool = lib.mkOption {
|
||
|
description = "the pool of ips the dhcp server will hand out.";
|
||
|
type = lib.types.submodule {
|
||
|
options = {
|
||
|
start = lib.mkOption {
|
||
|
type = lib.types.str;
|
||
|
description = "starting IP of the range the dhcp server will assign";
|
||
|
};
|
||
|
end = lib.mkOption {
|
||
|
type = lib.types.str;
|
||
|
description = "ending IP of the range the dhcp server will assign";
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
time = lib.mkOption {
|
||
|
type = lib.types.submodule {
|
||
|
options = {
|
||
|
default = lib.mkOption {
|
||
|
description = "the default dhcp lease time, in seconds, defaults to 1h";
|
||
|
type = lib.types.nullOr lib.types.int;
|
||
|
default = null;
|
||
|
};
|
||
|
max = lib.mkOption {
|
||
|
description = "the max dhcp lease time, in seconds. defaults to 12h";
|
||
|
type = lib.types.nullOr lib.types.int;
|
||
|
default = null;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
dns = lib.mkoption {
|
||
|
type = lib.types.submodule {
|
||
|
options = {
|
||
|
enable = lib.mkOption {
|
||
|
type = lib.types.bool;
|
||
|
default = true;
|
||
|
description = "whether to include dns server info in the dhcp lease";
|
||
|
};
|
||
|
servers = lib.mkOption {
|
||
|
type = lib.types.listOf lib.types.str;
|
||
|
description = "IPs of dns servers to hand out";
|
||
|
default = [];
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
router = lib.mkoption {
|
||
|
type = lib.types.submodule {
|
||
|
options = {
|
||
|
enable = lib.mkOption {
|
||
|
type = lib.types.bool;
|
||
|
default = true;
|
||
|
description = "whether to include router (gateway) info in the dhcp lease";
|
||
|
};
|
||
|
servers = lib.mkOption {
|
||
|
type = lib.types.listOf lib.types.str;
|
||
|
description = "IPs of dns servers to hand out";
|
||
|
default = [];
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
ntp = lib.mkoption {
|
||
|
type = lib.types.submodule {
|
||
|
options = {
|
||
|
enable = lib.mkOption {
|
||
|
type = lib.types.bool;
|
||
|
default = true;
|
||
|
description = "whether to include ntp server info in the dhcp lease";
|
||
|
};
|
||
|
servers = lib.mkOption {
|
||
|
type = lib.types.listOf lib.types.str;
|
||
|
description = "IPs of ntp servers to hand out";
|
||
|
default = [];
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
}
|