Skip to content
This repository has been archived by the owner on Mar 11, 2024. It is now read-only.

Latest commit

 

History

History
95 lines (82 loc) · 5.93 KB

2022-08-31.md

File metadata and controls

95 lines (82 loc) · 5.93 KB

Nixpkgs Architecture Team Meeting #8

The following sections describe the agenda of the meeting and also serve as a place to put the corresponding meeting notes. After the meeting, these notes are moved to https://github.com/nixpkgs-architecture/meetings. This HedgeDoc link will be reused for all subsequent meetings.

Protocol

Administration

  • Finding a new time for the meeting

Standup

Agenda

  • @infinisil: Auto-called package listing
    • @ash: Many PR's blocked from merging due to all-packages.nix merge conflicts
    • @infinisil: Any opposition?
    • @ash: Performance concerns, GitHub file count limit
      • @j-k: all-packages.nix display limit
    • @infinisil: hello lives in pkgs/he/hello, good?
      • @ash: Looks fine. adisbladis experimented with basic flattening, performance improved by two times, not sure if that's nested or not.
    • @infinisil: Lots of lib's -> not limited to prefix of two, could be arbitrary
      • @ash: Prefix for lib -> where does libreoffice go? Edge cases
      • @robert: Not use prefix at all, simple, use file search feature
      • @j-k: Re lib, was some discussion in matrix. Problem with one folder and find feature -> can't scroll.
      • @ash: Never manually gone to file on github, too difficult to find.
        • @infinisil: I use it sometimes
      • @j-k: Change depth where packages live -> need to fix relative references. Unrelated: Mixture between update scripts doing ./., or where the script lives.
      • @ash: Mix of update scripts, direct update or create file in /tmp
    • @ash: Other issue: Rearchitecting renders every PR conflicting, choose branch-off point, work with people doing formatting
    • @robert: Can be a gradual change,
    • @infinisil: Enforce new and updated packages to use new structure
    • @ash: Not a lot of bandwidth
    • @infinisil: If we can automate it, do it
    • @ash: Work with formatting, similar changes. Bring up in RFC 101
    • @ash: What do we do about package sets?
      • @infinisil: Don't touch it
        • @alex: Agreed
    • @infinisil: Allow files, e.g. pkgs/hello.nix?
      • @ash: No need to, more inconsistent
      • @j-k: Maybe very simple initially, but when you need another file lots of changes
    • @ash: How to deal with arguments? all-packages.nix only with overlays for packages that need it
      • @alex: That's what I did
      • @infinisil: Get rid of them when possible
      • @alex: setFunctionArgs in callPackage, leave it in function state before evaluating
      • @infinisil: overrides.nix file with e.g. hello = { glibc = null; }
  • @infinisil: @alex, take the stage
    • @alex: Took a lot of node packages at work and made them work better. There's a lot of conflicting package versions in node, contrary to nixpkgs (which I think is better). How to manage and refer to multiple versions. Tried groupBy with name and version, nested -> overlays complicated. Another attempt adding / between name and version, as a reserved character, "${pname}/${version}", latest version is latest. Another attempt: using two - to separate. In nixpkgs at least consistent suffixes would be great, various ways of doing things. In nixpkgs there's more control over package names. Tricky: If a user wants to define an override for e.g. 8 versions, it's hard to specify override for all versions.
      • @ash: I like the / idea
        • @alex: At first not a fan of it because it needs quoting in shell.
        • @ash: I can see it working well with auto-calling packages
        • @alex: To pin a package just add version specifier at the end.w
        • @alex: Easy to split by /
        • @infinisil: With auto-calling, / would correspond to a subdirectory
        • @ash: Needs good discovery, not any random file should be called
    • @infinisil: Feature sets, select major version only, pkgs.hello.version "with-gui"
      • @alex: Thought about this, had to deal with it. Had to deal with sem ver conditionals. If you really need a specific version an assert is great.
    • @ash: Multi-version packages could become a nixpkgs primitive, providing additional attrs providing consistency. Extend to multiple flavours of packages, ffmpeg, ffmpeg_full. Could be ffmpeg.version.full
      • @alex: Context in nixpkgs?
      • @infinisil:
      • @ash: wine inconsistencies in aliasing
      • @alex: Aliasing at the end, just for being able to reference them. Easily creates duplicates with multiple id
      • @infinisil: Aliases should be disallowed from overriding in nixpkgs? Somewhat doesn't work
    • @ash: Common pattern in multi-version packages: common.nix called multiple times internally by specific versions. Problem: common.nix is often not exposed, can't modify parts of it. If we invert it, common.nix having passthru, overrides could affect common.nix and all the versions it specifies.
      • @infinisil: Passthru with a builder for the package.
      • @alex: Baseline, but always swap out source
      • @infinisil: Relates to package builders and phases
    • @infinisil: @alex: groupBy can work? Needs overriding improvement
      • @alex: Can work. Would be cleaner for top-level organization. Have a type for package sets.
        • @infinisil: recurseIntoAttrs is similar
      • @alex: Aliases should be kept out of the mix. Mapping function over package set needs to not use all entries, e.g. aliases not

Jitsi Chat

pkgs = {
  foo = pkgs."foo/3.0.0";
  "foo/1.0.0" = ...;
  "foo/2.0.0" = ...;
  "foo/3.0.0" = ...;
} in pkgs
  • @jtojnar: Is is possible to inject those though? quotes do not seem to work ({ "foo/1.0" }: …) { "foo/1.0" = …; }