Hi everyone!
In light of the recent discussion surrounding telemetry in nixpkgs, I thought it best to start drafting a pre-RFC to discuss the possibility of a new meta
attribute as a solution and work out the details before submitting it as a PR.
I have left some fields without detail as I think they might not be necessary or we can either come consensus here.
Summary
Collect and maintain a new meta
attribute in packages allowing users to easily identify and manage their preference for packages that collect telemetry.
Motivation
Different users have different expectations from a software distribution.
We acknowledge that much with the collection of license information and the existence of the allowUnfree
nixpkgs option, much as Debian maintains a separate -nonfree
repository.
Similarly, there are a number of different reasons users may have to disfavour packages that collect telemetry:
- Privacy Concerns – Users may not want their personal data, usage patterns, or system information shared with a third party.
- Security Risks – Sending data to external servers could expose them to potential data breaches or interception.
- Lack of Transparency – Many software vendors do not clearly explain what data is collected, how it is used, or whether it is shared with third parties.
- Performance Impact – Telemetry collection may introduce additional resource usage, affecting system performance, network bandwidth, or battery life.
- Regulatory Compliance – Organizations handling sensitive data may need to restrict telemetry collection to comply with privacy laws or industry regulations (e.g., GDPR, HIPAA).
Detailed design
For packages that collect telemetry, add a new meta
attribute, collectsTelemetry
.
The value of this attribute would be a boolean.
Packages that do not specify this attribute can be left as-is with the assumption that a missing attribute being the equivalent of collectsTelemetry = false
.
Add a mechanism to allow .nixpkgs/config.nix
to specify allowTelemetry = true
to allow use of these packages in a similar manner to allowUnfree
.
An allowTelemetryPredicate
parameter would allow the distinction to be customized in the same way that allowUnfreePredicate
does.
Add the required logic to pkgs/stdenv/generic/check-meta.nix
to check the validity of the meta
attribute at evaluation time.
Examples and Interactions
TBD from discussions.
Drawbacks
TBD from discussions. (not sure this is necessary)
Alternatives
Patching packages to disable telemetry is a possible alternative, but this likely will require significantly more effort on the part of the package maintainer compared to adding a meta attribute if it is at all possible.
Prior art
The unfree license meta attribute.
The fromSource
meta attribute introduced in RFC 0089.
Unresolved questions
TBD from discussions. (not sure this is necessary)
Future work
Packages that are known to collect telemetry must be updated with the new meta attribute.