mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-22 06:53:01 +00:00
lib.licenses: refactor internal mkLicense to avoid future typo bugs
This is a follow-up to https://github.com/NixOS/nixpkgs/pull/325380 where @emilazy discovered that we have some typos in field names. This refactoring wraps the implicit lib.licenses schema up in a factory function to ensure consistency. While a more proper type checker like the one we use for meta checks would be better I didn't want to depend on that in more places. In fact, we might want to make meta type checks more strict on the license field.
This commit is contained in:
parent
3cad140b1a
commit
b85639c589
@ -1,25 +1,29 @@
|
||||
{ lib }:
|
||||
let
|
||||
inherit (lib) optionalAttrs;
|
||||
|
||||
lib.mapAttrs (lname: lset: let
|
||||
defaultLicense = {
|
||||
shortName = lname;
|
||||
free = true; # Most of our licenses are Free, explicitly declare unfree additions as such!
|
||||
deprecated = false;
|
||||
mkLicense = lname: {
|
||||
shortName ? lname,
|
||||
# Most of our licenses are Free, explicitly declare unfree additions as such!
|
||||
free ? true,
|
||||
deprecated ? false,
|
||||
spdxId ? null,
|
||||
url ? null,
|
||||
fullName ? null,
|
||||
redistributable ? free
|
||||
}@attrs: {
|
||||
inherit shortName free deprecated redistributable;
|
||||
} // optionalAttrs (attrs ? spdxId) {
|
||||
inherit spdxId;
|
||||
url = "https://spdx.org/licenses/${spdxId}.html";
|
||||
} // optionalAttrs (attrs ? url) {
|
||||
inherit url;
|
||||
} // optionalAttrs (attrs ? fullName) {
|
||||
inherit fullName;
|
||||
};
|
||||
|
||||
mkLicense = licenseDeclaration: let
|
||||
applyDefaults = license: defaultLicense // license;
|
||||
applySpdx = license:
|
||||
if license ? spdxId
|
||||
then license // { url = "https://spdx.org/licenses/${license.spdxId}.html"; }
|
||||
else license;
|
||||
applyRedistributable = license: { redistributable = license.free; } // license;
|
||||
in lib.pipe licenseDeclaration [
|
||||
applyDefaults
|
||||
applySpdx
|
||||
applyRedistributable
|
||||
];
|
||||
in mkLicense lset) ({
|
||||
in
|
||||
lib.mapAttrs mkLicense ({
|
||||
/* License identifiers from spdx.org where possible.
|
||||
* If you cannot find your license here, then look for a similar license or
|
||||
* add it to this list. The URL mentioned above is a good source for inspiration.
|
||||
|
Loading…
Reference in New Issue
Block a user