blob: c5ff178c1097187b6688732c05e6bc3bc30ed2b2 (
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
self: super:
let
mkExDrv = emacsPackages: name: args: let
repoMeta = super.lib.importJSON (./repos/exwm/. + "/${name}.json");
in emacsPackages.melpaBuild (args // {
pname = name;
ename = name;
version = repoMeta.version;
recipe = builtins.toFile "recipe" ''
(${name} :fetcher github
:repo "ch11ng/${name}")
'';
src = super.fetchFromGitHub {
owner = "ch11ng";
repo = name;
inherit (repoMeta) rev sha256;
};
});
emacsGit = let
repoMeta = super.lib.importJSON ./repos/emacs/emacs-master.json;
in (self.emacs.override { srcRepo = true; }).overrideAttrs(old: {
name = "emacs-git-${repoMeta.version}";
inherit (repoMeta) version;
src = super.fetchFromGitHub {
owner = "emacs-mirror";
repo = "emacs";
inherit (repoMeta) sha256 rev;
};
buildInputs = old.buildInputs ++ [ super.jansson ];
patches = [
./patches/tramp-detect-wrapped-gvfsd.patch
./patches/clean-env.patch
];
});
emacsUnstable = let
repoMeta = super.lib.importJSON ./repos/emacs/emacs-unstable.json;
in (self.emacs.override { srcRepo = true; }).overrideAttrs(old: {
name = repoMeta.version;
inherit (repoMeta) version;
src = super.fetchFromGitHub {
owner = "emacs-mirror";
repo = "emacs";
inherit (repoMeta) sha256 rev;
};
buildInputs = old.buildInputs ++ [ super.jansson ];
patches = [
./patches/tramp-detect-wrapped-gvfsd-27.patch
./patches/clean-env.patch
];
});
in {
inherit emacsGit emacsUnstable;
emacsGit-nox = ((emacsGit.override {
withX = false;
withGTK2 = false;
withGTK3 = false;
}).overrideAttrs(oa: {
name = "${oa.name}-nox";
}));
emacsUnstable-nox = ((emacsUnstable.override {
withX = false;
withGTK2 = false;
withGTK3 = false;
}).overrideAttrs(oa: {
name = "${oa.name}-nox";
}));
emacsWithPackagesFromUsePackage = import ./elisp.nix { pkgs = self; };
emacsPackagesFor = emacs: (
(super.emacsPackagesFor emacs).overrideScope'(eself: esuper: let
melpaStablePackages = esuper.melpaStablePackages.override {
archiveJson = ./repos/melpa/recipes-archive-melpa.json;
};
melpaPackages = esuper.melpaPackages.override {
archiveJson = ./repos/melpa/recipes-archive-melpa.json;
};
elpaPackages = esuper.elpaPackages.override {
generated = ./repos/elpa/elpa-generated.nix;
};
# Note: Org generation is currently failing (probably a bug in emacs2nix)
# Comment this out when a fix has reached unstable
# orgPackages = esuper.orgPackages.override {
# generated = ./repos/org/org-packages.nix
# }
epkgs = esuper.override {
inherit melpaStablePackages melpaPackages elpaPackages;
};
in epkgs // {
xelb = mkExDrv eself "xelb" {
packageRequires = [ eself.cl-generic eself.emacs ];
};
exwm = mkExDrv eself "exwm" {
packageRequires = [ eself.xelb ];
};
}));
}
|