{ config, lib, ... }: let cfg = config.soispha.locale; in { options.soispha.locale = { enable = lib.mkEnableOption (lib.mdDoc "locale"); keyMap = lib.mkOption { type = lib.types.str; example = "us"; default = "dvorak"; }; }; config = lib.mkIf cfg.enable { # Set your time zone. time.timeZone = "Europe/Berlin"; # Select internationalisation properties. i18n = { defaultLocale = "en_CA.UTF-8"; extraLocaleSettings = { LANGUAGE = "en_CA:en_US:en"; LC_TIME = "en_DK.UTF-8"; LC_COLLATE = "C.UTF-8"; }; }; # Layout console = { inherit (cfg) keyMap; }; services.xserver.extraLayouts = { "us-modified" = { description = "standard us with german and swedish extra chars."; languages = ["eng" "swe" "deu"]; symbolsFile = ./keymaps/us_modified.xkb; }; "dvorak-modified" = { description = "standard dvorak english with german and swedish extra chars."; languages = ["eng" "swe" "deu"]; symbolsFile = ./keymaps/dvorak_modified.xkb; }; }; }; }