mirror of
https://github.com/nix-community/emacs-overlay.git
synced 2025-12-15 15:21:01 -08:00
Add emacsWithPackagesFromPackageRequires
This provides a mechanism for creating an Emacs closure that contains the runtime dependencies for a given Emacs package source file, by inspecting its Package-Requires header.
This commit is contained in:
parent
49597c2218
commit
8439afbe1e
5 changed files with 115 additions and 26 deletions
26
packreq.nix
Normal file
26
packreq.nix
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
Parse an emacs package file to derive packages from
|
||||
Package-Requires declarations.
|
||||
*/
|
||||
|
||||
{ pkgs }:
|
||||
let
|
||||
parse = pkgs.callPackage ./parse.nix { };
|
||||
in
|
||||
{ packageFile
|
||||
, extraEmacsPackages ? epkgs: [ ]
|
||||
, package ? pkgs.emacs
|
||||
, override ? (epkgs: epkgs)
|
||||
}:
|
||||
let
|
||||
packages = parse.parsePackagesFromPackageRequires packageFile;
|
||||
emacsPackages = pkgs.emacsPackagesGen package;
|
||||
emacsWithPackages = emacsPackages.emacsWithPackages;
|
||||
in
|
||||
emacsWithPackages (epkgs:
|
||||
let
|
||||
overriden = override epkgs;
|
||||
usePkgs = builtins.map (name: overriden.${name}) packages;
|
||||
extraPkgs = extraEmacsPackages overriden;
|
||||
in
|
||||
[ overriden.use-package ] ++ usePkgs ++ extraPkgs)
|
||||
Loading…
Add table
Add a link
Reference in a new issue