Skip to content
 
 

Repository files navigation

🏠 Dotfiles

Personal development environment configuration for macOS. Automated Rust-based installer manages shell configurations (zsh, nushell, bash), terminal setup (ghostty, tmux), and development tools (git, neovim, emacs) with a unified catppuccin mocha theme.

🚀 Quick Start

git clone https://github.com/buddhamagnet/dotfiles ~/Code/dotfiles
cd ~/Code/dotfiles
cargo run --release

Preview changes without modifying anything:

cargo run --release -- --dry-run

📦 Core Tools (Automated Installation)

The installer automatically installs these dependencies if not already present:

Tool Description Version Links
JetBrains Mono Monospace font for developers Latest Website · GitHub
Nushell Modern shell with structured data Latest Website · GitHub
Starship Fast, customizable shell prompt Latest Website · GitHub
Carapace Multi-shell completion generator Latest Website · GitHub
worktrunk Git worktree manager Latest GitHub
zoxide Smarter cd command (tracks frecency) Latest GitHub
fzf Command-line fuzzy finder Latest GitHub
ripgrep Fast line-oriented search tool Latest GitHub
fd Modern find replacement Latest GitHub
tpm tmux plugin manager v3.1.0 GitHub

tpm plugins

tpm is automatically installed and initialized. The following plugins are configured:

Plugin Description Repository
tpm tmux plugin manager - manages all other plugins tmux-plugins/tpm
catppuccin soothing pastel theme for tmux (mocha variant) catppuccin/tmux
tmux-cpu CPU and RAM usage indicators for tmux status bar tmux-plugins/tmux-cpu

Installing plugins:
After running the dotfiles installer, open tmux and press Prefix + I (Ctrl-a + Shift-i) to install all declared plugins.

Managing plugins:

  • Update plugins: Prefix + U
  • Remove unlisted plugins: Prefix + alt + u

Adding new plugins:
Add plugin declarations to tmux/tmux.conf (after the existing plugin declarations, before the TPM initialization line):

set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-resurrect'

Then press Prefix + I inside tmux to install them.

neovim plugins

neovim uses lazy.nvim for plugin management. Configured plugins:

Plugin Description Repository
lazy.nvim modern plugin manager with lazy loading folke/lazy.nvim
catppuccin soothing pastel theme for neovim (mocha variant) catppuccin/nvim
telescope fuzzy finder over lists (files, buffers, etc.) nvim-telescope/telescope.nvim
telescope-fzf-native native C sorter for telescope (performance) telescope-fzf-native.nvim
plenary lua utility library (required by telescope) nvim-lua/plenary.nvim

telescope keybindings:

  • <leader>ff - Find files
  • <leader>fg - Live grep (search text in files)
  • <leader>fb - List buffers
  • <leader>fh - Search help tags

Managing plugins:

  • View plugin status: :Lazy
  • Install/update plugins: :Lazy sync
  • Check plugin health: :checkhealth telescope

Adding new plugins:
Edit nvim/lua/plugins/init.lua and add plugin specs:

{
  "plugin/name",
  config = function()
    -- Plugin configuration here
  end,
}

Plugins auto-install on next nvim launch, or run :Lazy sync.

⚙️ Shell & Terminal Tools

These tools are referenced in configurations but require separate installation:

Tool Description Links
ghostty fast, native terminal emulator Website · GitHub
tmux Terminal multiplexer GitHub · Wiki
nvm node version manager GitHub

🛠️ Development Tools

Tool Description Version Links
git version control system Latest Website · GitHub
neovim hyperextensible vim-based text editor Latest Website · GitHub
emacs extensible text editor (clojure-focused) Latest Website · GNU
leiningen clojure build automation tool CIDER nREPL 0.62.0 Website · GitHub
mysql relational database 8.3.0 Website · Dev
gdb GNU debugger Latest Website
ghci haskell REPL Latest Website
claude code AI-powered coding assistant Latest Website

📋 Installation

Prerequisites

