{ config, pkgs, lib, ... }: with lib; let fontModule = types.submodule ({ name, config, ... }: { options = { family = mkOption { type = types.str; example = "Fira Code"; description = "Font family."; }; name = mkOption { type = types.str; description = "Full Pango font name. Read-only."; readOnly = true; }; }; config.name = "this is set from ${config.family}"; }); in { options.theming = { enable = mkEnableOption "Enable centralized theming config that universally works on all environments."; fonts.sans = mkOption { type = fontModule; }; }; }