feat(emacs): Add withLocalConfig override function

This function makes it possible to pass in a folder with additional
local configuration from somewhere downstream.
This commit is contained in:
Vincent Ambo 2019-12-16 13:33:29 +00:00
parent 0e5da6c34c
commit 99909ddd04
2 changed files with 17 additions and 8 deletions

View file

@ -170,10 +170,11 @@
(telephone-line-setup) (telephone-line-setup)
(ace-window-display-mode) (ace-window-display-mode)
;; If a local configuration file exists, it should be loaded. No ;; If a local configuration library exists, it should be loaded.
;; other configuration comes from `user-emacs-directory'. ;;
(let ((local-file (expand-file-name (f-join user-emacs-directory "local.el")))) ;; This can be provided by calling my Emacs derivation with
(when (f-exists? local-file) ;; `withLocalConfig'.
(load local-file))) (if-let (local-file (locate-library "local"))
(load local-file))
(provide 'init) (provide 'init)

View file

@ -84,12 +84,20 @@ let
# Custom packages # Custom packages
[ carp-mode localPackages.dottime localPackages.term-switcher ] [ carp-mode localPackages.dottime localPackages.term-switcher ]
))); )));
in lib.fix(self: f: third_party.writeShellScriptBin "tazjins-emacs" '' in lib.fix(self: l: f: third_party.writeShellScriptBin "tazjins-emacs" ''
exec ${tazjinsEmacs f}/bin/emacs \ exec ${tazjinsEmacs f}/bin/emacs \
--debug-init \ --debug-init \
--no-site-file \ --no-site-file \
--no-site-lisp \ --no-site-lisp \
--no-init-file \ --no-init-file \
--directory ${./config} \ --directory ${./config} ${if l != null then "--directory ${l}" else ""} \
--eval "(require 'init)" $@ --eval "(require 'init)" $@
'' // { overrideEmacs = f': self f'; }) identity '' // {
# Call overrideEmacs with a function (pkgs -> pkgs) to modify the
# packages that should be included in this Emacs distribution.
overrideEmacs = f': self l f';
# Call withLocalConfig with the path to a *folder* containing a
# `local.el` which provides local system configuration.
withLocalConfig = confDir: self confDir f;
}) null identity