{ self, lib, ... }: { flake.nixosModules.systemLocalization = { config, ... }: let cfg = config.chiasson.system.localization; in { options.chiasson.system.localization = { timeZone = lib.mkOption { type = lib.types.str; default = "America/Moncton"; description = "Default system timezone."; }; defaultLocale = lib.mkOption { type = lib.types.str; default = "en_CA.UTF-8"; description = "Default system locale."; }; xkb = { layout = lib.mkOption { type = lib.types.str; default = "ca"; description = "Default XKB layout."; }; variant = lib.mkOption { type = lib.types.str; default = ""; description = "Default XKB variant."; }; }; consoleKeyMap = lib.mkOption { type = lib.types.str; default = "cf"; description = "Default Linux console keymap."; }; }; config = { time.timeZone = lib.mkDefault cfg.timeZone; i18n.defaultLocale = lib.mkDefault cfg.defaultLocale; services.xserver.xkb.layout = lib.mkDefault cfg.xkb.layout; services.xserver.xkb.variant = lib.mkDefault cfg.xkb.variant; console.keyMap = lib.mkDefault cfg.consoleKeyMap; }; }; }