-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat!: start moving darwin to snowfall
- Loading branch information
Showing
14 changed files
with
732 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
inputs @ { | ||
options, | ||
config, | ||
lib, | ||
pkgs, | ||
... | ||
}: | ||
with lib; | ||
with lib.custom; let | ||
cfg = config.custom.cli-apps.neovim; | ||
in { | ||
options.custom.cli-apps.neovim = with types; { | ||
enable = mkBoolOpt false "Whether or not to enable neovim."; | ||
}; | ||
|
||
config = mkIf cfg.enable { | ||
programs.neovim = { | ||
enable = true; | ||
defaultEditor = true; | ||
vimAlias = true; | ||
}; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,153 @@ | ||
{ | ||
lib, | ||
pkgs, | ||
config, | ||
... | ||
}: | ||
with lib; | ||
with lib.custom; let | ||
cfg = config.custom.desktop.addons.skhd; | ||
in { | ||
options.custom.desktop.addons.skhd = { | ||
enable = mkEnableOption "skhd"; | ||
}; | ||
|
||
config = mkIf cfg.enable { | ||
launchd.user.agents.skhd.serviceConfig = { | ||
StandardOutPath = "/tmp/skhd.log"; | ||
StandardErrorPath = "/tmp/skhd.log"; | ||
}; | ||
services.skhd = { | ||
enable = true; | ||
skhdConfig = '' | ||
# Default mode | ||
:: default | ||
# Workspace focus | ||
alt - 1 : yabai -m space --focus 1 | ||
alt - 2 : yabai -m space --focus 2 | ||
alt - 3 : yabai -m space --focus 3 | ||
alt - 4 : yabai -m space --focus 4 | ||
alt - 5 : yabai -m space --focus 5 | ||
alt - 6 : yabai -m space --focus 6 | ||
alt - 7 : yabai -m space --focus 7 | ||
alt - 8 : yabai -m space --focus 8 | ||
alt - 9 : yabai -m space --focus 9 | ||
alt - 0 : yabai -m space --focus 10 | ||
alt - up : yabai -m space --focus 2 | ||
alt - down : yabai -m space --focus (yabai -m query --spaces --display | jq 'map(select(."is-native-fullscreen" == true))[-1].index') | ||
# change focus between external displays (left and right) | ||
ctrl + alt - left : yabai -m display --focus west | ||
ctrl + alt - right : yabai -m display --focus east | ||
# Move windows to another workspace | ||
ctrl + shift - 1 : yabai -m window --space 1 | ||
ctrl + shift - 2 : yabai -m window --space 2 | ||
ctrl + shift - 3 : yabai -m window --space 3 | ||
ctrl + shift - 4 : yabai -m window --space 4 | ||
ctrl + shift - 5 : yabai -m window --space 5 | ||
ctrl + shift - 6 : yabai -m window --space 6 | ||
ctrl + shift - 7 : yabai -m window --space 7 | ||
ctrl + shift - 8 : yabai -m window --space 8 | ||
ctrl + shift - 9 : yabai -m window --space 9 | ||
ctrl + shift - 0 : yabai -m window --space 10 | ||
# Navigation | ||
alt - h : yabai -m window --focus west | ||
alt - j : yabai -m window --focus south | ||
alt - k : yabai -m window --focus north | ||
alt - l : yabai -m window --focus east | ||
alt - left : yabai -m window --focus west | ||
alt - down : yabai -m window --focus south | ||
alt - up : yabai -m window --focus north | ||
alt - right : yabai -m window --focus east | ||
# Close current window | ||
alt - q : yabai -m window --close | ||
# Moving windows | ||
shift + alt - h : yabai -m window --warp west | ||
shift + alt - j : yabai -m window --warp south | ||
shift + alt - k : yabai -m window --warp north | ||
shift + alt - l : yabai -m window --warp east | ||
# Move floating window | ||
shift + alt - h : yabai -m window --move rel:-20:0 | ||
shift + alt - j : yabai -m window --move rel:0:20 | ||
shift + alt - k : yabai -m window --move rel:0:-20 | ||
shift + alt - l : yabai -m window --move rel:20:0 | ||
# Float/unfloat windows | ||
shift + alt - space : yabai -m window --toggle float; \ | ||
yabai -m window --grid 4:4:1:1:2:2 | ||
# Fullscreen | ||
alt - f : yabai -m window --toggle zoom-fullscreen | ||
ctrl + shift - f : yabai -m window --toggle native-fullscreen | ||
# Resize mode | ||
:: resize @ | ||
## Enter resize mode | ||
alt - r ; resize | ||
## Leave resize mode | ||
resize < escape ; default | ||
## Resize mode key bindings | ||
resize < h : \ | ||
yabai -m window --resize left:-20:0 ; \ | ||
yabai -m window --resize right:-20:0 | ||
resize < j : \ | ||
yabai -m window --resize bottom:0:20 ; \ | ||
yabai -m window --resize top:0:20 | ||
resize < k : \ | ||
yabai -m window --resize top:0:-20 ; \ | ||
yabai -m window --resize bottom:0:-20 | ||
resize < l : \ | ||
yabai -m window --resize right:20:0 ; \ | ||
yabai -m window --resize left:20:0 | ||
# Resize windows | ||
ctrl + alt - h : \ | ||
yabai -m window --resize left:-20:0 ; \ | ||
yabai -m window --resize right:-20:0 | ||
ctrl + alt - j : \ | ||
yabai -m window --resize bottom:0:20 ; \ | ||
yabai -m window --resize top:0:20 | ||
ctrl + alt - k : \ | ||
yabai -m window --resize top:0:-20 ; \ | ||
yabai -m window --resize bottom:0:-20 | ||
ctrl + alt - l : \ | ||
yabai -m window --resize right:20:0 ; \ | ||
yabai -m window --resize left:20:0 | ||
# Toggle window split type with semicolon | ||
ctrl + alt - e : yabai -m window --toggle split | ||
# Balance size of windows | ||
ctrl + alt - 0 : yabai -m space --balance | ||
# Workspace init | ||
ctrl + shift - n : yabai -m space --create | ||
ctrl + shift - d : yabai -m space --destroy | ||
# Applications | ||
alt - x : /Users/sab/.nix-profile/bin/kitty | ||
ctrl + alt - b: /Applications/Firefox.App/Contents/MacOS/firefox | ||
# -- Starting/Stopping/Restarting Yabai -- | ||
# stop/start/restart yabai + skhd | ||
ctrl + alt - q : launchctl stop org.nixos.yabai; launchctl stop org.nixos.skhd | ||
ctrl + alt - s : launchctl start org.nixos.yabai; launchctl start org.nixos.skhd | ||
ctrl + alt - r : launchctl stop org.nixos.yabai; launchctl stop org.nixos.skhd; launchctl start org.nixos.yabai; launchctl start org.nixos.skhd | ||
''; | ||
}; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
{ | ||
lib, | ||
pkgs, | ||
config, | ||
... | ||
}: | ||
with lib; | ||
with lib.custom; let | ||
cfg = config.custom.desktop.addons.spacebar; | ||
in { | ||
options.custom.desktop.addons.spacebar = { | ||
enable = mkEnableOption "Spacebar"; | ||
}; | ||
|
||
config = mkIf cfg.enable { | ||
services.spacebar = { | ||
enable = true; | ||
package = pkgs.spacebar; | ||
|
||
config = { | ||
position = "top"; | ||
display = "all"; | ||
height = 32; | ||
title = "on"; | ||
spaces = "on"; | ||
clock = "on"; | ||
power = "off"; | ||
|
||
padding_left = 10; | ||
padding_right = 10; | ||
|
||
spacing_left = 10; | ||
spacing_right = 10; | ||
|
||
foreground_color = "0xffeceff4"; | ||
background_color = "0xff1d2128"; | ||
|
||
text_font = ''"Hack Nerd Font Mono:Regular:14.0"''; | ||
icon_font = ''"Hack Nerd Font Mono:Regular:20.0"''; | ||
|
||
# Shell entries apparently break the whole bar... | ||
# https://github.com/cmacrae/spacebar/issues/104 | ||
# right_shell_icon = ""; | ||
# right_shell_command = ''"whoami"''; | ||
# right_shell = "on"; | ||
}; | ||
}; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
{ | ||
lib, | ||
pkgs, | ||
config, | ||
... | ||
}: let | ||
cfg = config.custom.desktop.yabai; | ||
|
||
inherit (lib) types mkEnableOption mkIf; | ||
inherit (lib.custom) mkOpt enabled; | ||
in { | ||
options.custom.desktop.yabai = { | ||
enable = mkEnableOption "Yabai"; | ||
enable-scripting-addition = mkOpt types.bool true "Whether to enable the scripting addition for Yabai. (Requires SIP to be disabled)"; | ||
}; | ||
|
||
config = mkIf cfg.enable { | ||
custom.desktop.addons = { | ||
skhd = enabled; | ||
spacebar = disabled; | ||
}; | ||
launchd.user.agents.yabai.serviceConfig = { | ||
StandardOutPath = "/tmp/yabai.log"; | ||
StandardErrorPath = "/tmp/yabai.log"; | ||
}; | ||
|
||
services.yabai = { | ||
enable = true; | ||
enableScriptingAddition = true; | ||
config = { | ||
# Binary space partitioning layout | ||
layout = "bsp"; | ||
# When focusing a window, put the mouse at its center | ||
mouse_follows_focus = "on"; | ||
# Automatically focus the window under the mouse | ||
focus_follows_mouse = "autoraise"; | ||
# New window spawns to the right if vertical split, or bottom if | ||
# horizontal split | ||
window_placement = "second_child"; | ||
# Disable opacity for windows | ||
window_opacity = "off"; | ||
# Padding added around the sides of a space | ||
top_padding = 6; | ||
bottom_padding = 6; | ||
left_padding = 6; | ||
right_padding = 6; | ||
# Size of the gap that separates windows | ||
window_gap = 6; | ||
# Draw shadow for windows, window_border has been removed | ||
window_shadow = "on"; | ||
# Add padding for external status bar | ||
external_bar = "all:0:26"; | ||
}; | ||
|
||
extraConfig = '' | ||
for _ in $(yabai -m query --spaces | jq '.[].index | select(. > 6)'); do | ||
yabai -m space --destroy 7 | ||
done | ||
function setup_space { | ||
local idx="$1" | ||
local name="$2" | ||
local space= | ||
echo "setup space $idx : $name" | ||
space=$(yabai -m query --spaces --space "$idx") | ||
if [ -z "$space" ]; then | ||
yabai -m space --create | ||
fi | ||
yabai -m space "$idx" --label "$name" | ||
} | ||
setup_space 1 main | ||
setup_space 2 web | ||
setup_space 3 code | ||
setup_space 4 social | ||
setup_space 5 media | ||
setup_space 6 other | ||
yabai -m rule --add app="^Safari$" space=2 | ||
yabai -m rule --add app="^Firefox$" space=2 | ||
yabai -m rule --add app="^Kitty$" space=3 | ||
yabai -m rule --add app="^kitty$" space=3 | ||
yabai -m rule --add app="^Telegram$" space=1 | ||
yabai -m rule --add app="^Slack$" space=1 | ||
yabai -m rule --add app="^Teams$" space=1 | ||
yabai -m rule --add app="^Mail$" space=4 | ||
yabai -m rule --add app="^Calendar$" space=4 | ||
yabai -m rule --add app="^Music$" space=5 | ||
# Float system settings | ||
yabai -m rule --add app="^(Terminal|Calculator|Software Update|Dictionary|VLC|System Preferences|System Settings|zoom.us|Photo Booth|Archive Utility)$" manage=off | ||
yabai -m rule --add label="Finder" app="^Finder$" title="(Co(py|nnect)|Move|Info|Pref)" manage=off | ||
yabai -m rule --add app="^System Information$" label="^About This Mac$" manage=off | ||
yabai -m rule --add app="^Cisco AnyConnect Secure Mobility Client$" manage=off | ||
yabai -m rule --add app="^Cisco$" manage=off | ||
# Load scripting addition | ||
yabai -m signal --add event=dock_did_restart action="sudo yabai --load-sa" | ||
sudo yabai --load-sa | ||
''; | ||
}; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
{ | ||
options, | ||
config, | ||
pkgs, | ||
lib, | ||
inputs, | ||
... | ||
}: | ||
with lib; | ||
with lib.custom; let | ||
cfg = config.custom.home; | ||
in { | ||
# imports = with inputs; [ | ||
# home-manager.darwinModules.home-manager | ||
# ]; | ||
|
||
options.custom.home = with types; { | ||
file = | ||
mkOpt attrs {} | ||
"A set of files to be managed by home-manager's <option>home.file</option>."; | ||
configFile = | ||
mkOpt attrs {} | ||
"A set of files to be managed by home-manager's <option>xdg.configFile</option>."; | ||
extraOptions = mkOpt attrs {} "Options to pass directly to home-manager."; | ||
homeConfig = mkOpt attrs {} "Final config for home-manager."; | ||
}; | ||
|
||
config = { | ||
custom.home.extraOptions = { | ||
home.stateVersion = mkDefault "22.11"; | ||
home.file = mkAliasDefinitions options.custom.home.file; | ||
xdg.enable = true; | ||
xdg.configFile = mkAliasDefinitions options.custom.home.configFile; | ||
}; | ||
|
||
snowfallorg.user.${config.custom.user.name}.home.config = mkAliasDefinitions options.custom.home.extraOptions; | ||
|
||
home-manager = { | ||
useUserPackages = true; | ||
useGlobalPkgs = true; | ||
|
||
# users.${config.custom.user.name} = args: | ||
# mkAliasDefinitions options.custom.home.extraOptions; | ||
}; | ||
}; | ||
} |
Oops, something went wrong.