3 ms·
But even still you are mixing languages, so the problem remains. The issue is not that Nix uses Bash, but that Nix uses different languages for the host-side a
by davexunit 9y ago
But even still you are mixing languages, so the problem remains. The issue is not that Nix uses Bash, but that Nix uses different languages for the host-side and build-side. AFAIK people aren't writing the build-side code in the Nix language, and I'm not sure if it even has the features necessary to do it. Guix unifies the different layers of code execution with a single language, and using a Lisp enabled that design.
For a complete explanation of this design, see the "Code Staging in GNU Guix" paper: https://arxiv.org/abs/1709.00833 https://arxiv.org/abs/1709.00833
- thomastjeffery 9y ago> Nix uses different languages for the host-side and build-side. I'm not sure what you mean by that. Nix packages are Nix expressions.
- davexunit 9y agoThose package expressions have Bash snippets embedded in them that run on the build daemon. The daemon doesn't evaluate Nix code.
- thomastjeffery 9y agoHow is that a problem?
- davexunit 9y agoThe paper I linked to explains the drawbacks to such a design.
- sly010 9y agoHe is probably referring to the thing you see when you look into a .drv file, aka the immediate result of evaluating a derivation in nix. That language/datastructure is what nix-build evaluates to actually build things, otherwise the nix language itself is purely functional and cannot really do anything on it's own. I guess in guile/scheme the equivalent data structure happens to be an s-expression. Edit: except the paper actually describes that it's a g-expression.
- deleted 9y ago[deleted]