Skip to content

Latest commit

 

History

History
61 lines (46 loc) · 2.64 KB

faq.md

File metadata and controls

61 lines (46 loc) · 2.64 KB
index
readme reference faq

Frequently Asked Questions

I am new to Nix. Is this the only way to use Doom Emacs with Nix/NixOS?

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.

How do I add a non-(M)ELPA dependency to a package's build?

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 ];
    });
  }
};

How do I add a package that's only on GitHub (or any Git frontend)

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=";
      };
    };
  }
};

nix-doom-emacs isn't working if I set DOOMDIR or EMACSDIR

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.

It errors with "Too many files open"!

Running ulimit -S -n 2048 will fix it for the duration of your shell session.