{ config, lib, pkgs, globalInputs, system, ... }: let customPkgs = pkgs.callPackage ../packages {}; leader = "cmd"; # Change this to experiment with different leader keys (e.g., "cmd", "ctrl") in { # Provide arguments to role modules _module.args = { inherit customPkgs; }; # Home Manager configuration for Darwin work laptop # Corporate-friendly setup with essential development tools home.username = lib.mkForce "johno"; home.homeDirectory = lib.mkForce "/Users/johno"; home.stateVersion = "24.05"; # Override Darwin-incompatible settings from base role programs.rbw.settings.pinentry = lib.mkForce pkgs.pinentry_mac; programs.bash.initExtra = '' export NODE_EXTRA_CA_CERTS=/opt/homebrew/etc/ca-certificates/cert.pem export COREPACK_NPM_REGISTRY=https://global.block-artifacts.com/artifactory/api/npm/square-npm/ export COREPACK_INTEGRITY_KEYS=0 export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion ''; programs.zsh.enable = true; programs.zsh.initContent = '' export NODE_EXTRA_CA_CERTS=/opt/homebrew/etc/ca-certificates/cert.pem export COREPACK_NPM_REGISTRY=https://global.block-artifacts.com/artifactory/api/npm/square-npm/ export COREPACK_INTEGRITY_KEYS=0 export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion" # This loads nvm bash_completion ''; # Keep SSH and Git disabled to avoid conflicts with work environment programs.ssh.enable = lib.mkForce false; programs.git.enable = lib.mkForce false; programs.rbw.enable = lib.mkForce false; home.shell.enableShellIntegration = true; # 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"; "${leader}-shift-q" = "close"; "${leader}-f" = "fullscreen"; "${leader}-h" = "focus left"; "${leader}-j" = "focus down"; "${leader}-k" = "focus up"; "${leader}-l" = "focus right"; "${leader}-shift-h" = "move left"; "${leader}-shift-j" = "move down"; "${leader}-shift-k" = "move up"; "${leader}-shift-l" = "move right"; "${leader}-minus" = "resize smart -50"; "${leader}-equal" = "resize smart +50"; "${leader}-1" = "workspace 1"; "${leader}-2" = "workspace 2"; "${leader}-3" = "workspace 3"; "${leader}-4" = "workspace 4"; "${leader}-5" = "workspace 5"; "${leader}-6" = "workspace 6"; "${leader}-7" = "workspace 7"; "${leader}-8" = "workspace 8"; "${leader}-9" = "workspace 9"; "${leader}-0" = "workspace 10"; "${leader}-shift-1" = "move-node-to-workspace 1"; "${leader}-shift-2" = "move-node-to-workspace 2"; "${leader}-shift-3" = "move-node-to-workspace 3"; "${leader}-shift-4" = "move-node-to-workspace 4"; "${leader}-shift-5" = "move-node-to-workspace 5"; "${leader}-shift-6" = "move-node-to-workspace 6"; "${leader}-shift-7" = "move-node-to-workspace 7"; "${leader}-shift-8" = "move-node-to-workspace 8"; "${leader}-shift-9" = "move-node-to-workspace 9"; "${leader}-shift-0" = "move-node-to-workspace 10"; "${leader}-tab" = "workspace-back-and-forth"; "${leader}-shift-tab" = "move-workspace-to-monitor --wrap-around next"; "${leader}-enter" = '' exec-and-forget osascript <<'APPLESCRIPT' tell application "Terminal" set newWindow to make new window activate tell newWindow to set index to 1 end tell APPLESCRIPT ''; "${leader}-shift-enter" = '' exec-and-forget osascript <<'APPLESCRIPT' tell application "Google Chrome" set newWindow to make new window activate tell newWindow to set index to 1 end tell APPLESCRIPT ''; "${leader}-shift-e" = "exec-and-forget zsh --login -c \"emacsclient -c -n\""; "${leader}-i" = "mode service"; }; userSettings.mode.service.binding = { esc = ["reload-config" "mode main"]; r = ["flatten-workspace-tree" "mode main"]; # reset layout f = ["layout floating tiling" "mode main"]; # Toggle between floating and tiling layout backspace = ["close-all-windows-but-current" "mode main"]; "${leader}-shift-h" = ["join-with left" "mode main"]; "${leader}-shift-j" = ["join-with down" "mode main"]; "${leader}-shift-k" = ["join-with up" "mode main"]; "${leader}-shift-l" = ["join-with right" "mode main"]; }; }; home.roles = { base.enable = true; }; imports = [ ./roles ./modules/emacs ./modules/kubectl ./modules/tmux ]; }