settei/hosts/hijiri/yabai.nix

39 lines
1.1 KiB
Nix

{
config,
lib,
pkgs,
...
}: {
services.yabai = {
enable = true;
enableScriptingAddition = true;
config = {
layout = "bsp";
top_padding = 10;
bottom_padding = 10;
left_padding = 10;
right_padding = 10;
window_gap = 10;
mouse_modifier = "cmd";
window_topmost = "off";
window_shadow = "float";
mouse_follows_focus = "on";
};
extraConfig = ''
yabai -m rule --add app="^Alacritty$" border=on
yabai -m rule --add app="^System Settings$" manage=off
yabai -m signal --add event=window_created action='yabai -m query --windows --window $YABAI_WINDOW_ID \
| ${lib.getExe pkgs.jq} -er ".\"can-resize\" or .\"is-floating\"" \
|| yabai -m window $YABAI_WINDOW_ID --toggle float'
'';
};
environment.etc."sudoers.d/yabai".source = pkgs.runCommand "sudoers-yabai" {} ''
YABAI_BIN="${config.services.yabai.package}/bin/yabai"
SHASUM=$(sha256sum "$YABAI_BIN" | cut -d' ' -f1)
cat <<EOF >"$out"
%admin ALL=(root) NOPASSWD: sha256:$SHASUM $YABAI_BIN --load-sa
EOF
'';
}