This flake extends the nix-community/emacs-overlay to provide Emacs with the new experimental garbage collector from Emacs “feature/igc” branch. The new GC is incremental, generational, and thread-safe. It is implemented using Ravenbrook’s Memory Pool System (ravenbrook/mps).
Effectively this should mean less GC pauses.
Consume this flake’s default overlay in your own config or use nix build
/ nix run
.
The overlay adds the `emacs-igc` package and adds derivation inputs
withBuildDetails
(default: false
) and withMpsAs
(default: "yes"
).
Enabling build-details fixes this issue when using the Elpaca package manager on
unstable Emacs builds from nixpkgs.
nix build "github:naveen-seth/emacs-igc-overlay"
# or
nix build "github:naveen-seth/emacs-igc-overlay"#emacs-igc-pgtk
The overlay only provides emacs-igc
(and not emacs-igc-pgtk
). Set other
build-options using .override
.
{ pkgs, emacs-igc-overlay, ... }:
{
nixpkgs.overlays = [
emacs-igc-overlay.overlays.default
];
environment.systemPackages = [
# Example build
(pkgs.emacs-igc.override {
withBuildDetails = true;
withCompressInstall = false;
withMpsAs = "debug";
withPgtk = true;
})
];
}
I wrote this overlay mostly for personal use. I think the nix-community overlay is probably a better source for your Emacs overlay once they provide builds with igc. If I find the time (exams currently), I might try to create a pull request. This overlay will then be retired! Tested on Linux only.