{ pkgs, user, ... }: { imports = [ ./home-manager.nix ../shared ../shared/cachix ]; # Setup user, packages, programs nix = { package = pkgs.nix; settings.trusted-users = [ "@admin" "${user}" ]; gc = { user = "root"; automatic = true; interval = { Weekday = 0; Hour = 2; Minute = 0; }; options = "--delete-older-than 30d"; }; # Turn this on to make command line easier extraOptions = '' experimental-features = nix-command flakes ''; }; # Turn off NIX_PATH warnings now that we're using flakes system.checks.verifyNixPath = false; # Load configuration that is shared across systems environment.systemPackages = import ../shared/packages.nix { inherit pkgs; } ++ [ # MacOS specific packages ]; fonts.packages = import ../shared/fonts.nix { inherit pkgs; }; # Setup MacOS specific services services = { aerospace = { enable = true; settings = { mode.main.binding = { # Open a new terminal window alt-enter = "exec-and-forget /Users/dekker1/.nix-profile/bin/kitty --single-instance -d ~"; # alt-enter = "exec-and-forget open \"warp://action/new_window?path=$HOME\""; # Toggle between floating and tiling layout alt-shift-space = "layout floating tiling"; ### Key mappings copied from the default config # See: https://nikitabobko.github.io/AeroSpace/commands#layout alt-slash = "layout tiles horizontal vertical"; alt-comma = "layout accordion horizontal vertical"; # See: https://nikitabobko.github.io/AeroSpace/commands#focus alt-h = "focus left"; alt-j = "focus down"; alt-k = "focus up"; alt-l = "focus right"; # See: https://nikitabobko.github.io/AeroSpace/commands#move alt-shift-h = "move left"; alt-shift-j = "move down"; alt-shift-k = "move up"; alt-shift-l = "move right"; # See: https://nikitabobko.github.io/AeroSpace/commands#resize alt-shift-minus = "resize smart -50"; alt-shift-equal = "resize smart +50"; # See: https://nikitabobko.github.io/AeroSpace/commands#workspace alt-1 = "workspace 1"; alt-2 = "workspace 2"; alt-3 = "workspace 3"; alt-4 = "workspace 4"; alt-5 = "workspace 5"; alt-6 = "workspace 6"; alt-7 = "workspace 7"; alt-8 = "workspace 8"; alt-9 = "workspace 9"; # See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace alt-shift-1 = "move-node-to-workspace 1"; alt-shift-2 = "move-node-to-workspace 2"; alt-shift-3 = "move-node-to-workspace 3"; alt-shift-4 = "move-node-to-workspace 4"; alt-shift-5 = "move-node-to-workspace 5"; alt-shift-6 = "move-node-to-workspace 6"; alt-shift-7 = "move-node-to-workspace 7"; alt-shift-8 = "move-node-to-workspace 8"; alt-shift-9 = "move-node-to-workspace 9"; # See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth # alt-tab = "workspace-back-and-forth"; # See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor alt-shift-tab = "move-workspace-to-monitor --wrap-around next"; # See: https://nikitabobko.github.io/AeroSpace/commands#mode alt-shift-semicolon = "mode service"; }; ### Service mode (from default config, with default keybindings) 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"]; # sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2 #s = ["layout sticky tiling", "mode main"] alt-shift-h = ["join-with left" "mode main"]; alt-shift-j = ["join-with down" "mode main"]; alt-shift-k = ["join-with up" "mode main"]; alt-shift-l = ["join-with right" "mode main"]; ## Version 0.16+ # down = "volume down"; # up = "volume up"; # shift-down = ["volume set 0" "mode main"]; }; # on-window-detected = [ # # Use floating mode for Sublime Merge # { # "if.app-id" = "com.sublimemerge"; # run = "layout floating"; # } # ]; }; }; # Auto upgrade nix package and the daemon service. nix-daemon.enable = true; skhd = { enable = false; skhdConfig = (builtins.readFile ./config/skhdrc); }; yabai = { enable = false; extraConfig = (builtins.readFile ./config/yabairc); }; }; system.stateVersion = 5; }