diff --git a/flake.nix b/flake.nix index 50d2eb8..f3b9cd3 100644 --- a/flake.nix +++ b/flake.nix @@ -12,6 +12,7 @@ nix-darwin.inputs.nixpkgs.follows = "nixpkgs"; ip-whitelist.url = "github:Oak-Digital/nixos-ip-whitelist-firewall"; nix-homebrew.url = "github:zhaofengli/nix-homebrew"; + emacs-overlay.url = "github:nix-community/emacs-overlay/da2f552d133497abd434006e0cae996c0a282394"; }; outputs = diff --git a/hosts/dnsc-air/default.nix b/hosts/dnsc-air/default.nix index 8f2a68a..ecf87cd 100644 --- a/hosts/dnsc-air/default.nix +++ b/hosts/dnsc-air/default.nix @@ -25,6 +25,12 @@ nixpkgs.config.allowUnfree = true; + # Overlays + nixpkgs.overlays = [ + (import inputs.emacs-overlay) + (import ../../overlays/emacs-patches.nix) + ]; + # System Packages environment.systemPackages = with pkgs; [ git @@ -60,6 +66,7 @@ fnm imagemagick restic + emacs-patched ]; # Homebrew diff --git a/overlays/emacs-patches.nix b/overlays/emacs-patches.nix new file mode 100644 index 0000000..76e3f42 --- /dev/null +++ b/overlays/emacs-patches.nix @@ -0,0 +1,26 @@ +final: prev: { + emacs-patched = prev.emacsPgtk.overrideAttrs (old: { + patches = (old.patches or [ ]) ++ [ + # Fix OS window role (needed for window managers like yabai) + (prev.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 + (prev.fetchpatch { + url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-29/poll.patch"; + sha256 = "0j26n6yma4n5wh4klikza6bjnzrmz6zihgcsdx36pn3vbfnaqbh5"; + }) + # Enable rounded window with no decoration + (prev.fetchpatch { + url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-29/round-undecorated-frame.patch"; + sha256 = "111i0r3ahs0f52z15aaa3chlq7ardqnzpwp8r57kfsmnmg6c2nhf"; + }) + # Make Emacs aware of OS-level light/dark mode + (prev.fetchpatch { + url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-28/system-appearance.patch"; + sha256 = "14ndp2fqqc95s70fwhpxq58y8qqj4gzvvffp77snm2xk76c1bvnn"; + }) + ]; + }); +}