diff --git a/config/default.nix b/config/default.nix index 0f2efb3..408c54b 100644 --- a/config/default.nix +++ b/config/default.nix @@ -2,7 +2,36 @@ with pkgs; emacsWithPackagesFromUsePackage { config = ./init.el; - package = pkgs.emacs29; + package = + if pkgs.stdenv.isDarwin + then + emacs29-pgtk.overrideAttrs (old: { + patches = + (old.patches or []) + ++ [ + # Fix OS window role (needed for window managers like yabai) + (fetchpatch { + url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-28/fix-window-role.patch"; + sha256 = "0c41rgpi19vr9ai740g09lka3nkjk48ppqyqdnncjrkfgvm2710z"; + }) + # Use poll instead of select to get file descriptors + (fetchpatch { + url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-29/poll.patch"; + sha256 = "0j26n6yma4n5wh4klikza6bjnzrmz6zihgcsdx36pn3vbfnaqbh5"; + }) + # Enable rounded window with no decoration + (fetchpatch { + url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-29/round-undecorated-frame.patch"; + sha256 = "0x187xvjakm2730d1wcqbz2sny07238mabh5d97fah4qal7zhlbl"; + }) + # Make Emacs aware of OS-level light/dark mode + (fetchpatch { + url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-28/system-appearance.patch"; + sha256 = "14ndp2fqqc95s70fwhpxq58y8qqj4gzvvffp77snm2xk76c1bvnn"; + }) + ]; + }) + else pkgs.emacs29-pgtk; defaultInitFile = true;