Configuration files for my machines, managed with GNU Stow.
git clone https://github.com/roddarjohn/dotfiles.git ~/dotfiles
cd ~/dotfiles
./bootstrap.shbootstrap.sh automates everything under Prerequisites and Install below:
apt packages, oh-my-zsh, building tree-sitter and Emacs 30 from source,
running install.sh, and (optionally, with prompts) installing
jsonnet-language-server and syncthing. Each phase is idempotent, so
re-running is safe. Expect ~1 hour on a fresh machine (most of it
waiting on the Emacs build).
The rest of this README is the manual breakdown of what bootstrap.sh
does — read it if you want to run individual steps yourself or
understand what's being installed.
Install these before running the install script:
sudo apt install \
stow \
tmux \
zsh \
git \
pandoc \
wget \
unzip \
fontconfigsh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"Due to ABI grammar issues, tree-sitter often needs to be built from source:
git clone https://github.com/tree-sitter/tree-sitter.git
cd tree-sitter
git checkout v0.25.0
make
sudo make install
sudo ldconfigDue to issues with Emacs on COSMIC, Emacs is built from source with --with-pgtk:
cd /opt/
sudo mkdir emacs
sudo chown $USER:$USER emacs/
git clone git@github.com:emacs-mirror/emacs.git --single-branch --branch emacs-30
cd emacs/
./autogen.sh
sudo apt install libsqlite3-dev
./configure --with-tree-sitter --with-pgtk --with-sqlite3
make bootstrap -j$(nproc)
# quick test before install
src/emacs -Q
sudo make installgit clone https://github.com/roddarjohn/dotfiles.git ~/dotfiles
cd ~/dotfiles
./install.shThe install script will:
- Symlink all config files into
$HOMEvia stow (zsh,tmux,emacs) - Install tpm (tmux plugin manager)
- Install the Meslo Nerd Font
- Configure the COSMIC Terminal font
After install, open tmux and press prefix + I to install tmux plugins via tpm.
The Emacs configuration uses literate programming via org-babel. The main
config lives in emacs/.emacs.d/init.org, which tangles to emacs-config.el.
Key packages: straight.el (package manager), magit, forge, corfu, vertico, consult, embark, eglot, casual-suite, copilot, org-mode, mu4e.
The custom my-org-* modules under emacs/.emacs.d/lisp/ are documented in
docs/my-org-modules.md.
Minimal .zshrc — sets Emacs as the editor and configures oh-my-zsh.
Configures key bindings and the tmux-nova status line theme. Uses tpm for plugin management.
Additional guides live in docs/:
my-org-*modules — custom org layer for category-scoped capture/agenda, projects, and interview notes- Syncthing setup — peer-to-peer file sync across machines and Android
Download a pre-built binary from the releases page:
chmod +x jsonnet-language-server
mv jsonnet-language-server ~/.local/bin/Make sure ~/.local/bin is on your PATH.
On first launch, straight.el will clone and build all packages. This takes a few minutes. Subsequent launches are fast.
For Dropbox-like sync of org files across machines and mobile (Android/Orgzly Revived), see docs/syncthing-setup.md.
Install:
sudo apt install syncthing
systemctl --user enable --now syncthingThen open http://localhost:8384 to configure.