Nixpkgs Architecture Team | 234 Members | |
| https://github.com/nixpkgs-architecture, weekly public meetings on Wednesday 15:00-16:00 UTC at https://meet.jit.si/nixpkgs-architecture | 51 Servers |
| Sender | Message | Time |
|---|---|---|
| 10 Jul 2023 | ||
| And that's in scope for the team, relates closely to RFC 140 | 17:20:50 | |
| 11 Jul 2023 | ||
In reply to @profpatsch:augsburg.oneI think that's the key question the wg is trying to answer | 09:20:12 | |
In reply to @adis:blad.isThat's more or less the direction I was thinking of when adding the self / finalAttrs argument to the mkDerivation args. At some point I tried to add mkPackage, which would be an overlay-based attrset whose "root" attributes were not exposed in the mkPackage return value. It would allow your example to be expressed without having passthru everywhere, and it would also allow the package to define how the derivation is exposed in the package attrset, which is important for RFC 92 dynamic derivations. | 09:25:55 | |
| It would have solved a couple of warts, except for the lack of automatic merging. That could be a good thing or a bad thing, but this uncertainty is one of the reasons I didn't pursue it further | 09:27:42 | |
| Another was the pushback I got because people didn't understand where this was going | 09:28:11 | |
| Maybe pushback isn't the right word. I could have made a better attempt at convincing them, but tbh that would have been a week long project that I couldn't spend | 09:30:54 | |
| adisbladis: I had not thought of using the final as the source for the input, but S.O.S. is kind of layed out this way. With the same disadvantage that the update operator is becoming overwhelmingly present. I think this is part of the solution, except that as To which the solution is simply to let people override whatever they want before applying | 09:38:13 | |
The idea of S.O.S. is that derivations are available only through final / self, and prev / super provides the recipes. | 09:38:54 | |
You want to override anything, use prev. You want to use a program, then use final.I warned people that I would be happy to break their code if they do not follow the rule. | 09:40:15 | |
| Speaking of mkPackage, a lot of the problems that package modules attempt to solve are actually mkDerivation problems, and I'd like to see them solved first separately | 09:56:35 | |
| Passing random shit as attribute set down through a chain of function calls should be an anti pattern. builtins.removeAttrs should not exist | 09:57:32 | |
| removeAttrs is useful in other contexts | 10:00:19 | |
| But I agree with the core of the argument | 10:00:29 | |
In reply to @k900:conduit.0upti.meAgreed | 10:05:34 | |
| roberthensing: I don’t think it’s any question | 10:32:28 | |
| nixos as-is is way to slow already | 10:32:35 | |
| and that’s only a couple hundred modules | 10:32:45 | |
| Wait, would be the goal to have one shared global module system for packages? o.O | 10:38:44 | |
| I thought the idea was to have local module system instances for individual packages or groups thereof | 10:39:01 | |
| that sounds … even worse? | 11:12:29 | |
| I don't know | 11:16:56 | |
IMO we should rewrite all builders so that there is exactly only one override function (or maybe two for now). Because I'm pretty sure this should be possible | 11:18:56 | |
| Has any profiling been done? I'd be interested to see which parts of Nixpkgs a typical system build spends most time in. | 11:20:30 | |
In reply to @profpatsch:augsburg.oneI think you are forgetting you are discussing this with the person who works actively on NixOS modules and has ideas to make it fast… | 11:31:33 | |
| raitobezarius: It’s fundamentally impossible to make it fast as far as I understand, but I’d love if it were otherwise | 12:27:34 | |
| If you can get it to work without having to strictly evaluate all options first, then you might be able to | 12:28:15 | |
| but then you have something that’s not the nixos module system anymore, because the semantics is different | 12:28:36 | |
| It would be possible to make NixOS module use less memory and potentially be faster … by implementing it in C++. But one must understand that the module system, while not evolving frequently is still evolving. And from my point of view, of someone who never managed to get anything large accepted in Nix source code, this is a not an option. | 12:30:54 | |
| It could be implemented as a Nix plugin | 12:31:50 | |
| Not mentioning the fact that evolution would be restricted to evolution of the Nix binary. | 12:31:54 | |