{ config, lib, ... }: let inherit (lib) types mkOption; in { options = { module.locale = mkOption { type = types.strMatching "[a-z]{2}_[A-Z]{2}\\.UTF-8"; default = "en_US.UTF-8"; description = "set locale"; }; }; config = { i18n = let inherit (config.module) locale; in { defaultLocale = locale; extraLocaleSettings = { LC_ADDRESS = locale; LC_COLLATE = "en_US.UTF-8"; LC_CTYPE = locale; LC_IDENTIFICATION = locale; LC_MEASUREMENT = locale; LC_MESSAGES = locale; LC_MONETARY = locale; LC_NAME = locale; LC_NUMERIC = locale; LC_PAPER = locale; LC_TELEPHONE = locale; LC_TIME = locale; }; }; }; }