blob: 82f1c6bfaaae810a3ca76f345eae0df0b03c0bd7 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
/*
# Updating
To update the list of packages from ELPA,
1. Run `./update-elpa-devel`.
2. Check for evaluation errors:
# "../../../../../" points to the default.nix from root of Nixpkgs tree
env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate ../../../../../ -A emacs.pkgs.elpaDevelPackages
3. Run `git commit -m "elpa-devel-packages $(date -Idate)" -- elpa-devel-generated.nix`
## Update from overlay
Alternatively, run the following command:
./update-from-overlay
It will update both melpa and elpa packages using
https://github.com/nix-community/emacs-overlay. It's almost instantenous and
formats commits for you.
*/
{ lib, stdenv, texinfo, writeText, gcc, pkgs, buildPackages }:
self: let
markBroken = pkg: pkg.override {
elpaBuild = args: self.elpaBuild (args // {
meta = (args.meta or {}) // { broken = true; };
});
};
elpaBuild = import ../../../../build-support/emacs/elpa.nix {
inherit lib stdenv texinfo writeText gcc;
inherit (self) emacs;
};
# Use custom elpa url fetcher with fallback/uncompress
fetchurl = buildPackages.callPackage ./fetchelpa.nix { };
generateElpa = lib.makeOverridable ({
generated ? ./elpa-devel-generated.nix
}: let
imported = import generated {
callPackage = pkgs: args: self.callPackage pkgs (args // {
inherit fetchurl;
});
};
super = removeAttrs imported [ "dash" ];
overrides = {
eglot = super.eglot.overrideAttrs (old: {
postInstall = (old.postInstall or "") + ''
local info_file=eglot.info
pushd $out/share/emacs/site-lisp/elpa/eglot-*
# specify output info file to override the one defined in eglot.texi
makeinfo --output=$info_file eglot.texi
install-info $info_file dir
popd
'';
});
xeft = super.xeft.overrideAttrs (old: let
libExt = pkgs.stdenv.targetPlatform.extensions.sharedLibrary;
in {
dontUnpack = false;
buildInputs = (old.buildInputs or [ ]) ++ [ pkgs.xapian ];
buildPhase = (old.buildPhase or "") + ''
$CXX -shared -o xapian-lite${libExt} xapian-lite.cc $NIX_CFLAGS_COMPILE -lxapian
'';
postInstall = (old.postInstall or "") + "\n" + ''
outd=$out/share/emacs/site-lisp/elpa/xeft-*
install -m444 -t $outd xapian-lite${libExt}
rm $outd/xapian-lite.cc $outd/emacs-module.h $outd/emacs-module-prelude.h $outd/demo.gif $outd/Makefile
'';
});
};
elpaDevelPackages = super // overrides;
in elpaDevelPackages // { inherit elpaBuild; });
in generateElpa { }
|