9 Aug 2023 |
mei 🌒& | except maybe doom having profiles now | 19:31:07 |
mei 🌒& | (which is just more patching but it's confusing patching) | 19:31:19 |
JoelMcCracken | also, so, my expertise is in emacs lisp; for me that part is easy, but i need help w/ nix | 19:31:26 |
JoelMcCracken | if you're willing to like advise me somehow (or someone else is) as I work on this i think it would surely help speed it along quite a bit | 19:32:02 |
mei 🌒& | ah! opposite here. i've tried to figure that issue out a few times but haven't had any luck figuring out where to intercept straight | 19:32:07 |
mei 🌒& | and I am very willing. NDE being out of date has been an itchy part of my config for a long time | 19:33:01 |
JoelMcCracken | sounds good, ill start poking at it | 19:34:05 |
mei 🌒& | lmk when you figure out what's needed of the nix bit. you know the general requirements though right? | 19:34:36 |
JoelMcCracken | let me jut write out what i'm thinking | 19:35:13 |
JoelMcCracken | emacs is run w a shim, similar to what currently occurs via nix-straight, which grabs more of the
data besides just the package name (ideally, all of the data)
some lisp is called which looks up the metadata to see how straight.el would
resolve the package (the repo, the commit, etc). this data is serialized (json?)
at subsequent step, nix reads this serialized data, and then constructs an
overlay with the correct packages.
the installation then procedes as it currently does, using this new overlay to
just install the requrired packages.
| 19:39:42 |
JoelMcCracken | i noticed that these are done as separate... derivations? steps? not sure of the right term here.. in nix-straight; i'm not sure why it needs to be this way | 19:44:10 |
mei 🌒& | JoelMcCracken: right so, the emacs shim runs in one go, currently collecting just the package names, and it doesn't have a network connection at this point because it's in a Nix build. the package meta is put into a json file, which is the output of this derivation. next up the nix evaluator parses this JSON, and prepares the next derivation using that, reading another derivation's result is called IFD | 19:49:25 |
mei 🌒& | * JoelMcCracken: right so, the emacs shim runs in one go, currently collecting just the package names, and it doesn't have a network connection at this point because it's in a Nix build. the package meta is put into a json file, which is the output of this derivation. next up the nix evaluator parses this JSON, and prepares the next derivation using that: reading another derivation's result is called IFD | 19:49:32 |
mei 🌒& | * JoelMcCracken: right so, the emacs shim runs in one go, currently collecting just the package names, and it doesn't have a network connection at this point because it's in a Nix build. the package meta is put into a json file, which is the output of this derivation. next up the nix evaluator parses this JSON, and prepares the next derivation using that: reading & Importing From a Derivation's result is called IFD | 19:49:51 |
JoelMcCracken | ahhhhhh | 19:50:16 |
mei 🌒& | but the trick is we don't always get fully-qualified package paths, sometimes we just get a (package! blahblah-mode) , and we have to resolve it | 19:50:38 |
JoelMcCracken | sure | 19:50:55 |
mei 🌒& | so that's done here atm | 19:51:55 |
JoelMcCracken | this seems to be the key https://github.com/radian-software/straight.el/blob/master/straight.el#L3022 | 19:54:45 |
mei 🌒& | i feel that comment on 3031 | 19:55:36 |
mei 🌒& | so essentially we need to determine a good spot to splice Nix in | 19:56:38 |
mei 🌒& | that ideally doesn't involve a large api surface area | 19:56:52 |
JoelMcCracken | yeah | 19:58:12 |
mei 🌒& | so that's about where i timed out last time after running around the room trying to read elisp | 19:58:40 |
j4m3s | slighty related question, is it sufficient to lock doom's git version to lock package version or ? (I'm confused about the ~/.emacs.d/bin/doom upgrade | 19:59:10 |
mei 🌒& | moooostly | 19:59:28 |
mei 🌒& | all of doom's own packages should be pinned, but the user doesn't have to specify a pin | 19:59:50 |
mei 🌒& | like I have all of these: | 20:00:09 |
mei 🌒& |  Download image.png | 20:00:10 |
j4m3s | Yeah right, i was just confused by the fact that in the modules they're called w/o the pin | 20:00:41 |