# This module defines options for use by all C3D2 machines. { config, lib, ... }: let cfg = config.c3d2; in { options.c3d2 = with lib; with lib.types; { isInHq = mkEnableOption "HQ presence (TODO: what is this? association to VLAN 5?)"; enableMotd = mkOption { type = bool; default = cfg.isInHq; defaultText = literalExample "config.c3d2.isInHq"; }; mapPublicHosts = mkOption { type = bool; default = false; description = '' Whether to add all external HQ host mappings to /etc/hosts. ''; }; mapHqHosts = mkOption { type = bool; default = cfg.isInHq; description = '' Whether to add all internal HQ host mappings to /etc/hosts. ''; }; acmeEmail = mkOption { type = str; default = "mail@c3d2.de"; description = '' Admin email address to use for Letsencrypt ''; }; hq = { interface = mkOption { type = nullOr str; default = null; example = "eth0"; description = '' Configure the given interface name with an internal IP address. ''; }; enableBinaryCache = mkOption { type = bool; default = cfg.isInHq; defaultText = literalExample "config.c3d2.isInHq"; description = "Whether to enable the local Nix binary cache"; }; enableMpdProxy = mkOption { type = bool; default = false; description = "Whether to proxy the local MPD database"; }; }; }; }