!djTaTBQyWEPRQxrPTb:nixos.org

Nixpkgs Architecture Team

227 Members
https://github.com/nixpkgs-architecture, weekly public meetings on Wednesday 15:00-16:00 UTC at https://meet.jit.si/nixpkgs-architecture53 Servers

Load older messages


SenderMessageTime
29 Jul 2022
@j-k:matrix.orgj-k * would anything with escapeShellArg need modification for oil?17:41:38
@qyliss:fairydust.spaceAlyssa RossOSH is designed to be bash-compatible17:46:34
@qyliss:fairydust.spaceAlyssa Rossthere's a whole RFC exploring this17:46:46
@infinisil:matrix.orginfinisilI'm asking myself the question why we care about a single language at all, couldn't we allow multiple?17:59:00
@infinisil:matrix.orginfinisilE.g. what if every phase (if that concept were kept) could be in its own language, and we'd have an interface for passing data between phase18:00:17
@infinisil:matrix.orginfinisil * E.g. what if every phase (if that concept were kept) could be in its own language, and we'd have an interface for passing data between phases18:00:19
@kevincox:matrix.orgkevincoxI think for nixpkgs having a single language improves uniformity allowing any contributor to easily pick up and work on any packages. I like strong conventions. That being said if we are adding new Nix primitives I would like to ensure that those are available to all languages for those who don't want to adopt nixpkgs conventions.18:00:25
@kevincox:matrix.orgkevincox
In reply to @infinisil:matrix.org
E.g. what if every phase (if that concept were kept) could be in its own language, and we'd have an interface for passing data between phases
This strikes me as likely to add far more complexity than value.
18:00:56
@infinisil:matrix.orginfinisilBeing able to easily contribute is a good argument18:01:48
@infinisil:matrix.orginfinisil I had one other use case in mind: Being able to easily extend phases (e.g. current hooks) in e.g. .overrideAttrs. This use case would work well with multiple languages 18:02:56
@infinisil:matrix.orginfinisilAlternatively: What if how derivations are built doesn't use any specific language at all. We'd essentially just have a Nix DSL for declaring what needs to be done. What language is used to implement this in the end doesn't matter and can be freely chosen18:03:57
@infinisil:matrix.orginfinisilThat sounds very slow, but would be really good otherwise I think18:05:03
@infinisil:matrix.orginfinisilBut then again, looking at most package definitions in nixpkgs, there's barely much bash-specifics in there18:06:53
@infinisil:matrix.orginfinisilDoes it really matter that we have the features of language X to build packages, or are the features that we need so generic that any language could implement them?18:07:17
@profpatsch:augsburg.oneprofpatschinfinisil: If we switched to e.g. chez scheme, I’d expect phases to be plain old functions, and then passing higher-order functions would become possible.18:12:34
@profpatsch:augsburg.oneprofpatschWhich you don’t get when you e.g. serialize stuff to json or similar18:12:44
@infinisil:matrix.orginfinisil profpatsch: What use cases would benefit from this? 18:14:30
@profpatsch:augsburg.oneprofpatschof course, the question is if you need that if you could also achieve it on the nix expression level. But then, how much would evaluation times suffer if we did that for every single derivation (that was one of the reasons there’s so much done in bash afaik)18:14:41
@profpatsch:augsburg.oneprofpatsch infinisil: being able to pass functions back and forth is one of those order-of-magnitude improvements, the real question is what use-cases would not benefit from this 18:15:38
@profpatsch:augsburg.oneprofpatschhooks are just very crude higher order functions18:15:46
@profpatsch:augsburg.oneprofpatschA hook is a function which takes some magic arguments and does some magic side effects, and you pass a list of hooks to mkDerivation18:16:21
@infinisil:matrix.orginfinisilI see yeah 🤔18:17:30
@profpatsch:augsburg.oneprofpatschexcept if you were in a full scheme context, you could also return arguments instead of just doing site-effects directly18:17:38
@profpatsch:augsburg.oneprofpatschso a hook could return a build instruction in some kind of DSL that we could come up with18:17:59
@profpatsch:augsburg.oneprofpatschidk I haven’t thought about this very much. Ideally, the drvs would be more fine-grained anyway, and maybe something like that works against that18:18:45
@infinisil:matrix.orginfinisilI guess it's always a fight between what should be done at evaluation vs what should be done at build time18:19:10
@profpatsch:augsburg.oneprofpatschMaybe if you find a good DSL, you could statically have some process of splitting it into multiple drvs, by looking at the graph of actions18:19:27
@infinisil:matrix.orginfinisilYou can use a high-level language at build time, pass around all kinds of typed data and stuff, but then you can't interact with that with nix18:19:35
@profpatsch:augsburg.oneprofpatschSo there’s a magic slider that you can move in one direction or the other18:19:42
@infinisil:matrix.orginfinisilYeah18:20:02

There are no newer messages yet.


Back to Room ListRoom Version: 9