{ config, lib, ... }: { options.szpont.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 config.szpont.locale.enable { time.timeZone = config.szpont.locale.timeZone; i18n = { defaultLocale = "en_US.UTF-8"; extraLocaleSettings = { LC_TIME = config.szpont.locale.format; LC_NUMERIC = config.szpont.locale.format; LC_MONETARY = config.szpont.locale.format; LC_PAPER = config.szpont.locale.format; LC_MEASUREMENT = config.szpont.locale.format; LC_COLLATE = config.szpont.locale.format; LC_NAME = config.szpont.locale.format; LC_ADDRESS = config.szpont.locale.format; LC_TELEPHONE = config.szpont.locale.format; LC_IDENTIFICATION = config.szpont.locale.format; }; }; }; }