duckstation: revert removal and update to latest version#444821
duckstation: revert removal and update to latest version#444821matteo-pacini merged 3 commits intomasterfrom unknown repository
Conversation
|
@normalcea I wanted to raise a concern regarding the new license and how it applies to nixpkgs packaging. The upstream license has changed to CC BY-NC-ND 4.0, which is quite restrictive: ND (No Derivatives): prohibits distribution of modified versions. Packaging in nixpkgs usually involves patches, build system changes, or altered defaults, which could be considered derivative works. Even distributing compiled binaries might fall under this restriction. NC (NonCommercial): forbids use in commercial contexts, which is difficult to guarantee given that NixOS and nixpkgs are used in both personal and enterprise settings. BY (Attribution): requires clear attribution, which we’d need to ensure is satisfied. Given these restrictions, is it legally safe for nixpkgs to reintroduce this package? Please let me know if I am missing something here, or if there is a clear way for us to avoid a licence violation. |
fcafd1d to
92bdd04
Compare
|
Duckstation is one of its kind when it comes to licensing (putting it diplomatically), but I don't believe that it overall would prevent this PR from going through.
I've tried to keep the build system as close to upstream as possible (I've had the update script check for the exact revision of vendored dependencies for example). Patches may be an issue, but these patches don't change the functionality of the program nor is it enough of the original source code to count as a serious copyright violation in my opinion. I might see if dropping these patches could work (though cubeb/audio stops working if the unvendor patch is removed).
''
pushd ..
install -Dm644 LICENSE -t $out/share/doc/duckstation
install -Dm644 README.* -t $out/share/doc/duckstation
install -Dm644 CONTRIBUTORS.md -t $out/share/doc/duckstation
popd
''I've copied the above files into the output. Nixpkgs currently doesn't have a treewide policy on license attribution outside of the What is being submitted to nixpkgs is not duckstation but a derivation builder (licensed under MIT) to build duckstation as NixOS isn't a source distribution. Binary caches outside of nixpkgs distributing unfree software shouldn't be in our purview as the same argument can be had for other unfree software and the license violation would be on the admins of that particular cache. I think the main blocker for duckstation would be if the source fetcher is blocked (Duckstation stops being published publicly on GitHub) or the release tarballs are also blocked (say it's a special link you need a password to use). Other than that, I don't see why we can't distribute a derivation like so. |
|
As much as I’d like to see DuckStation available in nixpkgs, I’m concerned that CC-BY-NC-ND is a poor fit for our usual workflows. The ND clause in particular conflicts with common practices like patching, wrapping, and even distributing compiled outputs, while the NC clause creates uncertainty for many users. Marking the package as unfree or disabling Hydra doesn’t really address those underlying issues imho. My suggestion would be to keep this out of nixpkgs proper and instead maintain it as an external flake or overlay where users can opt in knowingly. If there’s strong interest in merging, I think it would need to be very minimal (no patches, local builds only). Looking forward to hearing what others think on the matter. |
|
I'd also like to hear other people's opinions on this (and I do wish there was more documentation on what to do this in this scenario) As an aside, I wouldn't be interested in writing a derivation for a pre-compiled binary of duckstation (distributed as an appimage) for nixpkgs if it were to come to that since it's a very trivial to do. |
92bdd04 to
97168b0
Compare
|
I've removed both patches, so we aren't including any part of the duckstation source code within nixpkgs. This means that cubeb support will be absent, but users can easily use the SDL backend (I've wrapped pipewire, pulseaudio and jack2). Edit: forgot alsa, added that in next force push. |
9b59d9c to
219c86b
Compare
|
Rebased and updated duckstation to tag v0.1-9669 given the new SDL3 3.2.22 bump and also modified the update script to match the new version (the pinned revisions for the vendored libraries are located in a different part of the project). |
Marking the package as unfree and not distributing it solves that. End users need to verify themselves if they comply with the license and we do not distribute anything falling under that license.
We have built instructions for software which require a bought commercial license which is way more restrictive.
How? hydra.nixos.org never builds unfree packages.
They don't need to be solved. That is an exercise for the end user. |
|
IANAL, but we're not distributing the software nor any derivative works right? The only thing we distribute is a "blueprint" text file of how you as the end user would go about making some changes if you were to download the software directly from the upstream distribution. It's up to the end user to actually realize those changes, and even then they are not breaking the license unless they go ahead and send someone their built binaries. As long as hydra does not build and distribute, I don't see any problem. |
048f894 to
faa2075
Compare
|
Re: @SuperSandro2000 I've applied all recommendations, thank you for reviewing. Re: @h7x4 I've removed all patches, so there's no portion of the duckstation's source code within nixpkgs which is a concern I also had. Packages like duckstation with complicating licenses were designed to deny source-based binary distributions. However, derivations should not apply since the software itself will not be distributed until the derivation is evaluated by a really existing Nix system. |
|
@SuperSandro2000 Thanks for clarifying — I didn’t mean to stall this; I just had some concerns about how best to proceed in this particular case. I’m happy to approve the PR. |
faa2075 to
315d0f5
Compare
|
@normalcea is this good to go? |
|
|
Yeah, I just fixed a typo where a call to the new cli was not prefixed with Though if anyone wants to put themselves as co-maintainer I would really appreciate it. There are still some TODOs like removing the shaderc |
|
@normalcea feel free to add me, happy to help. |
315d0f5 to
58d0454
Compare
|
Added |
|
This reverts commit 25f51e7. added back in NixOS/nixpkgs#444821
Reverts #430501 and updates duckstation to the latest release with the license change. Since NixOS is not a binary distribution, we aren't infringing on the new license as we set it to
lib.licenses.unfreein its meta attributes.This also removes the
duckstation-binpackage as its merged intoduckstationfor darwin users and there is a release note and alias to account for this.I tried to avoid introducing more usage of
overrideAttrsbut it is done for shaderc since I am stumped on how to migrate the duckstation patches over.The git variables patch was dropped to make the source derivation simpler and it's not a required feature.
If the old maintainers wish to re-maintain this package and suggest changes they are welcomed to do so.
Things done
passthru.tests.nixpkgs-reviewon this PR. See nixpkgs-review usage../result/bin/.Add a 👍 reaction to pull requests you find important.