{ pkgs, lib, ... }: let swiftTreeSitterGrammar = pkgs.tree-sitter-grammars.tree-sitter-swift; swiftTreeSitterLibraryName = if pkgs.stdenv.hostPlatform.isDarwin then "libtree-sitter-swift.dylib" else "libtree-sitter-swift.so"; in { home.file.".emacs.d/early-init.el".source = ./config/early-init.el; home.file.".emacs.d/tree-sitter/${swiftTreeSitterLibraryName}".source = "${swiftTreeSitterGrammar}/parser"; home.file.".emacs.d/snippets".source = ./config/snippets; programs.emacs = { enable = true; extraConfig = builtins.readFile ./config/init.el + builtins.readFile ./config/lisp/utils.el; extraPackages = epkgs: let myEpkgs = epkgs.overrideScope (import ./pkgs { inherit pkgs; }); in with myEpkgs; [ agent-shell apheleia avy cape cider clojure-mode consult consult-denote copilot corfu denote diff-hl dockerfile-mode ef-themes eglot envrc exec-path-from-shell flycheck flycheck-clj-kondo flycheck-swiftlint flymake-collection graphql-mode helpful htmlize jinx js2-mode json-mode ledger-mode ligature markdown-mode minions multiple-cursors nerd-icons nerd-icons-completion nerd-icons-corfu nerd-icons-dired nerd-icons-ibuffer ob-restclient ob-swift olivetti orderless org org-modern ox-gfm ox-reveal pulsar rainbow-delimiters rainbow-mode restclient smartparens swift-mode swift-ts-mode super-save terraform-mode treesit-auto ob-typescript yaml-mode vterm fontaine magit magit-todos marginalia modus-themes nix-mode vertico winpulse yasnippet ]; }; }