Declarative emacs/doom/org-roam (newbie)

Hi everyone,

I’m completely new to nixos, finding my way around.

I’ve managed to install and configure the following (via “nix-env -i ”):
emacs
sqlite

I’ve also installed and configured doom-emacs and org-roam (via doom’s conf files).

This is a two-part question:
How do I declaratively do all this in the overlays?
How can I get org-roam to see the sqlite3 binary? “No EmacSQL binary available. Aborting.”

Firstly, on nixos, we really don’t recommend using nix-env. Install packages with environment.systemPackages in your configuration.nix, or use home-manager and install them through home.packages in home.nix. See Stop using nix-env and Depreciate the use of nix-env to install packages? for more on that.

As for configuring emacs declaratively, it can get a bit more complicated. Doom emacs in particular already has its own systems for managing the config, so making it play nicely with nix can take a bit of doing. I wouldn’t recommend tackling the project of making that declarative as one of your first projects. Do something easier first.

When you’re ready, though, nix-doom-emacs can be used. You basically make your doom.d part of your configuration rather than part of your runtime homedir, and doom emacs’ setup process happens inside a derivation to produce the runtime setup.

Unfortunately, I don’t know what the issue is with org-roam, however I suspect it may be fixed if you use org-roam as packaged for nix, rather than the one deployed through emacs’ own mechanisms.

1 Like

Amusingly, unless you just created a new account, someone else just asked the exact same thing. You can get emacs-sqlite to work like so, apparently doom comes with its own version that is of course totally broken on NixOS: How to install org-roam declaratively (Doom Emacs) - #9 by midchildan