forked from nix-community/emacs-overlay
-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathpackreq.nix
32 lines (31 loc) · 850 Bytes
/
packreq.nix
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
/*
Parse an emacs package file to derive packages from
Package-Requires declarations.
*/
{ pkgs }:
let
parse = pkgs.callPackage ./parse.nix { };
in
{
packageElisp,
extraEmacsPackages ? epkgs: [ ],
package ? pkgs.emacs-unstable,
override ? (self: super: { }),
}:
let
packages = parse.parsePackagesFromPackageRequires packageElisp;
emacsPackages = (pkgs.emacsPackagesFor package).overrideScope (
self: super:
# for backward compatibility: override was a function with one parameter
if builtins.isFunction (override super) then override self super else override super
);
emacsWithPackages = emacsPackages.emacsWithPackages;
in
emacsWithPackages (
epkgs:
let
usePkgs = builtins.map (name: epkgs.${name}) packages;
extraPkgs = extraEmacsPackages epkgs;
in
[ epkgs.use-package ] ++ usePkgs ++ extraPkgs
)