{ config, lib, ... }: let cfg = config.kropcloud.locale; in { options.kropcloud.locale = { timeZone = lib.mkOption { type = lib.types.str; default = "Europe/Prague"; description = "The timezone for the system."; }; keyMap = lib.mkOption { type = lib.types.str; default = "cz-lat2"; description = "The keymap to use for console input."; }; defaultLocale = lib.mkOption { type = lib.types.str; default = "en_GB.UTF-8"; description = "The default locale for the system."; }; extraLocale = lib.mkOption { type = lib.types.str; default = "cs_CZ.UTF-8"; description = "The locale to apply uniformly to all LC_* categories."; }; }; config = { # Set the system timezone. time.timeZone = cfg.timeZone; # Set the default locale. i18n.defaultLocale = cfg.defaultLocale; # Apply the same locale to all LC_* categories. i18n.extraLocaleSettings = lib.genAttrs [ "LC_ADDRESS" "LC_IDENTIFICATION" "LC_MEASUREMENT" "LC_MONETARY" "LC_NAME" "LC_NUMERIC" "LC_PAPER" "LC_TELEPHONE" "LC_TIME" ] (_: cfg.extraLocale); # Set the console keymap. console.keyMap = cfg.keyMap; }; }