diff --git a/dot_config/flake/flake.nix b/dot_config/flake/flake.nix index d16a456..afcfdb4 100644 --- a/dot_config/flake/flake.nix +++ b/dot_config/flake/flake.nix @@ -95,13 +95,13 @@ }; }; - darwinConfigurations."MAC-C57KK2TC69" = darwin.lib.darwinSystem { + darwinConfigurations."MacBook-Pro" = darwin.lib.darwinSystem { specialArgs = {inherit inputs outputs;}; modules = [ ./machines/hinge/darwin.nix - determinate.darwinModules.default + # determinate.darwinModules.default home-manager.darwinModules.home-manager { diff --git a/dot_config/flake/machines/hinge/darwin.nix b/dot_config/flake/machines/hinge/darwin.nix index e55e1a0..7b5d0db 100644 --- a/dot_config/flake/machines/hinge/darwin.nix +++ b/dot_config/flake/machines/hinge/darwin.nix @@ -102,7 +102,9 @@ in { "notunes" "ghostty" - + + "hammerspoon" + "firefox" "gpg-suite" "libreoffice" @@ -116,7 +118,7 @@ in { }; services.aerospace = { - enable = true; + enable = false; settings = { # You can use it to add commands that run after login to macOS user session. diff --git a/dot_config/flake/machines/hinge/home.nix b/dot_config/flake/machines/hinge/home.nix index e4c253a..7241487 100644 --- a/dot_config/flake/machines/hinge/home.nix +++ b/dot_config/flake/machines/hinge/home.nix @@ -19,7 +19,7 @@ conan pre-commit - + black ruff @@ -35,14 +35,13 @@ jdt-language-server unstable.biome uv - + ffmpeg sccache just nodejs_24 yarn cocoapods - ]; sessionVariables = { @@ -66,6 +65,127 @@ require("init") ''; }; + + file.".hammerspoon/Spoons/PaperWM.spoon" = { + source = pkgs.fetchFromGitHub { + owner = "mogenson"; + repo = "PaperWM.spoon"; + rev = "5bc47411eaf4dbbfb950d23d1ec7daf3a0427470"; + hash = "sha256-YBwa8tmo8hTpuZLFJ8JjAzkNF9+4xGSBuE3ziuHVg74="; + }; + }; + + file.".hammerspoon/Spoons/ActiveSpace.spoon" = { + source = pkgs.fetchFromGitHub { + owner = "mogenson"; + repo = "ActiveSpace.spoon"; + rev = "a246cb5a38d0e930a526b44fbd6b6c6d4a36a9d9"; + hash = "sha256-yFhWsb9J56qtcTx56WRhej5oY3zLUkUZjjTd8iMIhFg="; + }; + }; + + file.".hammerspoon/Spoons/WarpMouse.spoon" = { + source = pkgs.fetchFromGitHub { + owner = "mogenson"; + repo = "WarpMouse.spoon"; + rev = "c3b76e02704a15d22e7e6971fe76781db642d0bd"; + hash = "sha256-6hDU7lM59PoMo5ykeTdvomIqEkKkmh1Xam2GIBVgSVY="; + }; + }; + + file.".hammerspoon/init.lua" = { + text = '' + + ActiveSpace = hs.loadSpoon("ActiveSpace") + ActiveSpace.compact = true + ActiveSpace:start() + + WarpMouse = hs.loadSpoon("WarpMouse") + -- WarpMouse.margin = 8 -- optionally set how far past a screen edge the mouse should warp, default is 2 pixels + WarpMouse:start() + + PaperWM = hs.loadSpoon("PaperWM") + PaperWM:bindHotkeys({ + -- switch to a new focused window in tiled grid + focus_left = {{"alt", "cmd"}, "left"}, + focus_right = {{"alt", "cmd"}, "right"}, + focus_up = {{"alt", "cmd"}, "up"}, + focus_down = {{"alt", "cmd"}, "down"}, + + -- switch windows by cycling forward/backward + -- (forward = down or right, backward = up or left) + focus_prev = {{"alt", "cmd"}, "k"}, + focus_next = {{"alt", "cmd"}, "j"}, + + -- move windows around in tiled grid + swap_left = {{"alt", "cmd", "shift"}, "left"}, + swap_right = {{"alt", "cmd", "shift"}, "right"}, + swap_up = {{"alt", "cmd", "shift"}, "up"}, + swap_down = {{"alt", "cmd", "shift"}, "down"}, + + -- alternative: swap entire columns, rather than + -- individual windows (to be used instead of + -- swap_left / swap_right bindings) + -- swap_column_left = {{"alt", "cmd", "shift"}, "left"}, + -- swap_column_right = {{"alt", "cmd", "shift"}, "right"}, + + -- position and resize focused window + center_window = {{"alt", "cmd"}, "c"}, + full_width = {{"alt", "cmd"}, "f"}, + cycle_width = {{"alt", "cmd"}, "r"}, + reverse_cycle_width = {{"ctrl", "alt", "cmd"}, "r"}, + cycle_height = {{"alt", "cmd", "shift"}, "r"}, + reverse_cycle_height = {{"ctrl", "alt", "cmd", "shift"}, "r"}, + + -- increase/decrease width + increase_width = {{"alt", "cmd"}, "l"}, + decrease_width = {{"alt", "cmd"}, "h"}, + + -- move focused window into / out of a column + slurp_in = {{"alt", "cmd"}, "i"}, + barf_out = {{"alt", "cmd"}, "o"}, + + -- move the focused window into / out of the tiling layer + toggle_floating = {{"alt", "cmd", "shift"}, "escape"}, + + -- focus the first / second / etc window in the current space + focus_window_1 = {{"cmd", "shift"}, "1"}, + focus_window_2 = {{"cmd", "shift"}, "2"}, + focus_window_3 = {{"cmd", "shift"}, "3"}, + focus_window_4 = {{"cmd", "shift"}, "4"}, + focus_window_5 = {{"cmd", "shift"}, "5"}, + focus_window_6 = {{"cmd", "shift"}, "6"}, + focus_window_7 = {{"cmd", "shift"}, "7"}, + focus_window_8 = {{"cmd", "shift"}, "8"}, + focus_window_9 = {{"cmd", "shift"}, "9"}, + + -- switch to a new Mission Control space + switch_space_l = {{"alt", "cmd"}, ","}, + switch_space_r = {{"alt", "cmd"}, "."}, + switch_space_1 = {{"alt", "cmd"}, "1"}, + switch_space_2 = {{"alt", "cmd"}, "2"}, + switch_space_3 = {{"alt", "cmd"}, "3"}, + switch_space_4 = {{"alt", "cmd"}, "4"}, + switch_space_5 = {{"alt", "cmd"}, "5"}, + switch_space_6 = {{"alt", "cmd"}, "6"}, + switch_space_7 = {{"alt", "cmd"}, "7"}, + switch_space_8 = {{"alt", "cmd"}, "8"}, + switch_space_9 = {{"alt", "cmd"}, "9"}, + + -- move focused window to a new space and tile + move_window_1 = {{"alt", "cmd", "shift"}, "1"}, + move_window_2 = {{"alt", "cmd", "shift"}, "2"}, + move_window_3 = {{"alt", "cmd", "shift"}, "3"}, + move_window_4 = {{"alt", "cmd", "shift"}, "4"}, + move_window_5 = {{"alt", "cmd", "shift"}, "5"}, + move_window_6 = {{"alt", "cmd", "shift"}, "6"}, + move_window_7 = {{"alt", "cmd", "shift"}, "7"}, + move_window_8 = {{"alt", "cmd", "shift"}, "8"}, + move_window_9 = {{"alt", "cmd", "shift"}, "9"} + }) + PaperWM:start() + ''; + }; }; programs.home-manager.enable = true; diff --git a/run_nix-rebuild.sh b/run_nix-rebuild.sh index bcc0d09..70410c6 100755 --- a/run_nix-rebuild.sh +++ b/run_nix-rebuild.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash [[ $(command -v nixos-rebuild) ]] && nh os switch ~/.config/flake -[[ $(command -v darwin-rebuild) ]] && nh darwin switch ~/.config/flake/ +[[ $(command -v darwin-rebuild) ]] && sudo darwin-rebuild switch --flake ~/.config/flake/ [[ $(command -v home-manager) ]] && nh home switch ~/.config/flake/ exit 0