Skip to content

Triage and break up the global settings #5638

@Ericson2314

Description

@Ericson2314

Thinking through #5603, and the two getDefaultSystemFeatures reminded me of this:

  1. We have many global settings that should be per-store. thisSytem and extraPlatforms are good examples. This works best after Split Store class #5729 so that we don't pollute stores like HttpBinaryCacheStore with these new per-store options that don't make sense for them.

  2. We have too much ad-hoc logic around build remotes that should be fixed up to use per-store settings instead, as we did before with system features in 4720853

    • We should probably make stores that can build a subclass of stores that just are read/written. Then we don't have to do silly things like say what "extraPlatforms" s3://... has.
  3. Separate stores for evaluation, building and storing the result #5025 (comment) remains a very good idea. Then many of the remaining settings which aren't per-store would make sense as an additional config parameter to this now-freestanding (not Store method) function.

  4. Finally, there may be global settings that are for the libstore layer at all, and they can be moved to another downstream library.

Metadata

Metadata

Assignees

Labels

UXThe way in which users interact with Nix. Higher level than UI.contributor-experienceDeveloper experience for Nix contributorsnew-cliRelating to the "nix" commandsettingsSettings, global flags, nix.conf

Type

No type

Projects

Status

Defined work

Relationships

None yet

Development

No branches or pull requests

Issue actions