summaryrefslogtreecommitdiff
path: root/lib/licenses.nix
diff options
context:
space:
mode:
authorSomeone <else@someonex.net>2024-07-24 04:26:37 +0300
committerGitHub <noreply@github.com>2024-07-24 04:26:37 +0300
commit03b1a46b7de666f3c63c99edd601aff33f0181de (patch)
tree9b36ee60d42490611ebadcecf59457e0afbcf266 /lib/licenses.nix
parentMerge pull request #329371 from r-ryantm/auto-update/python312Packages.unstru... (diff)
parentlib.licenses: refactor internal mkLicense to avoid future typo bugs (diff)
downloadnixpkgs-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.nix40
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.