Skip to content

Latest commit

 

History

359 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dotfiles

My configuration for the tools I use on macOS and Linux. Shared files live at the root. Platform integration lives under macos/ and linux/.

The setup script deploys configuration. It does not install Linux packages or manage Linux services. The macOS side has a small optional Brewfile, but I keep system setup explicit.

Deploy

git clone --depth=1 https://github.com/vetr0s/dotfiles
cd dotfiles
bash setup.sh

setup.sh detects the platform and links the matching files into place. It moves an existing target to a timestamped backup. Later runs leave correct links alone.

Preview the changes first:

bash setup.sh --dry-run

The platform can also be selected for testing:

bash setup.sh --platform macos --dry-run
bash setup.sh --platform linux --dry-run

Package installation and host services stay outside the root setup script. The platform READMEs define that boundary:

What I use

Emacs is my primary GUI editor. I run it as a daemon so emacsclient can open frames without starting another process. Its configuration has a separate README.

Neovim owns $EDITOR and $VISUAL for terminal work. Vim remains the small fallback. Both use <Space> as the leader and share the bindings I use most.

Kitty is the terminal. AeroSpace handles tiling on macOS. Karabiner maps the right diamond key to the modifier AeroSpace uses. Bash is the login shell and tmux remains available for remote sessions.

The repository also carries my Git configuration, C formatting rules, and the fonts used by Kitty and Emacs.

Layout

Path Contents
.emacs.d/, nvim/, .vimrc Editor configuration
bashrc, bash_profile, config.bash Shell configuration
kitty/, tmux/ Terminal configuration
gitconfig, clang-format Tool configuration
fonts/ Editor and terminal font assets
macos/ Homebrew, launchd, AeroSpace, and Karabiner
linux/ Distribution-neutral Linux behavior
util/links.tsv Shared deployment manifest

Optional helpers

These are separate from deployment:

bash util/scripts/install-fonts.sh
bash util/scripts/tags.sh [project]
bash util/scripts/install-odinfmt.sh
bash util/scripts/install-vimplug.sh
bash macos/scripts/install-bash.sh
bash macos/scripts/make-emacsclient-app.sh

tags.sh indexes a project for goto-definition, which is what both editors use now that neither runs a language server. It writes tags for Neovim, which finds it through the default ./tags;, and .tags for Emacs, which rc-programming visits when a buffer opens. Both come from one universal-ctags run, so the two editors jump to the same place. C, C++, Go and Python are its own parsers; Odin and Zig are regex definitions in the script, since universal-ctags ships neither. Rerun it when the index goes stale.

install-odinfmt.sh builds odinfmt from source, since it is not packaged. It needs the odin compiler and nothing else. The checkout goes to ~/source/third_party/ols and the binary is symlinked into ~/.local/bin. Override with OLS_SRC_DIR and OLS_BIN_DIR. Emacs and Neovim both skip Odin formatting when odinfmt is not on PATH, so this is only needed on a machine where I write Odin.

About

Personal macOS and Linux configuration for Emacs, Neovim, Vim, Bash, kitty, and AeroSpace

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Contributors

Languages