!djTaTBQyWEPRQxrPTb:nixos.org

Nixpkgs Architecture Team

228 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
18 Jul 2022
@roberthensing:matrix.orgRobert Hensing (roberth) Hi, I'd like to be a Nixpkgs Architecture Team member. My motivation for joining: I want Nix to succeed, and Nix can only succeed with a healthy Nixpkgs. I've been monitoring the PR queue for architecturally relevant or otherwise interesting changes, but that only goes so far. With this team, we can facilitate larger, more impactful changes. I'd also like to join the GitHub team (as @roberth) My time will be sponsored by Hercules CI. The current meeting time slot works for me. Thank you @infinisil for pointing me here.17:01:06
@infinisil:matrix.orginfinisil Awesome! I have a lot of trust in you Robert Hensing (roberth), I've really enjoyed working with you on various issues regarding the NixOS module system :D 17:03:56
@infinisil:matrix.orginfinisil I'd like to accept your application, but I need to check with the only other current team member. tomberek do you also agree with Robert Hensing (roberth) joining the team? 17:04:34
@tomberek:matrix.orgtomberek
In reply to @infinisil:matrix.org
I'd like to accept your application, but I need to check with the only other current team member. tomberek do you also agree with Robert Hensing (roberth) joining the team?
Absolutely agree.
17:51:43
@infinisil:matrix.orginfinisil Awesome, welcome to the team then Robert Hensing (roberth)! I added an entry for you in the team log and the team list, you were also invited into the github organization :) 18:03:50
@infinisil:matrix.orginfinisil Robert Hensing (roberth): Do you want an invite to the meetings? That way you automatically get email updates when it changes and can RSVP. I'd need an email for that (can PM me) 18:04:49
@infinisil:matrix.orginfinisilAlso open to non-members by the way, let me know if anybody wants an email invite to the weekly meetings18:06:21
@infinisil:matrix.orginfinisilI created a project board to track issues this team might work on: https://github.com/orgs/nixpkgs-architecture/projects/2/views/221:12:51
@infinisil:matrix.orginfinisilI added some items myself, and I'll probably add more soon, but anybody is free to open new issues here that they'd like the nixpkgs architecture team to address: https://github.com/nixpkgs-architecture/issues/issues21:14:10
19 Jul 2022
@shine:proqqul.netTaeer Bar-Yam joined the room.13:57:40
20 Jul 2022
@atharvaamritkar:matrix.orgwiredhikari joined the room.06:58:29
@infinisil:matrix.orginfinisil Just discussed with Robert Hensing (roberth) in #dev:nixos.org some things relating to .overrideAttrs 08:37:21
@roberthensing:matrix.orgRobert Hensing (roberth)
In reply to @infinisil:matrix.org
Just discussed with Robert Hensing (roberth) in #dev:nixos.org some things relating to .overrideAttrs
Discussion started at https://matrix.to/#/!kjdutkOsheZdjqYmqp:nixos.org/$c_CLLdpbxqzeOS3o1CM4uPc029OBnK2hXrKnp-oQVGM?via=nixos.org&via=matrix.org&via=nixos.dev
08:37:38
@infinisil:matrix.orginfinisil For one, something like https://github.com/NixOS/nix/pull/4154 (changed to something like builtins.lazyAttrUpdate) could allow all these .overrideAttrs, .extend, .overrideScope, etc. to not require evaluating the old value at all 08:38:17
@infinisil:matrix.orginfinisil But also with a different standard builder, .overrideAttrs at least wouldn't be a problem anymore. Robert Hensing (roberth) showed how that could look like here: https://github.com/NixOS/rfcs/pull/92#discussion_r671741003 08:39:18
@infinisil:matrix.orginfinisil (the problem mainly being that .overrideAttrs has some performance overhead because of how all the attributes of the derivation need to be known beforehand) 08:40:26
@infinisil:matrix.orginfinisil If derivations don't contain all their arguments as output attributes anymore, we could have a static set of output attributes, which then means less evaluation needed to get to .overrideAttrs 08:42:12
@infinisil:matrix.orginfinisilI hope I summarized this well08:42:17
@roberthensing:matrix.orgRobert Hensing (roberth)My concern with lazy attribute names is that its performance benefit may be insignificant after implementing such a change in Nixpkgs, while incurring the cost of complicating the Nix evaluator forever08:45:08
@FRidh:matrix.orgFRidh joined the room.08:45:59
@keiichi:matrix.orgteto joined the room.08:46:35
@infinisil:matrix.orginfinisil I have seen a lot of motivations for lazy attribute names by now. There's many use cases with a dynamic set of attributes that's expensive to evaluate, but where you have some function that can make changes to that set exposed conveniently with a .<something> 08:46:49
@roberthensing:matrix.orgRobert Hensing (roberth) mkDerivation spilling the derivation guts out is a problem that we should solve regardless, and whether that's through a mkDerivation-like function or mkPackage, we'll evaluate derivation attribute names more quickly 08:46:57
@infinisil:matrix.orginfinisilI only see two solutions right now: Making the attributes static, or to use something like lazy attribute names. The former does come with a convenience disadvantage, the latter with complicating the Nix implementation (though I don't think it will be considerable)08:48:22
@roberthensing:matrix.orgRobert Hensing (roberth)I'm not against it. Just saying that we should be really careful, as its costs are hard to assess, and its benefit might not be as big in the future08:48:33
@roberthensing:matrix.orgRobert Hensing (roberth) I don't think there's a convenience disadvantage when we improve mkDerivation. mkPackage is currently overkill, as we don't have RFC 92 yet (derivations producing derivations), and mkPackage is a little inconvenient compared to mkDerivation 08:50:24
@roberthensing:matrix.orgRobert Hensing (roberth) Though it would be interesting to "rebase" a mkDerivation replacement on mkPackage instead of custom fixpoint stuff 08:51:21
@infinisil:matrix.orginfinisil

Short summary of how lazy attribute names should be implemented in Nix:

  • Create an attribute set abstraction, so that there can be multiple "backends" of values providing attributes. This will be some tree-wide changes, but there's also other Nix ideas that could use this abstraction (functions as attribute sets is the one I know of)
  • Add a new value type, a lazy attribute update, consisting of two values (left and right)
  • Add a builtins.lazyAttrsUpdate builtin that creates such a value
08:53:26
@infinisil:matrix.orginfinisilThe first point is the most time-consuming one, but I know how to go about it. After that it's smooth sailing08:54:12
@infinisil:matrix.orginfinisilWhether this is in scope for this team, I'm not sure, but I see a lot of value we could get from this for nixpkgs :)08:55:33

Show newer messages


Back to Room ListRoom Version: 9