{ config, lib, ... }: let cfg = config.sys.core.locale; in { options.sys.core.locale = { enable = lib.mkEnableOption "system localization (timezone and language)"; timeZone = lib.mkOption { type = lib.types.str; default = "Europe/Warsaw"; description = "the system timezone."; }; format = lib.mkOption { type = lib.types.str; default = "pl_PL.UTF-8"; description = "the locale used for numbers, time, and measurements."; }; }; config = lib.mkIf cfg.enable { time.timeZone = cfg.timeZone; i18n = { defaultLocale = "en_US.UTF-8"; extraLocaleSettings = { LC_TIME = cfg.format; LC_NUMERIC = cfg.format; LC_MONETARY = cfg.format; LC_PAPER = cfg.format; LC_MEASUREMENT = cfg.format; LC_COLLATE = cfg.format; LC_NAME = cfg.format; LC_ADDRESS = cfg.format; LC_TELEPHONE = cfg.format; LC_IDENTIFICATION = cfg.format; }; }; }; }