diff --git a/flake.lock b/flake.lock index e3d502a..35bde3e 100644 --- a/flake.lock +++ b/flake.lock @@ -64,15 +64,30 @@ ] }, "locked": { +<<<<<<< Updated upstream "lastModified": 1762501326, "narHash": "sha256-QbhsksHaIN6qU3oXhwUFbYycKX1GRxObpQSWAM5fhRY=", +||||||| Stash base + "lastModified": 1761339987, + "narHash": "sha256-IUaawVwItZKi64IA6kF6wQCLCzpXbk2R46dHn8sHkig=", +======= + "lastModified": 1759509947, + "narHash": "sha256-4XifSIHfpJKcCf5bZZRhj8C4aCpjNBaE3kXr02s4rHU=", +>>>>>>> Stashed changes "owner": "nix-darwin", "repo": "nix-darwin", +<<<<<<< Updated upstream "rev": "e2b82ebd0f990a5d1b68fcc761b3d6383c86ccfd", +||||||| Stash base + "rev": "7cd9aac79ee2924a85c211d21fafd394b06a38de", +======= + "rev": "000eadb231812ad6ea6aebd7526974aaf4e79355", +>>>>>>> Stashed changes "type": "github" }, "original": { "owner": "nix-darwin", + "ref": "nix-darwin-25.05", "repo": "nix-darwin", "type": "github" } diff --git a/flake.nix b/flake.nix index 807de35..c5d4ad3 100644 --- a/flake.nix +++ b/flake.nix @@ -7,7 +7,7 @@ nixos-wsl.url = "github:nix-community/NixOS-WSL/main"; nix-darwin = { - url = "github:nix-darwin/nix-darwin"; + url = "github:nix-darwin/nix-darwin/nix-darwin-25.05"; inputs.nixpkgs.follows = "nixpkgs"; }; diff --git a/home/home-darwin-work.nix b/home/home-darwin-work.nix index cf56712..3dea0bb 100644 --- a/home/home-darwin-work.nix +++ b/home/home-darwin-work.nix @@ -31,6 +31,19 @@ in }; }; + # Auto-start aerospace on login + # NOTE: In 25.11+, this can be simplified to `programs.aerospace.launchd.enable = true` + launchd.agents.aerospace = { + enable = true; + config = { + Program = "${pkgs.aerospace}/Applications/AeroSpace.app/Contents/MacOS/AeroSpace"; + RunAtLoad = true; + KeepAlive = true; + StandardOutPath = "/tmp/aerospace.log"; + StandardErrorPath = "/tmp/aerospace.err.log"; + }; + }; + # Override Darwin-incompatible settings from base role programs.rbw.settings.pinentry = lib.mkForce pkgs.pinentry_mac; @@ -64,7 +77,6 @@ in # TODO: Move this to its own role and/or module programs.aerospace = { enable = true; - launchd.enable = true; userSettings.mode.main.binding = { "${leader}-slash" = "layout tiles horizontal vertical"; "${leader}-comma" = "layout accordion horizontal vertical"; @@ -125,9 +137,15 @@ in "${leader}-shift-e" = "exec-and-forget zsh --login -c \"emacsclient -c -n\""; + # Service mode: Deliberate aerospace window management "${leader}-i" = "mode service"; + + # Passthrough mode: Temporarily disable aerospace to use macOS shortcuts + # Press Cmd-P, then use any macOS shortcut (like Cmd-K in Slack), then press Cmd-P again to exit + "${leader}-p" = "mode passthrough"; }; + # Service mode: For deliberate aerospace window management operations userSettings.mode.service.binding = { esc = ["reload-config" "mode main"]; r = ["flatten-workspace-tree" "mode main"]; # reset layout @@ -139,6 +157,13 @@ in "${leader}-shift-k" = ["join-with up" "mode main"]; "${leader}-shift-l" = ["join-with right" "mode main"]; }; + + # Passthrough mode: All shortcuts pass through to macOS + # This mode has minimal bindings - just ways to exit back to main mode + userSettings.mode.passthrough.binding = { + esc = "mode main"; + "${leader}-p" = "mode main"; # Toggle back with same key (Cmd-P) + }; }; home.roles = {