index | ||
---|---|---|
readme | reference | faq |
Nope! Doom Emacs is still perfectly usable imperatively. In fact, the very author of Doom Emacs uses NixOS and install Doom Emacs with an "imperative" setup. You can follow the instructions on the Doom Emacs GitHub repository to get a working setup.
You'd usually need to do this when a (M)ELPA pakage needs some package to exist on your system, like git
for example.
You should use the emacsPackagesOverlay
attribute. Here's an example that installs magit-delta
, which depends on Git:
programs.doom-emacs = {
# ...
emacsPackagesOverlay = self: super: {
magit-delta = super.magit-delta.overrideAttrs (esuper: {
buildInputs = esuper.buildInputs ++ [ pkgs.git ];
});
}
};
If you try to add a package that isn't from (M)ELPA, you'd get this error: Package not available
. This is because nix-straight.el
assumes that packages are on emacs-overlay's packages, which only include (M)ELPA.
This question assumes the package uses GitHub, so it uses the fetchFromGitHub
function. To see which function you'd need to use, you should look at the Nixpkgs manual's fetchers section
For an example, this installs idris2-mode
which isn't on (M)ELPA, but is hosted on GitHub:
programs.doom-emacs = {
# ...
emacsPackagesOverlay = self: super: {
idris2-mode = self.trivialBuild {
pname = "idris2-mode";
ename = "idris2-mode";
version = "unstable-2022-09-21";
buildInputs = [ self.prop-menu ];
src = pkgs.fetchFromGitHub {
owner = "idris-community";
repo = "idris2-mode";
rev = "4a3f9cdb1a155da59824e39f0ac78ccf72f2ca97";
sha256 = "sha256-TxsGaG2fBRWWP9aas59kiNnUVD4ZdNlwwaFbM4+n81c=";
};
};
}
};
You shouldn't do that. nix-doom-emacs' home-manager module writes ~/.emacs.d
in your $HOME
. Make sure to remove the environment variables from your configuration, then reboot after rebuilding it. If for just the session, you can just unset
those 2 variables.
Running ulimit -S -n 2048
will fix it for the duration of your shell session.