Skip to content

sbougerel/doom-config

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

My Doom Emacs Setup

I switched to Doom recently, abandoning my old setup, which was becoming more expensive to maintain. I'm loving Doom so far, it lets me focus on the stuff I want to configure, while benefiting from the Doom community resources. Since I don't think I'll switch back, I'll just nuke my old repository out of existence once I have transferred most of its functionality.

Emacs Installation

Install Emacs with native compilation and dependencies first.

Archlinux:

yay -Sy emacs-nativecomp fd ripgrep cmake unzip

MacOS additionally requires GnuPG from homebrew, to manage my secrets:

brew install emacs-plus@28 fd ripgrep cmake gnupg

Common steps across all systems:

git clone https://github.com/sbougerel/doom-config.git ~/.doom.d
git clone --depth 1 https://github.com/doomemacs/doomemacs ~/.emacs.d

Add $HOME/.emacs.d/bin to $PATH and finish installation:

doom install

Verify everything looks good:

doom doctor

Continue below to add required system packages for each functionality.

Fonts Installation

I like the elegance of JetBrains Mono and its ligatures. For the variable pitch font I use Source Serif Pro which has height close to (but not exactly matching) JetBrains' Mono font.

Archlinux:

pacman -S ttf-jetbrains-mono-nerd adobe-source-serif-fonts

MacOs:

cd `mktemp -d`
curl -L 'https://fonts.google.com/download?family=Source%20Serif%20Pro' -o 1.zip
curl -L https://github.com/ryanoasis/nerd-fonts/releases/download/v2.3.3/JetBrainsMono.zip -o 2.zip
unzip -o 1.zip
unzip -o 2.zip
mv *.ttf ~/Library/Fonts/

Syntax parsing

As of Emacs 29, tree-sitter is becoming more widely adopted, however it relies on user actions for now. My setup is a deterministic approach rather than a lazy-loading approach, which leaves less room for surprises and slow downs. Execute the following post installation to fetch parsers:

(treesit-auto-install-all)

Checkers

Spell

Archlinux:

pacman -S aspell \
  aspell-en \
  hunspell \
  hunspell-en_us \
  hunspell-en_gb
# The following bootstraps the personal English dictionary:
mkdir -p ~/.emacs.d/.local/etc/ispell
echo personal_ws-1.1 en 0 > ~/.emacs.d/.local/etc/ispell/.pws

MacOS:

brew install aspell
# The following bootstraps the personal English dictionary:
mkdir -p ~/.emacs.d/.local/etc/ispell
echo personal_ws-1.1 en 0 > ~/.emacs.d/.local/etc/ispell/.pws

Grammar

Archlinux:

pacman -S languagetool

MacOS:

brew install languagetool

Tools

Language Server Protocol

Archlinux:

pacman -S npm

Languages

Text

Archlinux:

pacman -S prettier

Org-mode

Archlinux:

pacman -S texlive-core \
  texlive-bin \
  texlive-science \
  textlive-plaingeneric \
  gnuplot \
  sqlite3

MacOS:

brew install pngpaste
brew install graphviz
brew install gnuplot
brew install sqlite

Markdown

Install proselint even if I disabled it by default as it's too pedantic. Manually enable it with C-u C-c ! x when necessary.

Archlinux:

pacman -S proselint marked

Python

Archlinux:

pacman -S pyright \
  python-pip \
  python-pipenv \
  python-black \
  mypy \
  python-pyflakes \
  python-isort \
  python-pytest \
  python-nose \
  python-debuggpy

MacOS:

brew install pyright pipenv black mypy
pip install pytest
pip install nose
pip install debugpy

Rust

Archlinux:

pacman -S rustup lldb
rustup default stable
rustup component add rust-analyzer
mkdir ~/.cargo/bin
ln  -s `rustup which --toolchain stable rust-analyzer` ~/.cargo/bin/
export PATH=$HOME/.cargo/bin:$PATH # Also add to init scripts

MacOS:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup component add rust-src
rustup component add rust-analyzer
ln -s `rustup which --toolchain stable rust-analyzer` $HOME/.cargo/bin/rust-analyzer

shell

Archlinux:

pacman -S shellcheck shfmt

MacOS:

brew install shellcheck
brew install shfmt

CC

Archlinux:

pacman -S glslang

MacOS:

brew install glslang

Golang

MacOS:

brew install go
go install github.com/cweill/gotests/gotests@latest

Debugger

Archlinux:

pacman -S gdb lldb nodejs llvm
# AUR package required next
yay -S lldb-mi-git

Profiling

Archlinux:

pacman -S valgrind graphviz
# Utility to convert callgrind
pip install gprof2dot

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published