diff --git a/configurations/desktop/home.nix b/configurations/desktop/home.nix index 3524de1a..5a823800 100644 --- a/configurations/desktop/home.nix +++ b/configurations/desktop/home.nix @@ -93,6 +93,8 @@ programs.bash.shellAliases = { nixos-rebuild-system-flake-switch = "sudo nixos-rebuild switch --flake /etc/nixos#desktop"; nixos-rebuild-system-flake-boot = "sudo nixos-rebuild boot --flake /etc/nixos#desktop"; + + home-manager-rebuild-system-flake-switch = "nix run home-manager -- switch --flake /etc/nixos#desktop"; }; } diff --git a/configurations/laptop/home.nix b/configurations/laptop/home.nix index b1705193..7a1e47b1 100644 --- a/configurations/laptop/home.nix +++ b/configurations/laptop/home.nix @@ -51,6 +51,8 @@ programs.bash.shellAliases = { nixos-rebuild-system-flake-switch = "sudo nixos-rebuild switch --flake /etc/nixos#laptop"; nixos-rebuild-system-flake-boot = "sudo nixos-rebuild boot --flake /etc/nixos#laptop"; + + home-manager-rebuild-system-flake-switch = "nix run home-manager -- switch --flake /etc/nixos#laptop"; }; home.sessionVariables = { diff --git a/flake.lock b/flake.lock index 019b9709..0314bdd7 100644 --- a/flake.lock +++ b/flake.lock @@ -86,11 +86,11 @@ ] }, "locked": { - "lastModified": 1763198244, - "narHash": "sha256-oLugbe2pJv39BjWg7kAljn6vUxjVr/ArkITDX8fFd2Y=", + "lastModified": 1764194569, + "narHash": "sha256-iUM9ktarEzThkayyZrzQ7oycPshAY2XRQqVKz0xX/L0=", "owner": "nix-community", "repo": "home-manager", - "rev": "c3bc79be5ee97455262c6c677bbf065eed07948c", + "rev": "9651819d75f6c7ffaf8a9227490ac704f29659f0", "type": "github" }, "original": { @@ -111,11 +111,11 @@ "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1763126448, - "narHash": "sha256-LVYJJObvkWwR8QB/Srr6Rks+Fw2lYvnRNOH0etV9DM8=", + "lastModified": 1764165116, + "narHash": "sha256-DN0m9X9dFPxNTfhaUWlHoM2CFbNiWgxVHzC4j0AIiuc=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "add7bcf2925547e180cc2fe6d5f4b5e7c579d086", + "rev": "ae097a3c5ef217f9441d0da1c0bc14bbb4796b94", "type": "github" }, "original": { @@ -144,11 +144,11 @@ "niri-unstable": { "flake": false, "locked": { - "lastModified": 1763014447, - "narHash": "sha256-nmu7S8J9IJKLQyIkSU8QWYHygrfw76NHGTkcr+bXMX0=", + "lastModified": 1764160906, + "narHash": "sha256-6Dud/oe0UnkgCe+JAGF+GjXl6S6ynpcAUYWCdbXjJL4=", "owner": "YaLTeR", "repo": "niri", - "rev": "a52df533c4694b5ed0a04140af60fd26146df911", + "rev": "8370c539fb584f78924b826d0ac0ad8fa068cf95", "type": "github" }, "original": { @@ -167,11 +167,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1761572354, - "narHash": "sha256-3aXsnYf/wXad8DRLTSTOlulS+65qp93eMo5R7pmaHi4=", + "lastModified": 1763964548, + "narHash": "sha256-JTRoaEWvPsVIMFJWeS4G2isPo15wqXY/otsiHPN0zww=", "owner": "nix-community", "repo": "nixd", - "rev": "b9229d79b1cd722257c16027ea79d8f033c3aa4e", + "rev": "d4bf15e56540422e2acc7bc26b20b0a0934e3f5e", "type": "github" }, "original": { @@ -182,11 +182,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1762977756, - "narHash": "sha256-4PqRErxfe+2toFJFgcRKZ0UI9NSIOJa+7RXVtBhy4KE=", + "lastModified": 1763966396, + "narHash": "sha256-6eeL1YPcY1MV3DDStIDIdy/zZCDKgHdkCmsrLJFiZf0=", "owner": "nixos", "repo": "nixpkgs", - "rev": "c5ae371f1a6a7fd27823bc500d9390b38c05fa55", + "rev": "5ae3b07d8d6527c42f17c876e404993199144b6a", "type": "github" }, "original": { @@ -210,11 +210,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1763049705, - "narHash": "sha256-A5LS0AJZ1yDPTa2fHxufZN++n8MCmtgrJDtxFxrH4S8=", + "lastModified": 1763948260, + "narHash": "sha256-dY9qLD0H0zOUgU3vWacPY6Qc421BeQAfm8kBuBtPVE0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3acb677ea67d4c6218f33de0db0955f116b7588c", + "rev": "1c8ba8d3f7634acac4a2094eef7c32ad9106532c", "type": "github" }, "original": { @@ -403,11 +403,11 @@ "xwayland-satellite-unstable": { "flake": false, "locked": { - "lastModified": 1762747449, - "narHash": "sha256-Z1TKiux8K09a93w4PFDFsj8HFugXNy3iCC3Z8MpR5Rk=", + "lastModified": 1763704521, + "narHash": "sha256-ceYEV6PnvUN8Zixao4gpPuN+VT3B0SlAXKuPNHZhqUY=", "owner": "Supreeeme", "repo": "xwayland-satellite", - "rev": "6338574bc5c036487486acde264f38f39ea15fad", + "rev": "f379ff5722a821212eb59ada9cf8e51cb3654aad", "type": "github" }, "original": { @@ -424,11 +424,11 @@ ] }, "locked": { - "lastModified": 1763046220, - "narHash": "sha256-2ORtgLIbqvsExqPw5gbyaZBfB/GBGZIqyB4b3Y9OowE=", + "lastModified": 1763809017, + "narHash": "sha256-mv13dHeIA4cWHZRmFKIF11s7keVP9NhVtpaAYKX40jk=", "owner": "Benexl", "repo": "yt-x", - "rev": "a9050c9dddd21e788f8d79b5745f59c848cbbb1e", + "rev": "efe0465cdf54d13c0606b76780046ab6ecc60a6c", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 9b950db9..75cefcd8 100644 --- a/flake.nix +++ b/flake.nix @@ -62,6 +62,29 @@ }; outputs = { self, nixpkgs, ... }@inputs: { + # Home Manager configurations when we want to run it independently + homeConfigurations = { + desktop = inputs.home-manager.lib.homeManagerConfiguration { + extraSpecialArgs = {inherit inputs;}; + pkgs = import nixpkgs { + system = "x86_64-linux"; + }; + modules = [ + ./configurations/desktop/home.nix + ]; + }; + laptop = inputs.home-manager.lib.homeManagerConfiguration { + extraSpecialArgs = {inherit inputs;}; + pkgs = import nixpkgs { + system = "x86_64-linux"; + }; + modules = [ + ./configurations/laptop/home.nix + ]; + }; + }; + + # Dedicated NixOS configurations nixosConfigurations = { desktop = nixpkgs.lib.nixosSystem { specialArgs = {inherit inputs;}; diff --git a/global-home.nix b/global-home.nix index 0ebc1b58..23d33dc5 100644 --- a/global-home.nix +++ b/global-home.nix @@ -122,6 +122,14 @@ fi # Chawan Configuration "chawan/config.toml".source = ./global-resources/home-manager/.config/chawan/config.toml; + + # Custom Keyboard Layout Configuration + # Standalone XKB + "xkb/engrammer.xkb".source = ./global-resources/home-manager/.config/xkb/engrammer.xkb; + + # Symbol + "xkb/symbols/engrammer".source = ./global-resources/home-manager/.config/xkb/symbols/engrammer; + "xkb/symbols/canary".source = ./global-resources/home-manager/.config/xkb/symbols/canary; }; }; diff --git a/global-resources/home-manager/.config/keyboardlayouts/engrammer.xkb b/global-resources/home-manager/.config/keyboardlayouts/engrammer.xkb new file mode 100644 index 00000000..c5904ef4 --- /dev/null +++ b/global-resources/home-manager/.config/keyboardlayouts/engrammer.xkb @@ -0,0 +1,67 @@ +// ENGRAMMER BEGIN //////////////////////////////////////// +// +// Engrammer - Arno's Engram 2.0 https://engram.dev variant +// with standard shifted pairs, for programmers +// +// `~ 1! 2@ 3# 4$ 5% 6^ 7& 8* 9( 0) [{ ]} +// bB yY oO uU '" ;: lL dD wW vV zZ =+ \| +// cC iI eE aA ,< .> hH tT sS nN qQ +// gG xX jJ kK -_ /? rR mM fF pP +// +partial alphanumeric_keys +xkb_symbols "engrammer" +{ + include "gb(basic)" + + key { [ grave, asciitilde ] }; // `~ + key { [ 1, exclam ] }; // 1! + key { [ 2, at ] }; // 2@ + key { [ 3, numbersign ] }; // 3# + key { [ 4, dollar ] }; // 4$ + key { [ 5, percent ] }; // 5% + key { [ 6, asciicircum] }; // 6^ + key { [ 7, ampersand ] }; // 7& + key { [ 8, asterisk ] }; // 8* + key { [ 9, parenleft ] }; // 9( + key { [ 0, parenright ] }; // 0) + key { [ bracketleft, braceleft ] }; // [{ + key { [ bracketright, braceright ] }; // ]} + + key { [ b, B ] }; // bB + key { [ y, Y ] }; // yY + key { [ o, O ] }; // oO + key { [ u, U ] }; // uU + key { [ apostrophe, quotedbl ] }; // '" + key { [ semicolon, colon ] }; // ;: + key { [ l, L ] }; // lL + key { [ d, D ] }; // dD + key { [ w, W ] }; // wW + key { [ v, V ] }; // vV + key { [ z, Z ] }; // zZ + key { [ equal, plus ] }; // =+ + key { [ backslash, bar ] }; // \| + + key { [ c, C ] }; // cC + key { [ i, I ] }; // iI + key { [ e, E ] }; // eE + key { [ a, A ] }; // aA + key { [ comma, less ] }; // ,< + key { [ period, greater ] }; // .> + key { [ h, H ] }; // hH + key { [ t, T ] }; // tT + key { [ s, S ] }; // sS + key { [ n, N ] }; // nN + key { [ q, Q ] }; // qQ + + key { [ g, G ] }; // gG + key { [ x, X ] }; // xX + key { [ j, J ] }; // jJ + key { [ k, K ] }; // kK + key { [ minus, underscore ] }; // -_ + key { [ slash, question ] }; // /? + key { [ r, R ] }; // rR + key { [ m, M ] }; // mM + key { [ f, F ] }; // fF + key { [ p, P ] }; // pP +}; +// ENGRAMMER END ////////////////////////////////////////// diff --git a/global-resources/home-manager/.config/xkb/engrammer.xkb b/global-resources/home-manager/.config/xkb/engrammer.xkb new file mode 100644 index 00000000..7edf1d96 --- /dev/null +++ b/global-resources/home-manager/.config/xkb/engrammer.xkb @@ -0,0 +1,338 @@ +// ENGRAMMER BEGIN //////////////////////////////////////// +// +// Engrammer - Arno's Engram 2.0 https://engram.dev variant +// with standard shifted pairs, for programmers +// +// `~ 1! 2@ 3# 4$ 5% 6^ 7& 8* 9( 0) [{ ]} +// bB yY oO uU '" ;: lL dD wW vV zZ =+ \| +// cC iI eE aA ,< .> hH tT sS nN qQ +// gG xX jJ kK -_ /? rR mM fF pP +// +xkb_keymap { + xkb_keycodes { include "evdev+aliases(qwerty)" }; + xkb_types { include "complete" }; + xkb_compat { include "complete" }; + xkb_geometry { include "pc(pc105)" }; + + xkb_symbols "engrammer" { + name[group1]="Arnos Engram (Engrammer)"; + + key { [ grave, asciitilde ] }; // `~ + key { [ 1, exclam ] }; // 1! + key { [ 2, at ] }; // 2@ + key { [ 3, numbersign ] }; // 3# + key { [ 4, dollar ] }; // 4$ + key { [ 5, percent ] }; // 5% + key { [ 6, asciicircum] }; // 6^ + key { [ 7, ampersand ] }; // 7& + key { [ 8, asterisk ] }; // 8* + key { [ 9, parenleft ] }; // 9( + key { [ 0, parenright ] }; // 0) + key { [ bracketleft, braceleft ] }; // [{ + key { [ bracketright, braceright ] }; // ]} + + key { [ b, B ] }; // bB + key { [ y, Y ] }; // yY + key { [ o, O ] }; // oO + key { [ u, U ] }; // uU + key { [ apostrophe, quotedbl ] }; // '" + key { [ semicolon, colon ] }; // ;: + key { [ l, L ] }; // lL + key { [ d, D ] }; // dD + key { [ w, W ] }; // wW + key { [ v, V ] }; // vV + key { [ z, Z ] }; // zZ + key { [ equal, plus ] }; // =+ + key { [ backslash, bar ] }; // \| + + key { [ c, C ] }; // cC + key { [ i, I ] }; // iI + key { [ e, E ] }; // eE + key { [ a, A ] }; // aA + key { [ comma, less ] }; // ,< + key { [ period, greater ] }; // .> + key { [ h, H ] }; // hH + key { [ t, T ] }; // tT + key { [ s, S ] }; // sS + key { [ n, N ] }; // nN + key { [ q, Q ] }; // qQ + + key { [ g, G ] }; // gG + key { [ x, X ] }; // xX + key { [ j, J ] }; // jJ + key { [ k, K ] }; // kK + key { [ minus, underscore ] }; // -_ + key { [ slash, question ] }; // /? + key { [ r, R ] }; // rR + key { [ m, M ] }; // mM + key { [ f, F ] }; // fF + key { [ p, P ] }; // pP + + + + // Boilerplate + key { [ Escape ] }; + key { [ BackSpace, BackSpace ] }; + key { [ Tab, ISO_Left_Tab ] }; + key { [ Return ] }; + key { [ Control_L ] }; + key { [ Shift_L ] }; + key { [ Shift_R ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ KP_Multiply, KP_Multiply, KP_Multiply, KP_Multiply, XF86ClearGrab ] + }; + + + key { [ Alt_L ] }; + key { [ space ] }; + key { [ Caps_Lock ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F1, F1, F1, F1, XF86Switch_VT_1 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F2, F2, F2, F2, XF86Switch_VT_2 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F3, F3, F3, F3, XF86Switch_VT_3 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F4, F4, F4, F4, XF86Switch_VT_4 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F5, F5, F5, F5, XF86Switch_VT_5 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F6, F6, F6, F6, XF86Switch_VT_6 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F7, F7, F7, F7, XF86Switch_VT_7 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F8, F8, F8, F8, XF86Switch_VT_8 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F9, F9, F9, F9, XF86Switch_VT_9 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F10, F10, F10, F10, XF86Switch_VT_10 ] + }; + key { [ Num_Lock ] }; + key { [ Scroll_Lock ] }; + key { [ KP_Home, KP_7 ] }; + key { [ KP_Up, KP_8 ] }; + key { [ KP_Prior, KP_9 ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ KP_Subtract, KP_Subtract, KP_Subtract, KP_Subtract, XF86Prev_VMode ] + }; + key { [ KP_Left, KP_4 ] }; + key { [ KP_Begin, KP_5 ] }; + key { [ KP_Right, KP_6 ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ KP_Add, KP_Add, KP_Add, KP_Add, XF86Next_VMode ] + }; + key { [ KP_End, KP_1 ] }; + key { [ KP_Down, KP_2 ] }; + key { [ KP_Next, KP_3 ] }; + key { [ KP_Insert, KP_0 ] }; + key { [ KP_Delete, KP_Decimal ] }; + key { [ ISO_Level3_Shift ] }; + key { [ XF86TouchpadToggle ] }; + key { + type= "FOUR_LEVEL", + symbols[Group1]= [ backslash, bar, bar, brokenbar ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F11, F11, F11, F11, XF86Switch_VT_11 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F12, F12, F12, F12, XF86Switch_VT_12 ] + }; + key { [ Katakana ] }; + key { [ Hiragana ] }; + key { [ Henkan_Mode ] }; + key { [ Hiragana_Katakana ] }; + key { [ Muhenkan ] }; + key { [ KP_Enter ] }; + key { [ Control_R ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ KP_Divide, KP_Divide, KP_Divide, KP_Divide, XF86Ungrab ] + }; + key { + type= "PC_ALT_LEVEL2", + symbols[Group1]= [ Print, Sys_Req ] + }; + key { + type= "ONE_LEVEL", + symbols[Group1]= [ ISO_Level3_Shift ] + }; + key { [ Linefeed ] }; + key { [ Home ] }; + key { [ Up ] }; + key { [ Prior ] }; + key { [ Left ] }; + key { [ Right ] }; + key { [ End ] }; + key { [ Down ] }; + key { [ Next ] }; + key { [ Insert ] }; + key { [ Delete ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86PowerOff ] }; + key { [ KP_Equal ] }; + key { [ plusminus ] }; + key { + type= "PC_CONTROL_LEVEL2", + symbols[Group1]= [ Pause, Break ] + }; + key { [ XF86LaunchA ] }; + key { [ KP_Decimal, KP_Decimal ] }; + key { [ Hangul ] }; + key { [ Hangul_Hanja ] }; + key { [ Super_L ] }; + key { [ Super_R ] }; + key { [ Menu ] }; + key { [ Cancel ] }; + key { [ Redo ] }; + key { [ SunProps ] }; + key { [ Undo ] }; + key { [ SunFront ] }; + key { [ XF86Copy ] }; + key { [ XF86Open ] }; + key { [ XF86Paste ] }; + key { [ Find ] }; + key { [ XF86Cut ] }; + key { [ Help ] }; + key { [ XF86MenuKB ] }; + key { [ XF86Calculator ] }; + key { [ XF86Sleep ] }; + key { [ XF86WakeUp ] }; + key { [ XF86Explorer ] }; + key { [ XF86Send ] }; + key { [ XF86Xfer ] }; + key { [ XF86Launch1 ] }; + key { [ XF86Launch2 ] }; + key { [ XF86WWW ] }; + key { [ XF86DOS ] }; + key { [ XF86ScreenSaver ] }; + key { [ XF86RotateWindows ] }; + key { [ XF86TaskPane ] }; + key { [ XF86Mail ] }; + key { [ XF86Favorites ] }; + key { [ XF86MyComputer ] }; + key { [ XF86Back ] }; + key { [ XF86Forward ] }; + key { [ XF86Eject ] }; + key { [ XF86Eject ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioStop, XF86Eject ] }; + key { [ XF86AudioRecord ] }; + key { [ XF86AudioRewind ] }; + key { [ XF86Phone ] }; + key { [ XF86Tools ] }; + key { [ XF86HomePage ] }; + key { [ XF86Reload ] }; + key { [ XF86Close ] }; + key { [ XF86ScrollUp ] }; + key { [ XF86ScrollDown ] }; + key { [ parenleft ] }; + key { [ parenright ] }; + key { [ XF86New ] }; + key { [ Redo ] }; + key { [ XF86Tools ] }; + key { [ XF86Launch5 ] }; + key { [ XF86Launch6 ] }; + key { [ XF86Launch7 ] }; + key { [ XF86Launch8 ] }; + key { [ XF86Launch9 ] }; + key { [ XF86AudioMicMute ] }; + key { [ XF86TouchpadToggle ] }; + key { [ XF86TouchpadOn ] }; + key { + type= "PC_SHIFT_SUPER_LEVEL2", + symbols[Group1]= [ XF86TouchpadOff, XF86Assistant ] + }; + key { [ ISO_Level5_Shift ] }; + key { [ NoSymbol, Alt_L ] }; + key { [ NoSymbol, Meta_L ] }; + key { [ NoSymbol, Super_L ] }; + key { [ NoSymbol, Hyper_L ] }; + key { [ XF86AudioPlay ] }; + key { [ XF86AudioPause ] }; + key { [ XF86Launch3 ] }; + key { [ XF86Launch4 ] }; + key { [ XF86LaunchB ] }; + key { [ XF86Suspend ] }; + key { [ XF86Close ] }; + key { [ XF86AudioPlay ] }; + key { [ XF86AudioForward ] }; + key { [ Print ] }; + key { [ XF86WebCam ] }; + key { [ XF86AudioPreset ] }; + key { [ XF86Mail ] }; + key { [ XF86Messenger ] }; + key { [ XF86Search ] }; + key { [ XF86Go ] }; + key { [ XF86Finance ] }; + key { [ XF86Game ] }; + key { [ XF86Shop ] }; + key { [ Cancel ] }; + key { [ XF86MonBrightnessDown ] }; + key { [ XF86MonBrightnessUp ] }; + key { [ XF86AudioMedia ] }; + key { [ XF86Display ] }; + key { [ XF86KbdLightOnOff ] }; + key { [ XF86KbdBrightnessDown ] }; + key { [ XF86KbdBrightnessUp ] }; + key { [ XF86Send ] }; + key { [ XF86Reply ] }; + key { [ XF86MailForward ] }; + key { [ XF86Save ] }; + key { [ XF86Documents ] }; + key { [ XF86Battery ] }; + key { [ XF86Bluetooth ] }; + key { [ XF86WLAN ] }; + key { [ XF86UWB ] }; + key { [ XF86Next_VMode ] }; + key { [ XF86Prev_VMode ] }; + key { [ XF86MonBrightnessCycle ] }; + key { [ XF86BrightnessAuto ] }; + key { [ XF86DisplayOff ] }; + key { [ XF86WWAN ] }; + key { [ XF86RFKill ] }; + modifier_map Control { }; + modifier_map Shift { }; + modifier_map Shift { }; + modifier_map Mod1 { }; + modifier_map Lock { }; + modifier_map Mod2 { }; + modifier_map Mod5 { }; + modifier_map Control { }; + modifier_map Mod4 { }; + modifier_map Mod4 { }; + modifier_map Mod3 { }; + modifier_map Mod1 { }; + modifier_map Mod1 { }; + modifier_map Mod4 { }; + }; +}; +// ENGRAMMER END ////////////////////////////////////////// diff --git a/global-resources/home-manager/.config/xkb/symbols/canary b/global-resources/home-manager/.config/xkb/symbols/canary new file mode 100644 index 00000000..b8ae4bec --- /dev/null +++ b/global-resources/home-manager/.config/xkb/symbols/canary @@ -0,0 +1,56 @@ +// CANARY BEGIN //////////////////////////////////////// +// +// Canary +// +// w l y p k z x o u ; [ ] \ +// c r s t b f n e i a ' +// j v d g q m h / , . + +default partial alphanumeric_keys +xkb_symbols "basic" +{ + include "gb(basic)" + + name[group1]="Canary (Staggered)"; + + key { [ Control_L ] }; + modifier_map Control { }; + + key { [ w, W ] }; // wW + key { [ l, L ] }; // lL + key { [ y, Y ] }; // yY + key { [ p, P ] }; // pP + key { [ k, K ] }; // kK + key { [ z, Z ] }; // zZ + key { [ x, X ] }; // xX + key { [ o, O ] }; // oO + key { [ u, U ] }; // uU + key { [ semicolon, colon ] }; // ;: + key { [ bracketleft, braceright ] }; // [{ + key { [ bracketright, braceleft ] }; // ]} + key { [ backslash, bar ] }; // \| + + key { [ c, C ] }; // cC + key { [ r, R ] }; // rR + key { [ s, S ] }; // sS + key { [ t, T ] }; // tT + key { [ b, B ] }; // bB + key { [ f, F ] }; // fF + key { [ n, N ] }; // nN + key { [ e, E ] }; // eE + key { [ i, I ] }; // iI + key { [ a, A ] }; // aA + key { [ apostrophe, quotedbl ] }; // '" + + key { [ j, J ] }; // jJ + key { [ v, V ] }; // vV + key { [ d, D ] }; // dD + key { [ g, G ] }; // gG + key { [ q, Q ] }; // qQ + key { [ m, M ] }; // mM + key { [ h, H ] }; // hH + key { [ slash, question ] }; // /? + key { [ comma, less ] }; // ,< + key { [ period, greater ] }; // .> +}; +// CANARY END ////////////////////////////////////////// diff --git a/global-resources/home-manager/.config/xkb/symbols/engrammer b/global-resources/home-manager/.config/xkb/symbols/engrammer new file mode 100644 index 00000000..cb21da9a --- /dev/null +++ b/global-resources/home-manager/.config/xkb/symbols/engrammer @@ -0,0 +1,70 @@ +// ENGRAMMER BEGIN //////////////////////////////////////// +// +// Engrammer - Arno's Engram 2.0 https://engram.dev variant +// with standard shifted pairs, for programmers +// +// `~ 1! 2@ 3# 4$ 5% 6^ 7& 8* 9( 0) [{ ]} +// bB yY oO uU '" ;: lL dD wW vV zZ =+ \| +// cC iI eE aA ,< .> hH tT sS nN qQ +// gG xX jJ kK -_ /? rR mM fF pP +// +default partial alphanumeric_keys +xkb_symbols "basic" +{ + include "gb(basic)" + + name[group1]="Arnos Engram (Engrammer)"; + + key { [ grave, asciitilde ] }; // `~ + key { [ 1, exclam ] }; // 1! + key { [ 2, at ] }; // 2@ + key { [ 3, numbersign ] }; // 3# + key { [ 4, dollar ] }; // 4$ + key { [ 5, percent ] }; // 5% + key { [ 6, asciicircum] }; // 6^ + key { [ 7, ampersand ] }; // 7& + key { [ 8, asterisk ] }; // 8* + key { [ 9, parenleft ] }; // 9( + key { [ 0, parenright ] }; // 0) + key { [ bracketleft, braceleft ] }; // [{ + key { [ bracketright, braceright ] }; // ]} + + key { [ b, B ] }; // bB + key { [ y, Y ] }; // yY + key { [ o, O ] }; // oO + key { [ u, U ] }; // uU + key { [ apostrophe, quotedbl ] }; // '" + key { [ semicolon, colon ] }; // ;: + key { [ l, L ] }; // lL + key { [ d, D ] }; // dD + key { [ w, W ] }; // wW + key { [ v, V ] }; // vV + key { [ z, Z ] }; // zZ + key { [ equal, plus ] }; // =+ + key { [ backslash, bar ] }; // \| + + key { [ c, C ] }; // cC + key { [ i, I ] }; // iI + key { [ e, E ] }; // eE + key { [ a, A ] }; // aA + key { [ comma, less ] }; // ,< + key { [ period, greater ] }; // .> + key { [ h, H ] }; // hH + key { [ t, T ] }; // tT + key { [ s, S ] }; // sS + key { [ n, N ] }; // nN + key { [ q, Q ] }; // qQ + + key { [ g, G ] }; // gG + key { [ x, X ] }; // xX + key { [ j, J ] }; // jJ + key { [ k, K ] }; // kK + key { [ minus, underscore ] }; // -_ + key { [ slash, question ] }; // /? + key { [ r, R ] }; // rR + key { [ m, M ] }; // mM + key { [ f, F ] }; // fF + key { [ p, P ] }; // pP +}; +// ENGRAMMER END ////////////////////////////////////////// + diff --git a/global.nix b/global.nix index dc3ed012..7d4dd91b 100644 --- a/global.nix +++ b/global.nix @@ -155,6 +155,7 @@ # buildInputs = oldAttrs.buildInputs ++ [ pkgs.xorg.libX11 ]; #})) # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. neovim + neovide xorg.libX11 zoxide # A fast cd command that learns your habits tealdeer # A very fast implementation of tldr in Rust @@ -213,7 +214,7 @@ wineasio firefox - librewolf + librewolf-bin ungoogled-chromium # nyxt # qutebrowser @@ -465,6 +466,7 @@ fonts.packages = with pkgs; [ #nerdfonts #inputs.apple-fonts.packages.${pkgs.system}.sf-pro-nerd + inputs.apple-fonts.packages.${pkgs.system}.sf-compact-nerd inputs.apple-fonts.packages.${pkgs.system}.sf-mono-nerd inputs.apple-fonts.packages.${pkgs.system}.sf-arabic-nerd diff --git a/modules/nixos/cspark-desktop-niri/resources/home-manager/.config/niri/config.kdl b/modules/nixos/cspark-desktop-niri/resources/home-manager/.config/niri/config.kdl index f3578d7d..2218be4c 100644 --- a/modules/nixos/cspark-desktop-niri/resources/home-manager/.config/niri/config.kdl +++ b/modules/nixos/cspark-desktop-niri/resources/home-manager/.config/niri/config.kdl @@ -14,8 +14,16 @@ input { // For example: layout "gb" + + // We can switch keyboard layouts between engrammer and default with Super + Space + options "grp:win_space_toggle" // options "grp:win_space_toggle,compose:ralt,ctrl:nocaps" } + + // Engrammer Keyboard Layout + //xkb { + // file "~/.config/xkb/engrammer.xkb" + //} } // Next sections include libinput settings.