Merge pull request #1 from rossabaker/master

Make work on nixpkgs-unstable, as programs.emacs.package
This commit is contained in:
László Vaskó
2019-12-20 11:20:03 +01:00
committed by GitHub

View File

@@ -190,18 +190,7 @@ let
''; '';
}; };
# Stage 4: catch-all wrapper capable to run doom-emacs even # Stage 4: `extraConfig` is merged into private configuration
# without installing ~/.emacs.d
emacs = let
load-config-from-site = writeTextDir "share/emacs/site-lisp/default.el" ''
(message "doom-emacs is not placed in `doom-private-dir',
loading from `site-lisp'")
(when (> emacs-major-version 26)
(load "${doom-emacs}/early-init.el"))
(load "${doom-emacs}/init.el")
'';
# `extraConfig` is merged into private configuration
doomDir = pkgs.runCommand "doom-private" { doomDir = pkgs.runCommand "doom-private" {
inherit extraConfig; inherit extraConfig;
passAsFile = [ "extraConfig" ]; passAsFile = [ "extraConfig" ];
@@ -211,17 +200,34 @@ let
chmod u+w $out/config.el chmod u+w $out/config.el
cat $extraConfigPath >> $out/config.el cat $extraConfigPath >> $out/config.el
''; '';
# Stage 5: catch-all wrapper capable to run doom-emacs even
# without installing ~/.emacs.d
emacs = let
load-config-from-site = writeTextDir "share/emacs/site-lisp/default.el" ''
(message "doom-emacs is not placed in `doom-private-dir',
loading from `site-lisp'")
(when (> emacs-major-version 26)
(load "${doom-emacs}/early-init.el"))
(load "${doom-emacs}/init.el")
'';
in (emacsPackages.emacsWithPackages (epkgs: [ in (emacsPackages.emacsWithPackages (epkgs: [
load-config-from-site load-config-from-site
])).overrideAttrs (super: { ]));
outputs = [ "out" "emacsd" ]; in
buildInputs = [ doom-emacs ]; pkgs.runCommand "doom-emacs" {
installPhase = super.installPhase + '' inherit emacs;
ln -snf ${doom-emacs} $emacsd buildInputs = [ emacs ];
for prog in $out/bin/*; do nativeBuildInputs = [ makeWrapper ];
wrapProgram $prog --set DOOMDIR ${doomDir} } ''
mkdir -p $out/bin
for prog in $emacs/bin/*; do
makeWrapper $prog $out/bin/$(basename $prog) --set DOOMDIR ${doomDir}
done done
''; # emacsWithPackages assumes share/emacs/site-lisp/subdirs.el
}); # exists, but doesn't pass it along. When home-manager calls
# emacsWithPackages again on this derivation, it fails due to
in emacs # a dangling link to subdirs.el.
# https://github.com/NixOS/nixpkgs/issues/66706
ln -s ${emacs.emacs}/share $out
''