diff --git a/hosts/darwin/home-default.nix b/hosts/darwin/home-default.nix index 64a2a5a..18234a4 100644 --- a/hosts/darwin/home-default.nix +++ b/hosts/darwin/home-default.nix @@ -20,6 +20,7 @@ ../../modules/media-process.nix ../../modules/fonts.nix ../../modules/aerospace.nix + ../../modules/peripheral/home.nix ../../modules/env.nix ]; @@ -229,6 +230,15 @@ }; }; + launchd.agents.linearmouse = { + enable = true; + config = { + ProgramArguments = [ "/Applications/LinearMouse.app/Contents/MacOS/LinearMouse" ]; + RunAtLoad = true; + KeepAlive = false; + }; + }; + # File associations configuration (macOS equivalent of xdg.mimeApps) # Uses duti to set default applications for file types via Launch Services home.activation.setFileAssociations = config.lib.dag.entryAfter ["writeBoundary"] '' diff --git a/hosts/darwin/system-default.nix b/hosts/darwin/system-default.nix index d358738..50bfb95 100644 --- a/hosts/darwin/system-default.nix +++ b/hosts/darwin/system-default.nix @@ -3,6 +3,7 @@ { imports = [ ../../modules/homebrew.nix + ../../modules/peripheral/system.nix nix-homebrew.darwinModules.nix-homebrew ]; @@ -131,22 +132,4 @@ /System/Library/PrivateFrameworks/SystemAdministration.framework/Resources/activateSettings -u ''; - - # Key remapping using hidutil via launchd agent - # This swaps Control and Caps Lock keys bidirectionally - launchd.user.agents.remap-keys = { - serviceConfig = { - ProgramArguments = [ - "/usr/bin/hidutil" - "property" - "--set" - ''{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000039,"HIDKeyboardModifierMappingDst":0x7000000E0},{"HIDKeyboardModifierMappingSrc":0x7000000E4,"HIDKeyboardModifierMappingDst":0x700000039}]}'' - ]; - RunAtLoad = true; - KeepAlive = false; - Label = "org.nixos.remap-keys"; - StandardErrorPath = "/tmp/remap-keys.err"; - StandardOutPath = "/tmp/remap-keys.out"; - }; - }; } diff --git a/modules/homebrew.nix b/modules/homebrew.nix index fccef3c..89f39d8 100644 --- a/modules/homebrew.nix +++ b/modules/homebrew.nix @@ -42,6 +42,7 @@ "aerospace" "hiddenbar" "keycastr" + "linearmouse" "localsend" "maccy" "snipaste" diff --git a/modules/peripheral/home.nix b/modules/peripheral/home.nix new file mode 100644 index 0000000..d904d09 --- /dev/null +++ b/modules/peripheral/home.nix @@ -0,0 +1,17 @@ +{ config, pkgs, ... }: + +{ + home.file.".config/linearmouse/linearmouse.json".text = builtins.toJSON { + "$schema" = "https://app.linearmouse.org/schema/0.10.0"; + schemes = [{ + "if" = { + device.category = "mouse"; + }; + scrolling.reverse.vertical = true; + pointer = { + acceleration = 0; + speed = 0.6; + }; + }]; + }; +} diff --git a/modules/peripheral/system.nix b/modules/peripheral/system.nix new file mode 100644 index 0000000..67b2e45 --- /dev/null +++ b/modules/peripheral/system.nix @@ -0,0 +1,21 @@ +{ config, pkgs, ... }: + +{ + # Key remapping using hidutil via launchd agent + # Swaps Caps Lock -> Left Control, Right Control -> Caps Lock + launchd.user.agents.remap-keys = { + serviceConfig = { + ProgramArguments = [ + "/usr/bin/hidutil" + "property" + "--set" + ''{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000039,"HIDKeyboardModifierMappingDst":0x7000000E0},{"HIDKeyboardModifierMappingSrc":0x7000000E4,"HIDKeyboardModifierMappingDst":0x700000039}]}'' + ]; + RunAtLoad = true; + KeepAlive = false; + Label = "org.nixos.remap-keys"; + StandardErrorPath = "/tmp/remap-keys.err"; + StandardOutPath = "/tmp/remap-keys.out"; + }; + }; +}