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