diff --git a/pkgs/applications/editors/emacs/elisp-packages/elpa-devel-packages.nix b/pkgs/applications/editors/emacs/elisp-packages/elpa-devel-packages.nix index 5744eaa4e5a1..0db019dddb5c 100644 --- a/pkgs/applications/editors/emacs/elisp-packages/elpa-devel-packages.nix +++ b/pkgs/applications/editors/emacs/elisp-packages/elpa-devel-packages.nix @@ -26,7 +26,7 @@ formats commits for you. self: let - inherit (import ./lib-override-helper.nix pkgs) + inherit (import ./lib-override-helper.nix pkgs lib) markBroken ; diff --git a/pkgs/applications/editors/emacs/elisp-packages/elpa-packages.nix b/pkgs/applications/editors/emacs/elisp-packages/elpa-packages.nix index d20a2249703b..64c05ba3154e 100644 --- a/pkgs/applications/editors/emacs/elisp-packages/elpa-packages.nix +++ b/pkgs/applications/editors/emacs/elisp-packages/elpa-packages.nix @@ -26,7 +26,7 @@ formats commits for you. self: let - inherit (import ./lib-override-helper.nix pkgs) + inherit (import ./lib-override-helper.nix pkgs lib) markBroken ; 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 fb1f412299f7..6eddcc2f9f75 100644 --- a/pkgs/applications/editors/emacs/elisp-packages/lib-override-helper.nix +++ b/pkgs/applications/editors/emacs/elisp-packages/lib-override-helper.nix @@ -1,6 +1,27 @@ -pkgs: +pkgs: lib: rec { + addPackageRequires = + pkg: packageRequires: addPackageRequiresWhen pkg packageRequires (finalAttrs: previousAttrs: true); + + addPackageRequiresIfOlder = + pkg: packageRequires: version: + addPackageRequiresWhen pkg packageRequires ( + finalAttrs: previousAttrs: lib.versionOlder finalAttrs.version version + ); + + addPackageRequiresWhen = + pkg: packageRequires: predicate: + pkg.overrideAttrs ( + finalAttrs: previousAttrs: { + packageRequires = + if predicate finalAttrs previousAttrs then + previousAttrs.packageRequires or [ ] ++ packageRequires + else + previousAttrs.packageRequires or null; + } + ); + buildWithGit = pkg: pkg.overrideAttrs (previousAttrs: { @@ -18,6 +39,34 @@ rec { fix-rtags = pkg: dontConfigure (externalSrc pkg pkgs.rtags); + fixRequireHelmCore = + pkg: + pkg.overrideAttrs (previousAttrs: { + postPatch = + previousAttrs.postPatch or "" + + "\n" + + '' + substituteInPlace $ename.el \ + --replace-fail "(require 'helm)" "(require 'helm-core)" + ''; + }); + + ignoreCompilationError = pkg: ignoreCompilationErrorWhen pkg (finalAttrs: previousAttrs: true); + + ignoreCompilationErrorIfOlder = + pkg: version: + ignoreCompilationErrorWhen pkg ( + finalAttrs: previousAttrs: lib.versionOlder finalAttrs.version version + ); + + ignoreCompilationErrorWhen = + pkg: predicate: + pkg.overrideAttrs ( + finalAttrs: previousAttrs: { + ignoreCompilationError = predicate finalAttrs previousAttrs; + } + ); + markBroken = pkg: pkg.overrideAttrs (previousAttrs: { @@ -26,13 +75,24 @@ rec { }; }); - mkHome = - pkg: - pkg.overrideAttrs (previousAttrs: { - preInstall = - '' - HOME=$(mktemp -d) - '' - + previousAttrs.preInstall or ""; - }); + mkHome = pkg: mkHomeWhen pkg (finalAttrs: previousAttrs: true); + + mkHomeIfOlder = + pkg: version: + mkHomeWhen pkg (finalAttrs: previousAttrs: lib.versionOlder finalAttrs.version version); + + mkHomeWhen = + pkg: predicate: + pkg.overrideAttrs ( + finalAttrs: previousAttrs: { + preInstall = + if predicate finalAttrs previousAttrs then + '' + HOME=$(mktemp -d) + '' + + previousAttrs.preInstall or "" + else + previousAttrs.preInstall or null; + } + ); } diff --git a/pkgs/applications/editors/emacs/elisp-packages/melpa-packages.nix b/pkgs/applications/editors/emacs/elisp-packages/melpa-packages.nix index d61d83bb5aaa..6b3e93aa9754 100644 --- a/pkgs/applications/editors/emacs/elisp-packages/melpa-packages.nix +++ b/pkgs/applications/editors/emacs/elisp-packages/melpa-packages.nix @@ -30,7 +30,7 @@ in { lib, pkgs }: variant: self: let - inherit (import ./lib-override-helper.nix pkgs) + inherit (import ./lib-override-helper.nix pkgs lib) buildWithGit dontConfigure externalSrc