| 2 Aug 2022 |
infinisil | John Ericson: Hehe, is there also more code elsewhere? | 12:59:55 |
Alyssa Ross | splice.nix has a lot of the eval-time stuff | 13:01:28 |
FRidh | Might want to start with collecting requirements. I heard some things come by here, but mostly I think for people writing custom phases, instead of those writing reusable builders (think package sets). I think they care less about a shell-like language but care more about code structuring. Maybe even having support for testing phases/builders. Then I think there's also to consider that writing builders should preferably get easier, not harder. Considering the Nix language by itself is far from mainstream, doing the same with the builder is a risk for getting adoption. | 13:11:19 |
John Ericson | infinisil: Also lib/systems/ | 13:19:37 |
John Ericson | * infinisil: Also lib/systems/ | 13:19:40 |
John Ericson | and the stdenv/booter.nix | 13:20:04 |
John Ericson | The core requirements are (1) having a unified way of describing platforms (it was a mess of different things before and (2) having multiple package sets so we can resolve deps for different platforms | 13:21:53 |
Alyssa Ross | FRidh: one thing that would help with that would be if builders could be written in a Nix DSL, like how Guix replaced both Nix and Bash with Guile. | 13:22:41 |
John Ericson | yeah we should study Guix a lot | 13:22:52 |
John Ericson | (which would be easier if Nix and Guix could share the daemon! Sigh....) | 13:23:10 |
infinisil | Brb, reading guix manual | 13:24:37 |
Sandro 🐧 | and only copy the good parts, not the ugly | 13:24:55 |
infinisil | Sandro 🐧: What are the ugly parts? | 13:28:55 |
j-k | A note on changing phases is I just found out nix develop has various phase specific flags...
· --build
Run the build phase.
· --check
Run the check phase.
· --command / -c command args
Instead of starting an interactive shell, start the specified command and arguments.
· --configure
Run the configure phase.
| 13:29:30 |
Alyssa Ross | Oh that's interesting. | 13:29:41 |
infinisil | Oh yeah, I wanted to go into that too | 13:29:50 |
Sandro 🐧 | the verbosity https://git.savannah.gnu.org/cgit/mediagoblin.git/tree/guix-env.scm#n191 | 13:29:52 |
infinisil | Similarly, nix-shell is also bash-specific, it runs some bash stdenv hook stuff by default | 13:30:03 |
Sandro 🐧 | nix-shell more or less opens a stdenv shell | 13:30:24 |
kevincox | I would love to "fix" that. I frequently use nix-shell ... --run zsh | 13:31:14 |
Sandro 🐧 | 🌚 switch to bash | 13:31:42 |
infinisil | In reply to @sandro:supersandro.de the verbosity https://git.savannah.gnu.org/cgit/mediagoblin.git/tree/guix-env.scm#n191 inherit in Nix fixes this at least | 13:31:47 |
infinisil | I guess guix scheme doesn't have something like that | 13:32:12 |
infinisil | Is the reason guix uses a scheme because they can easily serialize functions for the daemon to read and execute? | 13:41:43 |
infinisil | * Is the reason guix uses a scheme because this allows them to easily serialize functions for the daemon to read and execute? | 13:41:52 |
infinisil | Um, I mean s/scheme/lisp | 13:42:38 |
infinisil | Yeah looks like it, this section is very interesting: https://guix.gnu.org/en/manual/devel/en/guix.html#G_002dExpressions | 13:48:22 |
infinisil |
To describe a derivation and its build actions, one typically needs to embed build code inside host code. It boils down to manipulating build code as data, and the homoiconicity of Scheme—code has a direct representation as data—comes in handy for that. But we need more than the normal quasiquote mechanism in Scheme to construct build expressions.
| 13:48:47 |
Alyssa Ross | I think the reason Guix uses Lisp is that it's a GNU project, and Lisp is intended to be the scripting/etc language of the GNU system | 13:52:51 |
infinisil | Above-linked section does give a good reason for why guix specifically benefits from it being lisp though | 13:53:55 |