-
-
Notifications
You must be signed in to change notification settings - Fork 17.9k
Open
Labels
0.kind: questionRequests for a specific question to be answeredRequests for a specific question to be answered1.severity: legalThis PR or issue raises or fixes a legal issue, e.g. licensing complianceThis PR or issue raises or fixes a legal issue, e.g. licensing compliance1.severity: significantNovel ideas, large API changes, notable refactorings, issues with RFC potential, etc.Novel ideas, large API changes, notable refactorings, issues with RFC potential, etc.6.topic: policy discussionDiscuss policies to work in and around NixpkgsDiscuss policies to work in and around Nixpkgs9.needs: community feedbackThis needs feedback from more community members.This needs feedback from more community members.
Description
Issue description
With the recent advent of Duckstation changing its license, some issues were raised about how Nixpkgs should deal with licensing compliance.
References
Duckstation licensing issue: #341915
Metadata
Metadata
Assignees
Labels
0.kind: questionRequests for a specific question to be answeredRequests for a specific question to be answered1.severity: legalThis PR or issue raises or fixes a legal issue, e.g. licensing complianceThis PR or issue raises or fixes a legal issue, e.g. licensing compliance1.severity: significantNovel ideas, large API changes, notable refactorings, issues with RFC potential, etc.Novel ideas, large API changes, notable refactorings, issues with RFC potential, etc.6.topic: policy discussionDiscuss policies to work in and around NixpkgsDiscuss policies to work in and around Nixpkgs9.needs: community feedbackThis needs feedback from more community members.This needs feedback from more community members.
Type
Projects
Milestone
Relationships
Development
Select code repository
Activity
Atemu commentedon Sep 18, 2024
I see two low hanging fruits:
Beyond these, we should look into manually marking packages that do not offer such flags by i.e. inserting a
© Nixpkgs contributorsinto the license text which the program displays to users. (The GPL requires interactive programs to do this. If it doesn't, I think we can assume the author doesn't care about following the GPL extremely strictly.)This is quite a bit more work, so I think the best course of action is to only do this when prompted to (i.e. upstream requests us to do it) or if it is conceivable that it might upset upstream if we don't. Most upstreams are pretty chill about this sort of thing but some aren't and it's those cases I think we should focus on. Duckstation is a good example.
AndersonTorres commentedon Sep 18, 2024
In case of 1, I still prefer a separate output for this, at least by the typical rationale we provide for splitting outputs in the Nixpkgs manual.
Further, I have some conceptual concerns. Maybe it is too much perfectionism from my side, but oh well.
First, license metadata should be provided for all inputs of an expression - sources, patches, our own machinery etc.
Second, we should have something like a mathematical function that receives all the input above and output the appropriate course of action - things like "GPL requires interactive programs to display some info; create a compliance wrapper that accepts a --print-meta flag".
Third:
According to the manual,
metaandpassthrucan't rebuild the expression.However, some programs require further action according to their licensing info.
emilazy commentedon Sep 18, 2024
I’m unconvinced that a separate output is sufficient for compliance, or that making every package multi‐output would be well‐received. In fact I suspect that we may be obligated to include the licence and copyright notice in all outputs.
We also cannot just copy template licence files, because the copyright notice differs between packages and must also be retained.
IIRC the interactive program thing doesn’t matter unless we apply patches, thankfully, and GPLv3 loosens the requirement further.
I think that the lowest‐hanging fruit to pick here would be to add code to stdenv that tries to automatically find and copy
LICENSEandCOPYINGfiles. That won’t get us into full compliance by any means, but it will be a good start. We should also investigate the various automated SPDX/SBOM tools that could help with this kind of thing.JohnRTitor commentedon Sep 18, 2024
Patches from what exactly? Made by us/third party contributors or cherry-picked from upstream?
emilazy commentedon Sep 18, 2024
I was wrong; even the GPLv2 has the exception that means we don’t really have to care about it.
emilazy commentedon Sep 18, 2024
BTW, I think that encoding full SPDX expressions in
meta.licenseis probably a prerequisite to doing anything at all fancy here beyond my stdenv suggestion.AndersonTorres commentedon Sep 18, 2024
Disclaimer: IANAL yet.
Among the reason we split outputs, is saving some bytes and finer garbage-collection.
The location of the files in the filesystem does not look relevant, in the worst case we can just symlink them and/or force the installation of
prog.licensesoutput.Well, we can add a
installLicense {licenseFiles}function toinstallShellFiles.On the other hand I am not a fan of hidden automation.
Pandapip1 commentedon Nov 2, 2024
How about, as a minimum, we set the machine-readable copyright information licenses information to
$outputDoc/copyright, and have acommon-licensespackages that can be symlinked to?nyabinary commentedon Nov 3, 2024
23 remaining items
LuNeder commentedon Feb 1, 2026
To my best knowledge this has zero legal value if you're not directly distributing their files or editing them. Nothing can stop you from making a software completely separate from theirs (aka nix) that happens to download their software directly from them and interact (install/patch) with it.
Even if you didn't want to patch the nixos block, you can just unset the relevant environment variables before you build it and maybe figure out a way to provide a fake /etc/os-release.
That said, even if I like the idea of making assholes angry, I personally believe people like this and their software do not deserve your time at all...
Notarin commentedon Feb 1, 2026
+1. I was debating posting this.
a derivation is a recipe, instructions. The same thing as sending a PDF on discord on how to download a piece of software. So long as marked unfree it is never cached, therefore never packaged. the only time it is packaged is when a user builds it themselves. and in that case, the enduser is responsible for their actions.
Notarin commentedon Feb 1, 2026
Also yeah, reading some of these commits, this person is rather actively hostile, they are removing linux support entirely because apparently bug reports have infuriated them to that point.
This is not worth writing a derivation for just for it to vanish in a few days. Nor honestly should you want to use a piece of software with a developer who clearly does not like you.
My personal guess is they are a primarily windows user, and are frustrated by the fact Linux is different, and in their frustration are making a bit of a show and slandering the community a bit, and pulling support. Which, fine, sure, they're probably just frustrated. Not cool, but humans are humans.
My advice is to just get ahead of the blow and headcanon it as windows software and move on.
VeilSilence commentedon Feb 1, 2026
Despite is this "legal" or not, I personally think that we should "respect" this decision noneless.
We can just ship appimage and mark unfree and that's it.
Notarin commentedon Feb 3, 2026
Correct me if I am wrong, but appimages still require patching. Which is by far illegal in this instance.
Eveeifyeve commentedon Feb 3, 2026
We are not lawyers at the end of that day, so we are not too sure if this is legal or not. So please just stop providing advice if your not qualified, your just making the situation complex and argumentive without being sure if it's right or wrong.
Notarin commentedon Feb 3, 2026
I am sorry for cautioning that illegally patching binaries is illegal.
I withdraw my advice to refrain from shipping this. By all means, disrespect the upstream maintainers wishes, illegally patch their software, and ship support for a deadend project (for linux).
Advising to respect the upstream maintainers wishes and not repackage their software was only making the situation complex and argumentative, as @Eveeifyeve pointed out, I am sorry.
VeilSilence commentedon Feb 3, 2026
Quick download, then
appimage-run, and indeed, duckstation just crashed at game start.Details
Notarin commentedon Feb 3, 2026
@VeilSilence Try this
PaulGrandperrin commentedon Feb 3, 2026
@Notarin
IANAL but I'm pretty sure that locally patching a binary:
And more importantly, the idea is not to modify and redistribute duckstation ourselves, but to publish a recipe that does it on the end user's computer automatically.
EDIT:
See section (f) of https://www.law.cornell.edu/uscode/text/17/1201
VeilSilence commentedon Feb 3, 2026
Alas, same error.
Tried to package like this:
Details
Now I have this error:
So, from my limited knowledge and understanding, patching is required indeed..
PaulGrandperrin commentedon Feb 3, 2026
@Notarin In the end, the issues are mostly on the side of duckstation's author because as far as I can see, there's no legal way to forbid a user from patching a program to make it compatible with his computer.
The law is really explicitly on our side in this specific use case.
Notarin commentedon Feb 3, 2026
That is correct. I meant patching serverside. I originally missed the "unfree" bit. But yeah, this is mostly what I was saying here.
Publishing "instructions" is very strictly not distribution of the software, and policing such a thing is not possible, or even remotely reasonable, and if it was, it would be incredibly dystopic.
But, I do remain on the stance there is no point in supporting software that will cease upstream support any second. It may even happen today.
I just don't see a point in updating this in nixpkgs when there are alternatives and upstream is cutting us off any second now. imo another repo is a far better place for that.
Also it is usually a good idea to respect an upstream maintainers wishes, even if they are an arse about it, and they prefer the source of their software to be their web portal.
SuperSamus commentedon Feb 3, 2026
Works out of the box on my end...
Maybe because I have
programs.nix-ld.enable = true?The error message points to issues with Vulkan, so maybe this solves it? (Throwing the idea randomly.)
Otherwise, maybe try the OpenGL rendering backend?
PaulGrandperrin commentedon Feb 3, 2026
@Notarin I agree with your points, but yeah I just wanted to say that we could really do whatever we wanted and we would even be protected by law :)