diff options
| author | Someone <else@someonex.net> | 2024-07-24 04:26:37 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-24 04:26:37 +0300 |
| commit | 03b1a46b7de666f3c63c99edd601aff33f0181de (patch) | |
| tree | 9b36ee60d42490611ebadcecf59457e0afbcf266 /lib/licenses.nix | |
| parent | Merge pull request #329371 from r-ryantm/auto-update/python312Packages.unstru... (diff) | |
| parent | lib.licenses: refactor internal mkLicense to avoid future typo bugs (diff) | |
| download | nixpkgs-03b1a46b7de666f3c63c99edd601aff33f0181de.tar.gz | |
Merge pull request #325384 from adisbladis/lib-licenses-factory-func
lib.licenses: refactor internal mkLicense to avoid future typo bugs
Diffstat (limited to 'lib/licenses.nix')
| -rw-r--r-- | lib/licenses.nix | 40 |
1 files changed, 22 insertions, 18 deletions
diff --git a/lib/licenses.nix b/lib/licenses.nix index eef9c6706886..16d0a7df101f 100644 --- a/lib/licenses.nix +++ b/lib/licenses.nix @@ -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. |