Installation Steps

  1. Clone the repository:

    git clone https://github.com/buddhamagnet/dotfiles ~/Code/dotfiles
    cd ~/Code/dotfiles
  2. Run the installer:

    cargo run --release
  3. Interactive prompts: When the installer encounters existing files, you'll be prompted:

    • y - Overwrite this file (backup created)
    • n - Skip this file
    • a - Overwrite all remaining files
    • q - Quit installation
  4. Backup location: Existing files are moved to ~/.dotfiles-backup/ before being replaced.

Dry Run

Preview what will be changed without modifying anything:

cargo run --release -- --dry-run

🗂️ Configuration Files

The installer symlinks these files from the repository into your home directory:

Source (Repo) Destination ($HOME) Purpose
bashrc ~/.bashrc bash configuration with carapace and worktrunk
zshrc ~/.zshrc zsh configuration with starship prompt, carapace completions, vi mode, and custom functions
gitconfig ~/.gitconfig git configuration with SSH GitHub URLs and worktree aliases
gitignore ~/.gitignore global git ignore patterns
gdbinit ~/.gdbinit GNU debugger configuration (Intel disassembly)
ghci ~/.ghci haskell REPL configuration (lambda prompt)
tmux/tmux.conf ~/.tmux.conf tmux configuration with catppuccin theme, custom prefix (C-a)
tmux/tmux-workspace.sh ~/tmux-workspace.sh automated tmux workspace setup script
.lein/profiles.clj ~/.lein/profiles.clj leiningen configuration with CIDER plugin
.emacs.d ~/.emacs.d emacs configuration (entire directory)
ghostty/config ~/.config/ghostty/config ghostty terminal configuration with catppuccin theme
nushell/env.nu ~/.config/nushell/env.nu nushell environment configuration
nushell/config.nu ~/.config/nushell/config.nu nushell main configuration
starship/starship.toml ~/.config/starship/starship.toml starship prompt customization
nvim ~/.config/nvim neovim configuration with lazy.nvim plugin manager

✨ Features

visual theme

  • catppuccin mocha theme across tmux and ghostty for consistent aesthetics
  • jetbrains mono font with ligatures
  • starship prompt with extensive customization

shell enhancements

  • vi mode in zsh with preserved Ctrl+R history search
  • carapace shell completion bridges for zsh, fish, bash, and inshellisense
  • entire CLI shell completion integration
  • worktrunk shell integration for zsh and nushell
  • zoxide smart directory navigation based on frecency (frequency + recency)
  • fzf fuzzy finder for files, directories, and command history
  • ripgrep blazingly fast text search (used by telescope live_grep)
  • fd modern file finder (used by telescope for better file search)

tmux configuration

  • custom prefix: C-a instead of default C-b
  • tpm (tmux plugin manager) automatically installed for plugin management
  • catppuccin theme managed via tpm (mocha variant)
  • workspace automation: tmux-workspace.sh creates 5-window setup with claude instances

git integration

  • SSH-based GitHub URLs automatically
  • worktree aliases for git worktree management
  • custom .gitignore patterns

development setup

  • claude code integration with work and personal config functions
  • clojure development via emacs with paredit, cider, and clojure-mode
  • leiningen with CIDER nREPL plugin

🔄 Post-Install Steps

worktrunk shell integration (nushell)

After installation, enable worktrunk shell integration in nushell:

wt config shell install nu

This creates a static wt.nu file in nushell's vendor-autoload directory. Re-run this command after updating worktrunk.

🔧 Updating

Update Dotfiles

cd ~/Code/dotfiles
git pull
cargo run --release

update catppuccin tmux plugin

To move to a newer catppuccin version:

  1. Edit src/main.rs and update TMUX_PLUGIN_TAG constant
  2. Remove existing plugin: rm -rf ~/.config/tmux/plugins/catppuccin
  3. Re-run installer: cargo run --release

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.


Maintained by: Dave Goodchild (buddhamagnet@gmail.com)

About

highly portable unix environment

Resources

Stars

5 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages