mirror of
https://github.com/gensokyo-zone/infrastructure.git
synced 2026-02-09 20:39:18 -08:00
79 lines
2.2 KiB
Nix
79 lines
2.2 KiB
Nix
{ config, superConfig, lib, ... }:
|
|
|
|
with lib;
|
|
|
|
{
|
|
options.network = {
|
|
addresses = mkOption {
|
|
type = with types; attrsOf (submodule ({ name, ... }: {
|
|
options = {
|
|
enable = mkEnableOption "Is the system a part of the ${name} network?";
|
|
ipv4 = {
|
|
enable = mkOption {
|
|
type = types.bool;
|
|
};
|
|
address = mkOption {
|
|
type = types.str;
|
|
};
|
|
};
|
|
ipv6 = {
|
|
enable = mkOption {
|
|
type = types.bool;
|
|
};
|
|
address = mkOption {
|
|
type = types.str;
|
|
};
|
|
};
|
|
prefix = mkOption {
|
|
type = types.nullOr types.str;
|
|
};
|
|
domain = mkOption {
|
|
type = types.nullOr types.str;
|
|
};
|
|
out = {
|
|
identifierList = mkOption {
|
|
type = types.listOf types.str;
|
|
default = if config.enable then singleton config.domain ++ config.out.addressList else [ ];
|
|
};
|
|
addressList = mkOption {
|
|
type = types.listOf types.str;
|
|
default = if config.enable then concatMap (i: optional i.enable i.address) [ config.ipv4 config.ipv6 ] else [ ];
|
|
};
|
|
};
|
|
};
|
|
}));
|
|
};
|
|
privateGateway = mkOption {
|
|
type = types.str;
|
|
};
|
|
tf = {
|
|
enable = mkEnableOption "Was the system provisioned by terraform?";
|
|
ipv4_attr = mkOption {
|
|
type = types.str;
|
|
};
|
|
ipv6_attr = mkOption {
|
|
type = types.str;
|
|
};
|
|
};
|
|
dns = {
|
|
isRoot = mkEnableOption "Is this system supposed to be the @ for the domain?";
|
|
email = mkOption {
|
|
type = types.nullOr types.str;
|
|
};
|
|
tld = mkOption {
|
|
type = types.nullOr types.str;
|
|
};
|
|
domain = mkOption {
|
|
type = types.nullOr types.str;
|
|
};
|
|
dynamic = mkEnableOption "Enable Glauca Dynamic DNS Updater";
|
|
};
|
|
};
|
|
|
|
config = {
|
|
network.addresses = superConfig.network.addresses;
|
|
network.privateGateway = superConfig.network.privateGateway;
|
|
network.tf = superConfig.network.tf;
|
|
network.dns = superConfig.network.dns;
|
|
};
|
|
}
|