aboutsummaryrefslogtreecommitdiffstats
path: root/modules/by-name/lo/locale/module.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/by-name/lo/locale/module.nix')
-rw-r--r--modules/by-name/lo/locale/module.nix57
1 files changed, 57 insertions, 0 deletions
diff --git a/modules/by-name/lo/locale/module.nix b/modules/by-name/lo/locale/module.nix
new file mode 100644
index 00000000..10569216
--- /dev/null
+++ b/modules/by-name/lo/locale/module.nix
@@ -0,0 +1,57 @@
+{
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.soispha.locale;
+in {
+ options.soispha.locale = {
+ enable = lib.mkEnableOption "locale setup";
+
+ keyMap = lib.mkOption {
+ type = lib.types.str;
+ example = "us";
+ default = "dvorak";
+ description = "The console key map language to use";
+ };
+
+ timeZone = lib.mkOption {
+ type = lib.types.str;
+ default = "Europe/Berlin";
+ description = "The time zone to use";
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ time = {
+ inherit (cfg) timeZone;
+ };
+
+ 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.xkb.extraLayouts = {
+ "us-modified" = {
+ description = "standard us with caps as compose key.";
+ 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;
+ };
+ };
+ };
+}