doomemacs/modules/private
2017-06-21 18:42:46 +02:00
..
hlissner Fix MacOS reveal-in-finder command keybinds 2017-06-21 18:42:46 +02:00
README.org private/README.md => private/README.org 2017-06-20 20:07:40 +02:00

:private

Modules here represent all your personal customizations. I suggest you keep them contained here to minimize friction when updating from upstream (if that matters to you).

I include my private module as a reference. I recommend you don't delete/rename it as that could cause merge conflicts.

Loading your private module

:private {user-login-name} is loaded automatically after all other modules.

Keeping it in your init.el is unnecessary, but harmless.

private/{user-login-name}/init.el is a special file, unique to the private module named after your username in user-login-name. It is loaded immediately after DOOM core is, but before any module is. This gives you an opportunity to overwrite variables and settings earlier. I will refer to this as your "private init.el".

Reconfiguring packages

If your configuration needs are simple, add-hook! and after! will be sufficient to reconfigure packages:

;; private/hlissner/config.el
(after! evil
  (setq evil-magic nil))

;; Takes a major-mode or a quoted hook function
(add-hook! python-mode
  (setq python-shell-interpreter "bpython"))

Look into def-package-hook! if you need more customizability. It lets you disable, add to or overwrite DOOM's def-package! blocks. These are powered by use-package's inject-hooks under the hood.

They must be used from your private init.el to work.

;; private/hlissner/init.el

;; To disable a package
(def-package-hook! evil-goggles :disable)

;; If a :pre-init / :pre-config hook returns nil, it overwrites that
;; package's original :init / :config block. Exploit this to overwrite
;; DOOM's config. Otherwise, make sure they always return non-nil!
(def-package-hook! doom-themes
  :post-config
  (setq doom-neotree-file-icons t)
  nil)

;; Otherwise, you append to a packages config
(def-package-hook! evil
  :post-init
  (setq evil-magic nil)
  t)

Installing your own packages

Your private module is otherwise like any other module. It may possess a packages.el file, which with the advantage of being loaded last may be used not only to install your own packages, but overwrite past package! declarations.

;; prevent a certain package from being installed; pair this with something
;; like (def-package-hook! evil-goggles :disable) in your private init.el
(package! evil-goggles :ignore t)

;; Tell doom to get evil from somewhere else
(package! evil :recipe (:fetcher github :repo "hlissner/my-evil-fork"))