anvil-editor: init at 0.4
[NixPkgs.git] / pkgs / applications / editors / emacs / elisp-packages / lib-override-helper.nix
blob6eddcc2f9f758e30719f8dbc1a4708acde46535f
1 pkgs: lib:
3 rec {
4   addPackageRequires =
5     pkg: packageRequires: addPackageRequiresWhen pkg packageRequires (finalAttrs: previousAttrs: true);
7   addPackageRequiresIfOlder =
8     pkg: packageRequires: version:
9     addPackageRequiresWhen pkg packageRequires (
10       finalAttrs: previousAttrs: lib.versionOlder finalAttrs.version version
11     );
13   addPackageRequiresWhen =
14     pkg: packageRequires: predicate:
15     pkg.overrideAttrs (
16       finalAttrs: previousAttrs: {
17         packageRequires =
18           if predicate finalAttrs previousAttrs then
19             previousAttrs.packageRequires or [ ] ++ packageRequires
20           else
21             previousAttrs.packageRequires or null;
22       }
23     );
25   buildWithGit =
26     pkg:
27     pkg.overrideAttrs (previousAttrs: {
28       nativeBuildInputs = previousAttrs.nativeBuildInputs or [ ] ++ [ pkgs.git ];
29     });
31   dontConfigure = pkg: pkg.overrideAttrs { dontConfigure = true; };
33   externalSrc =
34     pkg: epkg:
35     pkg.overrideAttrs (previousAttrs: {
36       inherit (epkg) src version;
37       propagatedUserEnvPkgs = previousAttrs.propagatedUserEnvPkgs or [ ] ++ [ epkg ];
38     });
40   fix-rtags = pkg: dontConfigure (externalSrc pkg pkgs.rtags);
42   fixRequireHelmCore =
43     pkg:
44     pkg.overrideAttrs (previousAttrs: {
45       postPatch =
46         previousAttrs.postPatch or ""
47         + "\n"
48         + ''
49           substituteInPlace $ename.el \
50             --replace-fail "(require 'helm)" "(require 'helm-core)"
51         '';
52     });
54   ignoreCompilationError = pkg: ignoreCompilationErrorWhen pkg (finalAttrs: previousAttrs: true);
56   ignoreCompilationErrorIfOlder =
57     pkg: version:
58     ignoreCompilationErrorWhen pkg (
59       finalAttrs: previousAttrs: lib.versionOlder finalAttrs.version version
60     );
62   ignoreCompilationErrorWhen =
63     pkg: predicate:
64     pkg.overrideAttrs (
65       finalAttrs: previousAttrs: {
66         ignoreCompilationError = predicate finalAttrs previousAttrs;
67       }
68     );
70   markBroken =
71     pkg:
72     pkg.overrideAttrs (previousAttrs: {
73       meta = previousAttrs.meta or { } // {
74         broken = true;
75       };
76     });
78   mkHome = pkg: mkHomeWhen pkg (finalAttrs: previousAttrs: true);
80   mkHomeIfOlder =
81     pkg: version:
82     mkHomeWhen pkg (finalAttrs: previousAttrs: lib.versionOlder finalAttrs.version version);
84   mkHomeWhen =
85     pkg: predicate:
86     pkg.overrideAttrs (
87       finalAttrs: previousAttrs: {
88         preInstall =
89           if predicate finalAttrs previousAttrs then
90             ''
91               HOME=$(mktemp -d)
92             ''
93             + previousAttrs.preInstall or ""
94           else
95             previousAttrs.preInstall or null;
96       }
97     );