Managing Emacs settings per-computer
Per-computer Emacs settings
I use Emacs on all of my machines, being laptops or servers. While my Emacs settings are shared among all of my computers, some of these settings really matter for one specific computer.
For instance, I only read my emails on my main laptop, and I only use my Orgmode files on two computers.
I decided to have some of my settings machine-specific, using the
hostname
of each computer.
The idea is straightforward, in my init.el
, I load an
init-HOSTNAME.el
file if it is present in the hosts/
subdirectory.
Here's a snippet from my emacs.d
configuration:
(defvar host (substring (shell-command-to-string "hostname") 0 -1)) (defvar host-dir (concat "~/.emacs.d/hosts/" host)) (add-to-list 'load-path host-dir) (let ((init-host-feature (intern (concat "init-" host)))) (require init-host-feature nil 'noerror))
Another way to split settings is to keep some files private. Some settings might contain sensitive information that you might not want to share along with your Emacs configuration.
To sove this issue I load files from a private directory in
~/.priv/elisp/
:
(defvar private-dir "~/.priv/elisp" "Private elisp directory") (if (file-exists-p private-dir) (add-to-list 'load-path private-dir))