diff --git a/flake.lock b/flake.lock index 04d5df6..a37055b 100644 --- a/flake.lock +++ b/flake.lock @@ -968,6 +968,22 @@ } }, "nixpkgs_10": { + "locked": { + "lastModified": 1769268028, + "narHash": "sha256-mAdJpV0e5IGZjnE4f/8uf0E4hQR7ptRP00gnZKUOdMo=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ab9fbbcf4858bd6d40ba2bbec37ceb4ab6e1f562", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_11": { "locked": { "lastModified": 1769018530, "narHash": "sha256-MJ27Cy2NtBEV5tsK+YraYr2g851f3Fl1LpNHDzDX15c=", @@ -1097,15 +1113,15 @@ }, "nixpkgs_9": { "locked": { - "lastModified": 1769268028, - "narHash": "sha256-mAdJpV0e5IGZjnE4f/8uf0E4hQR7ptRP00gnZKUOdMo=", - "owner": "NixOS", + "lastModified": 1769433173, + "narHash": "sha256-Gf1dFYgD344WZ3q0LPlRoWaNdNQq8kSBDLEWulRQSEs=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "ab9fbbcf4858bd6d40ba2bbec37ceb4ab6e1f562", + "rev": "13b0f9e6ac78abbbb736c635d87845c4f4bee51b", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" @@ -1271,6 +1287,7 @@ "nixvim": "nixvim", "nur": "nur", "oisd": "oisd", + "skhd-zig": "skhd-zig", "sops-nix": "sops-nix", "spicetify-nix": "spicetify-nix" } @@ -1292,10 +1309,28 @@ "type": "github" } }, - "sops-nix": { + "skhd-zig": { "inputs": { "nixpkgs": "nixpkgs_9" }, + "locked": { + "lastModified": 1769555538, + "narHash": "sha256-t6jEFc4Ozsgjonnnm1wLpKx9bEzjJitn6Md2eKagvIo=", + "owner": "sebb3", + "repo": "skhd-zig.nix", + "rev": "508bbeae2b61d77ea194918ef5e435765d95873f", + "type": "github" + }, + "original": { + "owner": "sebb3", + "repo": "skhd-zig.nix", + "type": "github" + } + }, + "sops-nix": { + "inputs": { + "nixpkgs": "nixpkgs_10" + }, "locked": { "lastModified": 1769469829, "narHash": "sha256-wFcr32ZqspCxk4+FvIxIL0AZktRs6DuF8oOsLt59YBU=", @@ -1312,7 +1347,7 @@ }, "spicetify-nix": { "inputs": { - "nixpkgs": "nixpkgs_10", + "nixpkgs": "nixpkgs_11", "systems": "systems_6" }, "locked": { diff --git a/flake.nix b/flake.nix index 1824872..1f7818b 100644 --- a/flake.nix +++ b/flake.nix @@ -25,6 +25,7 @@ nix-darwin.url = "github:nix-darwin/nix-darwin/nix-darwin-25.11"; nix-darwin.inputs.nixpkgs.follows = "nixpkgs"; nix-homebrew.url = "github:zhaofengli/nix-homebrew"; + skhd-zig.url = "github:sebb3/skhd-zig.nix"; homebrew-core = { url = "github:homebrew/homebrew-core"; diff --git a/hosts/azalea/default.nix b/hosts/azalea/default.nix index 2715f5b..bf68387 100644 --- a/hosts/azalea/default.nix +++ b/hosts/azalea/default.nix @@ -8,7 +8,7 @@ imports = [ # ./../../modules/core/homebrew.nix ./../../modules/core/user.nix - ./../../modules/core/skhd.nix + # ./../../modules/core/skhd.nix ./../../modules/core/yabai.nix #./../../modules/core/virtualization.nix #./../../modules/services/tailscale.nix @@ -35,17 +35,18 @@ iCal."first day of week" = "Monday"; screencapture.include-date = true; screencapture.type = "png"; - spaces.spans-displays = true; + spaces.spans-displays = false; }; }; nixpkgs.hostPlatform = "aarch64-darwin"; homebrew = { enable = true; - #taps = { - # "homebrew/homebrew-core" = inputs.homebrew-core; - # "homebrew/homebrew-cask" = inputs.homebrew-cask; - #}; + taps = [ + "homebrew/homebrew-core" + "homebrew/homebrew-cask" + # "FelixKratz/formulae" + ]; onActivation = { autoUpdate = true; cleanup = "uninstall"; @@ -58,6 +59,7 @@ brews = [ "imagemagick" "virt-manager" + # "svim" ]; casks = [ "qbittorrent" @@ -81,6 +83,8 @@ "mullvad-vpn" "maccy" "spotmenu" + # "svim" + # "font-sketchybar-app-font" ]; }; diff --git a/modules/core/skhd.nix b/modules/core/skhd.nix index c64a4f5..a984e40 100644 --- a/modules/core/skhd.nix +++ b/modules/core/skhd.nix @@ -31,6 +31,9 @@ shift + alt - k : yabai -m window --warp north shift + alt - l : yabai -m window --warp east + alt + shirt - r; \ + skhd --reload; \ + yabai --restart-service # Float / Unfloat window alt - space : \ @@ -39,6 +42,14 @@ # cmd - d : yabai -m space --layout $(yabai -m query --spaces --space | jq -r 'if .type == "bsp" then "stack" else "bsp" end') alt - return: open -a Kitty -n + alt + shift - t : open -na Mail + alt + shift - c : open -na Chromium # open new instance + alt + shift - e : open -a Element # move to existing instance + + alt - f : yabai -m window --toggle zoom-fullscreen + + alt + shift -f : yabai -m window --toggle native-fullscreen + # # Linux-style word navigation and deletion # ctrl - backspace [ diff --git a/modules/core/yabai.nix b/modules/core/yabai.nix index b3836ca..a8186df 100644 --- a/modules/core/yabai.nix +++ b/modules/core/yabai.nix @@ -22,7 +22,7 @@ active_window_opacity = "1.0"; normal_window_opacity = "1.0"; - mouse_modifier = "cmd"; + mouse_modifier = "alt"; # set modifier + right-click drag to resize window (default: resize) mouse_action2 = "resize"; # set modifier + left-click drag to resize window (default: move) @@ -32,24 +32,14 @@ focus_follows_mouse = "autofocus"; # gaps - top_padding = 0; - bottom_padding = 0; - left_padding = 0; - right_padding = 0; - window_gap = 0; + top_padding = 20; + bottom_padding = 8; + left_padding = 8; + right_padding = 8; + window_gap = 16; }; extraConfig = '' - # osascript -e 'tell application id "tracesOf.Uebersicht" to refresh' - # rules - yabai -m rule --add app=".*" sub-layer=normal - yabai -m rule --add app="^System Settings$" manage=off - yabai -m rule --add app="^System Information$" manage=off - yabai -m rule --add app="^System Preferences$" manage=off - yabai -m rule --add title="Preferences$" manage=off - yabai -m rule --add title="Settings$" manage=off - yabai -m rule --add app="Finder$" manage=off - # workspace management yabai -m space 1 --label web yabai -m space 2 --label terminal @@ -62,20 +52,27 @@ yabai -m rule --add app="Element" space=chat yabai -m rule --add app="Signal" space=chat yabai -m rule --add app="Spotify" space=music - yabai -m rule --add app="Calendar" space=mail yabai -m rule --add app="Mail" space=mail yabai -m rule --add app='About This Mac' manage=off yabai -m rule --add app='System Information' manage=off yabai -m rule --add app='System Preferences' manage=off + yabai -m rule --add label="Select file to save to" app="^Gimp$" title="Select file to save to" manage=off + yabai -m rule --add app=".*" sub-layer=normal + yabai -m rule --add app="^System Settings$" manage=off + yabai -m rule --add app="^System Information$" manage=off + yabai -m rule --add app="^System Preferences$" manage=off + yabai -m rule --add title="Preferences$" manage=off + yabai -m rule --add title="Settings$" manage=off + yabai -m rule --add app="Finder$" manage=off yabai -m signal --add event=dock_did_restart \ action="sudo yabai --load-sa" sudo yabai --load-sa # yabai -m config external_bar all:40:0 - # exec ~/.config/borders/bordersrc & + exec ~/.config/borders/bordersrc & ''; }; diff --git a/modules/home/default.azalea.nix b/modules/home/default.azalea.nix index 0bb0cc2..5b01ee9 100644 --- a/modules/home/default.azalea.nix +++ b/modules/home/default.azalea.nix @@ -2,13 +2,18 @@ { imports = [ (import ./git.nix) ] + ++ [ (import ./fonts.nix) ] ++ [ (import ./htop.nix) ] + ++ [ (import ./iamb.nix) ] ++ [ (import ./kitty.nix) ] ++ [ (import ./nvim.nix) ] ++ [ (import ./zathura.nix) ] ++ [ (import ./packages.nix) ] ++ [ (import ./scripts/scripts.nix) ] ++ [ (import ./ssh.nix) ] + ++ [ (import ./skhd.nix) ] + ++ [ (import ./sketchybar/default.nix) ] + ++ [ (import ./jankyborders.nix) ] ++ [ (import ./zsh.nix) ] ++ [ (import ./qutebrowser.nix) ] ++ [ (import ./tmux.nix) ]; diff --git a/modules/home/iamb.nix b/modules/home/iamb.nix new file mode 100644 index 0000000..6ba508e --- /dev/null +++ b/modules/home/iamb.nix @@ -0,0 +1,17 @@ +{ + programs.iamb = { + enable = true; + settings = { + profiles.user.user_id = "@liv:liv.town"; + notifications.enabled = false; + image_preview = { + protocol.type = "kitty"; + protocol.size = { + height = 10; + width = 66; + }; + }; + username_display = "displayname"; + }; + }; +} diff --git a/modules/home/jankyborders.nix b/modules/home/jankyborders.nix new file mode 100755 index 0000000..86d91e3 --- /dev/null +++ b/modules/home/jankyborders.nix @@ -0,0 +1,18 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ + jankyborders + ]; + home.file.".config/borders/bordersrc" = { + executable = true; + text = '' + borders \ + style=round \ + width=8.0 \ + hidpi=off \ + active_color=0xc0e2e2e3 \ + inactive_color=0xc02c2e34 \ + background_color=0x302c2e34 + ''; + }; +} diff --git a/modules/home/skhd.nix b/modules/home/skhd.nix new file mode 100644 index 0000000..88579ce --- /dev/null +++ b/modules/home/skhd.nix @@ -0,0 +1,96 @@ +{ + inputs, + username, + pkgs, + ... +}: +{ + home.packages = with pkgs; [ + inputs.skhd-zig.packages.${pkgs.stdenv.hostPlatform.system}.skhd-zig + ]; + # install skhd-zig via brew instead + + home.file = { + "/Users/${username}/.config/skhd/skhdrc" = { + executable = false; + text = '' + shift + alt - 1: yabai -m window --space 1 + shift + alt - 2: yabai -m window --space 2 + shift + alt - 3: yabai -m window --space 3 + shift + alt - 4: yabai -m window --space 4 + shift + alt - 5: yabai -m window --space 5 + shift + alt - 6: yabai -m window --space 6 + shift + alt - 7: yabai -m window --space 7 + shift + alt - 8: yabai -m window --space 8 + shift + alt - 9: yabai -m window --space 9 + shift + alt - 0: yabai -m window --space 10 + + # focus window + 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 + + # move window + 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 + + alt + shift - r : skhd --reload; yabai --restart-service + + # Float / Unfloat window + alt - space : yabai -m window --toggle float; yabai -m window --toggle border + + # cmd - d : yabai -m space --layout $(yabai -m query --spaces --space | jq -r 'if .type == "bsp" then "stack" else "bsp" end') + alt - return: open -a Kitty -n + alt + shift - t : open -na Mail + alt + shift - c : open -na Chromium # open new instance + alt + shift - e : open -a Element # move to existing instance + + alt - f : yabai -m window --toggle zoom-fullscreen + + alt + shift -f : yabai -m window --toggle native-fullscreen + + + # # Linux-style word navigation and deletion + # ctrl - backspace [ + # @native_apps ~ # Terminal apps handle natively + # * | alt - backspace # Other apps: delete word + # ] + + # ctrl - left [ + # @native_apps ~ # Terminal apps handle natively + # * | alt - left # Other apps: move word left + # ] + + # ctrl - right [ + # @native_apps ~ # Terminal apps handle natively + # * | alt - right # Other apps: move word right + # ] + + # # Home/End key behavior (with shift for selection) + # home [ + # @native_apps ~ # Terminal apps handle natively + # * | cmd - left # Other apps: line start + # ] + + # shift - home [ + # @native_apps ~ # Terminal apps handle natively + # * | cmd + shift - left # Other apps: select to line start + # ] + + # # Ctrl+Home/End for document navigation + # ctrl - home [ + # @native_apps ~ # Terminal apps handle natively + # * | cmd - up # Other apps: document start + # ] + + # ctrl - end [ + # @native_apps ~ # Terminal apps handle natively + # * | cmd - down # Other apps: document end + # ] + ''; + }; + }; +}