mirror of
https://github.com/nix-community/emacs-overlay.git
synced 2025-12-05 18:30:23 -08:00
30 lines
830 B
Nix
30 lines
830 B
Nix
/*
|
|
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
|
|
, 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)
|