Skip to content

jcarter/dotfiles

Repository files navigation

Dotfiles

Managed with chezmoi.

What's installed

Terminal & shell

App How
Ghostty Homebrew cask (macOS)
fish Homebrew
Maple Mono NF Homebrew cask (macOS)

Fish plugins via Fisher:

Plugin Purpose
Tide v6 Prompt
autopair.fish Auto-close brackets and quotes
pond Named environment management
fzf.fish Fuzzy-find history, files, processes

Dev tools

Managed by mise (installed via Homebrew):

Tool Version
Erlang latest
Elixir latest
Node latest
Rust latest
Go latest
Oh My Pi latest

Productivity

App How
Obsidian Homebrew cask (macOS)

Config managed

Tool What's configured
Git Global identity (name + email via chezmoi template), sensible defaults
gh SSH protocol enforced (prevents gh from silently rewriting remotes to HTTPS)
chezmoi Installed via Homebrew so it self-updates with brew upgrade

Everforest theme

All apps share a coordinated Everforest palette that automatically switches between dark and light when macOS appearance changes — no manual toggle needed.

App Dark variant Light variant
Ghostty Everforest Dark Hard Everforest Light Medium
Fish syntax everforest-medium dark everforest-medium light
Tide prompt Full Everforest Dark Medium palette Full Everforest Light Medium palette
Oh My Pi everforest-dark everforest-light

Setup on a new machine

  1. Run the bootstrap command:

    sh -c "$(curl -fsLS get.chezmoi.io)" -- -b /tmp init --apply gh:jcarter

    gh:jcarter is a chezmoi shorthand for https://github.com/jcarter/dotfiles. The bootstrap binary is installed to /tmp and is cleaned up automatically; Homebrew owns the permanent chezmoi installation.

    You will be prompted for your name and email, then chezmoi will:

    • Install system dependencies (Linux only)
    • Install Homebrew
    • Install fish, mise, and ghostty (macOS) via Homebrew
    • Install erlang, elixir, node, rust, and go via mise
    • Configure git and fish
    • Set fish as your default shell (you will be prompted for your password)

Updating

After pulling changes to the dotfiles repo:

chezmoi update       # pull remote changes and apply

Updating Oh My Pi settings

~/.omp/agent/config.yml is managed as a whole file. After changing settings through OMP, back up the live file into chezmoi before the next apply:

chezmoi diff ~/.omp/agent/config.yml
chezmoi add ~/.omp/agent/config.yml

Use chezmoi diff first to review what OMP changed. If the live changes are not wanted, run chezmoi apply ~/.omp/agent/config.yml instead to restore the backed-up version.

To upgrade chezmoi itself:

brew upgrade chezmoi # or: chezmoi upgrade

Adding new dotfiles

chezmoi add ~/.some_config             # plain file
chezmoi add --template ~/.some_config  # file with template variables

Testing

Uses a Docker container as a clean Linux environment. Requires Docker.

# 1. Tear down any existing container
docker stop chezmoi-test && docker rm chezmoi-test

# 2. Spin up fresh Ubuntu with dotfiles mounted read-only
docker run -d --name chezmoi-test -v "$(pwd)":/dotfiles:ro ubuntu:latest sleep infinity

# 3. Bootstrap the container (minimal prereqs only)
docker exec chezmoi-test bash -c '
apt update && apt install -y curl sudo &&
useradd -m -s /bin/bash testuser &&
echo "testuser ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers &&
sh -c "$(curl -fsLS get.chezmoi.io)" -- -b /usr/local/bin
'

# 4. Set up chezmoi as testuser and apply
#    The config is written manually here because this test flow copies files
#    directly and calls 'chezmoi apply', bypassing 'chezmoi init' (which is
#    what normally triggers .chezmoi.toml.tmpl on a real new machine).
docker exec chezmoi-test su - testuser -c '
mkdir -p ~/.local/share/chezmoi ~/.config/chezmoi &&
cp -r /dotfiles/. ~/.local/share/chezmoi/ &&
cat > ~/.config/chezmoi/chezmoi.toml <<EOF
[data]
    name = "Justin"
    email = "justin@example.com"
EOF
chezmoi apply -v
'

To re-test after editing files locally without rebuilding the container:

docker exec chezmoi-test su - testuser -c 'cp -r /dotfiles/. ~/.local/share/chezmoi/ && chezmoi apply -v'

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors