69 lines
2.5 KiB
Nix
69 lines
2.5 KiB
Nix
{ config, pkgs, lib, ... }:
|
|
{
|
|
|
|
options.components.gui.kmonad.enable = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = config.components.gui.enable;
|
|
};
|
|
|
|
config = lib.mkIf (config.components.gui.kmonad.enable) {
|
|
|
|
# only needed if you have an UHK
|
|
hardware.keyboard.uhk.enable = true;
|
|
environment.systemPackages = [ pkgs.unstable.uhk-agent ];
|
|
users.users.mainUser.extraGroups = [ "input" ];
|
|
|
|
services.xserver = {
|
|
layout = "us";
|
|
xkbOptions = "compose:ralt";
|
|
};
|
|
|
|
services.kmonad = {
|
|
enable = true;
|
|
keyboards =
|
|
let
|
|
keyboard = device: {
|
|
device = device;
|
|
extraGroups = [ "video" ];
|
|
defcfg = {
|
|
enable = true;
|
|
fallthrough = true;
|
|
allowCommands = true;
|
|
};
|
|
config = ''
|
|
(defsrc
|
|
grv 1 2 3 4 5 6 7 8 9 0 - = bspc
|
|
tab q w e r t y u i o p [ ] \
|
|
caps a s d f g h j k l ; ' ret
|
|
lsft z x c v b n m , . / rsft
|
|
lctl lmet lalt spc ralt rmet cmp rctl
|
|
)
|
|
|
|
(defalias sym (layer-toggle symbols))
|
|
|
|
(deflayer qwerty
|
|
grv 1 2 3 4 5 6 7 8 9 0 - = bspc
|
|
tab q w e r t y u i o p [ ] \
|
|
esc a s d f g h j k l ; ' ret
|
|
lsft z x c v b n m , . / rsft
|
|
lctl lalt lmet spc @sym rmet cmp rctrl
|
|
)
|
|
|
|
(deflayer symbols
|
|
_ ½ ² ³ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ ∞ _ _ _
|
|
_ _ _ € _ ™ _ ü _ ö _ _ _ _
|
|
caps ä ß _ _ _ _ _ _ _ _ _ _
|
|
_ _ _ ¢ _ _ _ _ _ _ _ _
|
|
_ _ _ _ _ _ _ _)
|
|
'';
|
|
};
|
|
|
|
in
|
|
{
|
|
nativ = keyboard "/dev/input/by-path/platform-i8042-serio-0-event-kbd";
|
|
dasKeyboard = keyboard "/dev/input/by-id/usb-Metadot_-_Das_Keyboard_Das_Keyboard-event-kbd";
|
|
uhk = keyboard "/dev/input/by-id/usb-Ultimate_Gadget_Laboratories_UHK_60_v2-if01-event-kbd";
|
|
};
|
|
};
|
|
};
|
|
}
|