My personal Emacs configuration. It’s a chonker.
I don’t recommend anyone else actually uses this as-is since it’s a personal setup that I change regularly.
Nix is used to build an Emacs along with 3rd-party Lisp packages and required programs on its path. It should be sufficient to install a recent Nix that has Flake support to get this running.
nix run
To integrate this with your system configuration, pull in the Flake and consume the appropriate output package for your system.
The example below is for nix-darwin; a NixOS configuration would look very similar.
{
description = "Example flake using custom Emacs build";
# NB. You could use a local checkout instead: "dir:/path/to/checkout"
inputs.emacs.url = "github:chrisbarrett/.emacs.d";
outputs = { self, emacs, home-manager, nix-darwin }: {
# e.g. ...
darwinConfiguration.testMachine =
let system = "aarch64-darwin";
in
nix-darwin.lib.darwinSystem {
inherit system;
modules = [
home-manager.darwinModules.home-manager
];
nixpkgs.overlays = [ emacs.overlays."${system}".default ];
home-manager = {
users.hello = { pkgs, ... }: {
home.packages = [
pkgs.emacsCustom
];
};
};
};
};
}