Rethink //third_party
layout
Some current pain points & criticism received:
- some people like the exposed packages list, some people strongly don't. It probably doesn't really serve a purpose right now.
- people use an escape hatch for their own systems anyways and access the full package set
- we have no consistent way of applying overlays to a package set
=> We don't have a consistent nixpkgs.
We could try something else, for example (my suggestion):
- break the third_party ~= nixpkgs assumption
- move nixpkgs import to third_party.nixpkgs, and third_party.nixpkgsStable
- introduce //third_party/overlays (which of course receives the fixpoint), and apply all top-level keys from it as overlays on the imported package set (if we can do this without infinite recursion)
- modify the readTree parameter set to pass
pkgs = third_party.nixpkgs
- unexpose
third_party.nixpkgsSrc
etc.
Discussions & suggestions welcome!
- tazjin changed the subject of this issue from "Rethink //third_party layout" to "Rethink `//third_party` layout" at 2021-04-09T10·00+00
introduce //third_party/overlays (which of course receives the fixpoint), and apply all top-level keys from it as overlays on the imported package set (if we can do this without infinite recursion)
Note that we will have to have //third_party/overlays/default.nix evaluate to a list which is maintained manually as order of application does matter for overlays.
Also another suggestion: While we're introducing overlays we should definitely get rid of the stuff exposed as third_party.originals which are only exposed to be overridden which is just essentially a hack to replace overlays (without the benefit of actually joining the nixpkgs fixpoint).
break the third_party ~= nixpkgs assumption
One issue I see with this is subtree'd 3p software: If we have a distinction between third_party and third_party.nixpkgs we'll have multiple versions of git, cgit etc. in our closure potentially since people will forget to take something from third_party instead of pkgs.
The ways out of this I could think of:
- Adding our custom third_party stuff to overlays, but then the third_party attribute will probably only be useful as a convenience shortcut.
- Keep the exposed list to prevent people from accidentally using stuff from pkgs we have in third_party.
sterni at 2021-04-09T19·10+00
Implemented in https://cl.tvl.fyi/c/depot/+/2910
tazjin at 2021-04-10T21·19+00
- tazjin closed this issue at 2021-04-10T21·19+00