From 17cb17c7009b030aef05ac855f6e85d2a6cfce76 Mon Sep 17 00:00:00 2001 From: Marien Zwart Date: Fri, 17 Oct 2025 20:55:50 +1100 Subject: [PATCH] emacsPackages: don't set attributes to null Depending on the version of the package from MELPA, nixpkgs can set attributes like `preBuild` or `patches` to `null`. `mkDerivation` filters out `null`, so this has the desirable effect of not unnecessarily changing the actual derivation. But it is inconvenient when using `overrideAttrs`: it breaks the common pattern of `(previousAttrs.preBuild or "") + ''...''` (also used elsewhere in the files this commit changes), which will fail to coerce `null` to a string or list to append to. Fix this everywhere attributes are set to null, by defaulting to `""` or `[ ]` instead. We cannot set the attribute conditionally, because the attributes names returned by `overrideAttrs` cannot depend on `finalAttrs` (only the values can). This changes some helpers that are (indirectly) used by several packages, but that part of the change is effectively a noop, because the attributes involved are always set (either by the helper or on the original derivation). --- .../emacs/elisp-packages/elpa-common-overrides.nix | 4 ++-- .../emacs/elisp-packages/lib-override-helper.nix | 4 ++-- .../emacs/elisp-packages/melpa-packages.nix | 14 +++++++------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/pkgs/applications/editors/emacs/elisp-packages/elpa-common-overrides.nix b/pkgs/applications/editors/emacs/elisp-packages/elpa-common-overrides.nix index 333465e93c29..9a473c284415 100644 --- a/pkgs/applications/editors/emacs/elisp-packages/elpa-common-overrides.nix +++ b/pkgs/applications/editors/emacs/elisp-packages/elpa-common-overrides.nix @@ -116,7 +116,7 @@ in }) ] else - previousAttrs.patches or null; + previousAttrs.patches or [ ]; preBuild = if applyOrgRoamMissingPatch then previousAttrs.preBuild or "" @@ -129,7 +129,7 @@ in popd '' else - previousAttrs.preBuild or null; + previousAttrs.preBuild or ""; } ); diff --git a/pkgs/applications/editors/emacs/elisp-packages/lib-override-helper.nix b/pkgs/applications/editors/emacs/elisp-packages/lib-override-helper.nix index 0d44878b480c..91a20bd3647e 100644 --- a/pkgs/applications/editors/emacs/elisp-packages/lib-override-helper.nix +++ b/pkgs/applications/editors/emacs/elisp-packages/lib-override-helper.nix @@ -18,7 +18,7 @@ rec { if predicate finalAttrs previousAttrs then previousAttrs.packageRequires or [ ] ++ packageRequires else - previousAttrs.packageRequires or null; + previousAttrs.packageRequires or [ ]; } ); @@ -89,7 +89,7 @@ rec { if predicate finalAttrs previousAttrs then previousAttrs.nativeBuildInputs or [ ] ++ [ pkgs.writableTmpDirAsHomeHook ] else - previousAttrs.nativeBuildInputs or null; + previousAttrs.nativeBuildInputs or [ ]; } ); } diff --git a/pkgs/applications/editors/emacs/elisp-packages/melpa-packages.nix b/pkgs/applications/editors/emacs/elisp-packages/melpa-packages.nix index 982ff9759066..038cc7024b6e 100644 --- a/pkgs/applications/editors/emacs/elisp-packages/melpa-packages.nix +++ b/pkgs/applications/editors/emacs/elisp-packages/melpa-packages.nix @@ -830,7 +830,7 @@ let rm --recursive --verbose etc/elisp/screenshot '' else - previousAttrs.preBuild or null; + previousAttrs.preBuild or ""; } ); @@ -991,7 +991,7 @@ let }) ] else - previousAttrs.patches or null; + previousAttrs.patches or [ ]; } ) ); @@ -1055,7 +1055,7 @@ let '' + previousAttrs.preBuild or "" else - previousAttrs.preBuild or null; + previousAttrs.preBuild or ""; } ); @@ -1221,7 +1221,7 @@ let rm --verbose packages/javascript/test-suppport.el '' else - previousAttrs.preBuild or null; + previousAttrs.preBuild or ""; } ); @@ -1392,7 +1392,7 @@ let }) ] else - previousAttrs.patches or null; + previousAttrs.patches or [ ]; } ); @@ -1543,7 +1543,7 @@ let }) ] else - previousAttrs.patches or null; + previousAttrs.patches or [ ]; } ); @@ -1561,7 +1561,7 @@ let '' + previousAttrs.preBuild or "" else - previousAttrs.preBuild or null; + previousAttrs.preBuild or ""; } );