{pkgs, ...}: with pkgs; let sources = import ../_sources/generated.nix {inherit (pkgs) fetchurl fetchFromGitHub fetchgit dockerTools;}; in emacsWithPackagesFromUsePackage { config = ./init.org; defaultInitFile = true; package = if pkgs.stdenv.isDarwin then emacs29-pgtk.overrideAttrs (old: { patches = (old.patches or []) ++ [ # Fix OS window role (needed for window managers like yabai) (sources.fix-window-role.src) # 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; alwaysEnsure = true; alwaysTangle = true; extraEmacsPackages = epkgs: with epkgs; [ treemacs treemacs-evil ] ++ lib.optionals stdenv.isDarwin [ ns-auto-titlebar ]; override = epkgs: epkgs // { sideline-eglot = callPackage ./extraPackages/sideline-eglot.nix { inherit sources; inherit (epkgs) trivialBuild sideline; }; intuitive-tab-line = callPackage ./extraPackages/intuitive-tab-line.nix { inherit sources; inherit (epkgs) trivialBuild; }; }; }