Nix configurations for my personal machines (Linux & macOS)
at main 3.5 kB view raw
1{ 2 delib, 3 lib, 4 ... 5}: 6delib.module { 7 name = "darwin.wm"; 8 9 options = delib.singleEnableOption true; 10 11 darwin.ifEnabled = { 12 services.yabai = { 13 enable = true; 14 config = let 15 gap = 10; 16 gapKeys = [ 17 "window_gap" 18 "top_padding" 19 "bottom_padding" 20 "left_padding" 21 "right_padding" 22 ]; 23 24 gaps = builtins.listToAttrs ( 25 builtins.map (k: lib.attrsets.nameValuePair k gap) gapKeys 26 ); 27 in 28 { 29 layout = "bsp"; 30 window_placement = "second_child"; 31 } 32 // gaps; 33 extraConfig = '' 34 yabai -m rule --add app="Bitwarden" manage=off 35 yabai -m rule --add app="Discord" manage=off 36 yabai -m rule --add app="^Finder$" manage=off 37 yabai -m rule --add app="Keka" manage=off 38 yabai -m rule --add app="^System Information$" manage=off 39 yabai -m rule --add app="^System Preferences$" manage=off 40 yabai -m rule --add app="^System Settings$" manage=off 41 yabai -m rule --add title="Preferences$" manage=off 42 yabai -m rule --add title="^Archive Utility$" manage=off 43 yabai -m rule --add title="Settings$" manage=off 44 yabai -m rule --add title="Karabiner" manage=off 45 yabai -m rule --add title="^Weather$" manage=off 46 yabai -m rule --add title="Yubico Authenticator" manage=off 47 yabai -m rule --add app="Rewind" manage=off 48 yabai -m rule --add app="eqMac" manage=off 49 yabai -m rule --add app="^Arc$" manage=off 50 yabai -m rule --add app="OBS" manage=off 51 yabai -m rule --add app="Raycast" manage=off 52 ''; 53 }; 54 55 services.skhd = { 56 enable = true; 57 skhdConfig = '' 58 # Move/swap windows 59 meh - w : yabai -m window --swap north 60 meh - a : yabai -m window --swap west 61 meh - r : yabai -m window --swap south 62 meh - s : yabai -m window --swap east 63 64 hyper - w : yabai -m window --warp north 65 hyper - a : yabai -m window --warp west 66 hyper - r : yabai -m window --warp south 67 hyper - s : yabai -m window --warp east 68 69 # Focus windows 70 ralt + rcmd - w : yabai -m window --focus north 71 ralt + rcmd - a : yabai -m window --focus west 72 ralt + rcmd - r : yabai -m window --focus south 73 ralt + rcmd - s : yabai -m window --focus east 74 75 # Increase window size 76 meh - n : yabai -m window --resize left:-100:0 77 meh - e : yabai -m window --resize bottom:0:100 78 meh - i : yabai -m window --resize top:0:-100 79 meh - o : yabai -m window --resize right:100:0 80 81 # Decrease window size 82 hyper - n : yabai -m window --resize right:-100:0 83 hyper - e : yabai -m window --resize top:0:100 84 hyper - i : yabai -m window --resize bottom:0:-100 85 hyper - o : yabai -m window --resize left:100:0 86 87 # Expand floating window to fill screen 88 # (full stop) 89 meh - 0x2F : yabai -m window --grid 1:1:0:0:1:1 90 91 meh - p : yabai -m window --toggle float; \ 92 yabai -m window --grid 4:4:1:1:2:2 93 94 # Rebalance grid 95 # (backtick) 96 hyper - 0x32 : yabai -m space --balance 97 ''; 98 }; 99 }; 100}