yep, more dotfiles
at main 2.4 kB view raw
1{ self 2, config 3, lib 4, ... 5}: 6 7let 8 inherit (self.outputs) nixosModules; 9 10 cfg = config.local.fragment.logiops; 11in 12{ 13 imports = [ nixosModules.logiops ]; 14 15 options.local.fragment.logiops.enable = lib.mkEnableOption '' 16 LogiOps related 17 ''; 18 19 config.services.logiops = lib.mkIf cfg.enable { 20 enable = true; 21 22 settings = 23 let 24 cid = { 25 # Control IDs │ reprog? │ fn key? │ mouse key? │ gesture support? 26 leftMouse = 80; # 0x50 │ │ │ YES │ 27 rightMouse = 81; # 0x51 │ │ │ YES │ 28 middleMouse = 81; # 0x52 │ YES │ │ YES │ YES 29 back = 83; # 0x53 │ YES │ │ YES │ YES 30 forward = 86; # 0x56 │ YES │ │ YES │ YES 31 switchReceivers = 215; # 0xD7 │ YES │ │ │ YES 32 mouseSensitivity = 253; # 0xFD │ YES │ │ YES │ YES 33 }; 34 in 35 { 36 devices = [{ 37 name = "MX Vertical Advanced Ergonomic Mouse"; 38 39 dpi = 1500; 40 41 hiresscroll = { 42 hires = true; 43 invert = false; 44 target = false; 45 }; 46 47 buttons = [ 48 { 49 cid = cid.forward; 50 action = { 51 type = "Keypress"; 52 keys = [ "KEY_FORWARD" ]; 53 # type = "Gestures"; 54 # gestures = [ 55 # { 56 # direction = "Left"; 57 # mode = "OnThreshold"; 58 # action = { 59 # type = "Keypress"; 60 # keys = ["KEY_LEFTMETA" "KEY_LEFTCTRL" "KEY_LEFTSHIFT" "KEY_TAB"]; 61 # }; 62 # } 63 # ]; 64 }; 65 } 66 { 67 cid = cid.back; 68 action = { 69 type = "Keypress"; 70 keys = [ "KEY_BACK" ]; 71 }; 72 } 73 { 74 cid = cid.mouseSensitivity; 75 action = { 76 type = "Keypress"; 77 keys = [ "KEY_LEFTMETA" ]; 78 }; 79 } 80 { 81 cid = cid.switchReceivers; 82 action.type = "None"; 83 } 84 ]; 85 }]; 86 }; 87 }; 88} 89