My Emacs Configuration
This is a guide on how to use my Emacs configuration.
1. Get Emacs
Get GNU/Emacs (version 29.1+).
2. Get Extra Programs
My configuration relies on the presence of a few extra programs. They are:
- epdfview - Lightweight PDF viewer
- ffmpeg - Cross-platform multimedia converter/recorder/streamer
- ffmpegthumbnailer - Lightweight video thumbnailer
- mediainfo - Data viewer for video and audio files
- mpg123 - Open-source audio player
- Vterm dependencies:
- CMake - C compiler
- GNU/Libtool - Generic support compiling script for and linking.
If you use Nix as your Operating System or package manager, you do not have to worry about installing these yet.
3. Get my Configuration
Go to your home directory.
cd ~/
Clone the repository with my configuration:
git clone [email protected]:axelknock/.emacs.d.git
If you use Nix as your operating system or package manager, import .emacs.d/emacs.nix
into your configuration like so:
imports = [
...
/home/YOURNAME/.emacs.d/emacs.nix
...
];
4. Customize the .person.el
file
Within my configuration, this file defines the user-specific symbols.
(defvar my-username "YOURNAME")
(defvar my-emacs-path "YOUREMACSPATH")
(defvar my-extra-auth-sources "YOURAUTHSOURCES")
(defvar my-shell "sh")
(defvar my-denote-directory nil)
(defvar my-org-directory "YOURORGDIRECTORY")
(defvar my-latitude 40.001)
(defvar my-longitude -80.001)
(defvar my-emacs-backups `(,(cons "." (expand-file-name ".backups/" my-emacs-path))))
(defvar my-save-place (expand-file-name "data/save-place.el" my-emacs-path))
(defvar my-dirvish-cache-dir (expand-file-name "data/dirvish/.cache/" my-emacs-path))
(defvar my-selected-font "Monospace")
(defvar my-symbol-font nil)
Edit this .person-example.el
with your information, and rename it to .person.el
.
5. Launch Emacs
Currently I use straight.el as my package manager. It bootstraps itself. It will then use use-package (not a package manager) to :ensure
that all packages are installed and initialized.
One of my TODOs is to replace straight.el
with elpaca as my package manager, so at the time of reading that may have already happened. Since I use use-package
macros in my configuration, there will not be many differences, and I have already added elpaca to my configuration. It is just a matter of changing the initial setup code.
I want to use elpaca
because it runs asynchronously, retrieves packages from their sources (which can make contribution easier), and has an intuitive user interface, a step up from M-x list-packages
.
My keybindings are kept in .keybinds.el
, and use a custom macro that “toggles” their state. This makes it trivial for anyone who uses my configuration to edit the keybindings to their liking. You can edit .keybinds-example.el
to your liking and rename it to .keybinds.el
.
Conclusion
I thought it would be trivially easy to throw my configuration files into version control and upload it for anyone else to use, but I realized almost immediately that it had many idiosyncracies. It still retains them, but now they can be freely shared idiosyncracies, whereas before it would be quite difficult to replicate my setup exactly.
It has made me appreciate that it is simply not good enough to run git init
and throw it online. There is a minimum effort required of all projects that someone else be able to run your software. When that effort is not present, no one will make the effort to change it.
There is a disproportionate gain in user interest, developer interest, and project viability from the few simple steps that make software more accessible.