aboutsummaryrefslogtreecommitdiffstats
path: root/modules/system/locale
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-05-20 16:10:21 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-05-20 16:14:26 +0200
commit368cb6b0d25db2ae23be42ad51584de059997e51 (patch)
tree3282e45d3ebced63c8498a47e83a255c35de620b /modules/system/locale
parentrefactor(hm): Rename to `modules/home` (diff)
downloadnixos-config-368cb6b0d25db2ae23be42ad51584de059997e51.zip
refactor(sys): Modularize and move to `modules/system` or `pkgs`
Diffstat (limited to 'modules/system/locale')
-rw-r--r--modules/system/locale/default.nix57
-rw-r--r--modules/system/locale/keymaps/dvorak_modified.xkb15
-rw-r--r--modules/system/locale/keymaps/us_modified.xkb9
3 files changed, 81 insertions, 0 deletions
diff --git a/modules/system/locale/default.nix b/modules/system/locale/default.nix
new file mode 100644
index 00000000..10569216
--- /dev/null
+++ b/modules/system/locale/default.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;
+ };
+ };
+ };
+}
diff --git a/modules/system/locale/keymaps/dvorak_modified.xkb b/modules/system/locale/keymaps/dvorak_modified.xkb
new file mode 100644
index 00000000..63f5d4fb
--- /dev/null
+++ b/modules/system/locale/keymaps/dvorak_modified.xkb
@@ -0,0 +1,15 @@
+partial alphanumeric_keys
+xkb_symbols "dvorak-modified" {
+ name[Group1]= "Dvorak English with additional keys";
+
+ key <AC02> {[ o, O, odiaeresis, Odiaeresis]};
+ key <AC04> {[ u, U, udiaeresis, Udiaeresis]};
+ key <AC01> {type[Group1]="EIGHT_LEVEL",
+ [ a, A, adiaeresis, Adiaeresis, aring, Aring]};
+
+
+ include "us(dvorak)"
+ include "level3(caps_switch)"
+ include "level5(ralt_switch)"
+};
+// vim: ft=xkb
diff --git a/modules/system/locale/keymaps/us_modified.xkb b/modules/system/locale/keymaps/us_modified.xkb
new file mode 100644
index 00000000..6299a5e9
--- /dev/null
+++ b/modules/system/locale/keymaps/us_modified.xkb
@@ -0,0 +1,9 @@
+partial alphanumeric_keys
+xkb_symbols "us-modified" {
+ name[Group1]= "US English with caps lock key as compose key";
+
+
+ include "us(basic)"
+ include "compose(caps)"
+};
+// vim: ft=xkb