emacsPackages: add more override helpers

- addPackageRequires
- addPackageRequiresIfOlder
- addPackageRequiresWhen
- fixRequireHelmCore
- ignoreCompilationError
- ignoreCompilationErrorIfOlder
- ignoreCompilationErrorWhen
- mkHomeIfOlder
- mkHomeWhen
This commit is contained in:
Lin Jian
2024-09-23 14:54:07 +08:00
parent 466727b821
commit 656c68d654
4 changed files with 73 additions and 13 deletions
@@ -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
;
@@ -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
;
@@ -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;
}
);
}
@@ -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