Skip to content

Commit 9dc23a7

Browse files
committed
add runnableOnHydra field for run restrictions
1 parent d218e50 commit 9dc23a7

File tree

1 file changed

+18
-7
lines changed

1 file changed

+18
-7
lines changed

rfcs/0185-redistribute-redistributable.md

+18-7
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,13 @@ Especially when the software is still source-available even without being free s
2727
# Detailed design
2828
[design]: #detailed-design
2929

30-
Hydra will build all packages with licenses for which `redistributable = true`.
31-
It will still fail evaluation if the ISO image build or the Amazon AMIs were to contain unfree software.
30+
We will add a `runnableOnHydra` field on all licenses, that will be initially set to its `free` field, and set to `true` only for well-known licenses.
31+
32+
Hydra will build all packages with licenses for which `redistributable && runnableOnHydra`.
33+
It will still fail evaluation if the ISO image build or the Amazon AMIs were to contain any unfree software.
3234

3335
This will be done by evaluating Nixpkgs twice in `release.nix`.
34-
Once with `allowUnfree = false` like today, plus once with `allowlistedLicenses = builtins.filter (l: l.redistributable) lib.licenses`.
36+
Once with `allowUnfree = false` like today, plus once with `allowlistedLicenses = builtins.filter (l: l.redistributable && l.runnableOnHydra) lib.licenses`.
3537
Then, most of the jobs will be taken from the allowlisted nixpkgs, while only the builds destined for installation will be taken from the no-unfree nixpkgs.
3638

3739
The list of jobs destined for installation, that cannot contain unfree software is:
@@ -51,13 +53,13 @@ The list of jobs destined for installation, that cannot contain unfree software
5153
# Examples and Interactions
5254
[examples-and-interactions]: #examples-and-interactions
5355

54-
With these changes, here is what would happen as things currently stand.
55-
This is not meant to be indicative of what should happen or not, but indicative of what would happen.
56+
With these changes, here is what could happen as things currently stand, if the licenses were all to be marked `runnableOnHydra`.
57+
This is not meant to be indicative of what should happen or not, but indicative of what could happen.
5658
Each package's individual `license` field setup is left to its maintainers, and nixpkgs governance should conflict arise.
5759
This RFC does not mean to indicate that it is right or wrong, and is not the right place to discuss changes to this field.
5860
Should one have disagreements on any specific package in this list, please bring that up to that package's maintainers.
5961

60-
With this in mind, Hydra will start building, among others:
62+
With this in mind, Hydra could start building, among others:
6163
- CUDA
6264
- DragonflyDB
6365
- MongoDB
@@ -113,6 +115,14 @@ This is the current RFC.
113115

114116
This is quite obviously illegal, and thus not an option.
115117

118+
### Not having the `runnableOnHydra` field on licenses
119+
120+
This would make it impossible for Hydra to build them as things currently stand:
121+
Hydra would then risk actually running these packages within builds for other derivations (eg. NixOS tests).
122+
123+
This would thus only be compatible with changes to Hydra, that would allow to tag a package as not allowed to run, but only to redistribute.
124+
Such a change to Hydra would most likely be pretty invasive, and is thus left as future work.
125+
116126
# Prior art
117127
[prior-art]: #prior-art
118128

@@ -131,4 +141,5 @@ Also, I may have the wrong job name, as I tried to guess the correct job name fr
131141
# Future work
132142
[future]: #future-work
133143

134-
None.
144+
Modifying Hydra to allow building and redistributing packages that it is not legally allowed to run.
145+
This would be a follow-up project that is definitely not covered by this RFC due to its complexity, and would require a new RFC before implementation.

0 commit comments

Comments
 (0)