{ inputs, pkgs, ... }: let emacs = pkgs.emacsWithPackagesFromUsePackage { package = pkgs.emacs-unstable; config = ./config.org; defaultInitFile = pkgs.callPackage ./config.nix { }; alwaysEnsure = true; alwaysTangle = true; extraEmacsPackages = epkgs: [ epkgs.flymake-go-staticcheck epkgs.tree-sitter-langs epkgs.treesit-grammars.with-all-grammars (epkgs.trivialBuild { pname = "eglot-booster"; version = "main-2024-04-11"; src = pkgs.fetchFromGitHub { owner = "jdtsmith"; repo = "eglot-booster"; rev = "e19dd7ea81bada84c66e8bdd121408d9c0761fe6"; hash = "sha256-vF34ZoUUj8RENyH9OeKGSPk34G6KXZhEZozQKEcRNhs="; }; }) ]; }; e = pkgs.writeShellScriptBin "e" '' ${emacs}/bin/emacs -nw $@ ''; ec = pkgs.writeShellScriptBin "ec" '' ${emacs}/bin/emacsclient -t -c -a= $@ ''; in { nixpkgs.overlays = [ inputs.emacs-overlay.overlay ]; home-manager.users.alex = { home.sessionVariables = { EDITOR = "${e}/bin/e $@"; VISUAL = "${e}/bin/e $@"; TIG_EDITOR = "${e}/bin/e $@"; }; home.packages = [ e ec emacs pkgs.wl-clipboard pkgs.emacs-lsp-booster pkgs.nixd ]; }; environment.systemPackages = [ pkgs.ripgrep ]; }