Skip to content

jefftriplett/dotfiles

My Dotfiles

These are my personal dotfiles for macOS development environments. They provide a consistent setup across machines with automated configuration.

Key Tools

CLI

  • direnv: Securely loads or unloads environment variables depending on the current directory
  • Homebrew: Package management for macOS
  • Homesick: Manages dotfiles with Git and symlinks
  • Just: 🤖 Command runner for project-specific tasks
  • Starship: Minimal, blazing-fast, and customizable prompt for any shell

GUI

Python Environment

  • pip: PyPA recommended tool for installing Python packages
  • pyenv: Simple Python version management
  • uv: Fast Python package installer and resolver, written in Rust

Installation

  1. Install Homesick:

    $ gem install homesick
  2. Clone this repository:

    $ homesick clone jefftriplett/dotfiles
  3. Create the symlinks:

    $ homesick symlink dotfiles
  4. Bootstrap the environment:

    $ just bootstrap

Justfile Usage

$ just --justfile=./home/justfile --list --list-submodules

Available recipes:
    claude:
        config  # open Claude Desktop configuration file in Sublime Text
        upgrade # update Claude Code CLI to the latest version
    homebrew:
        cleanup DAYS="0" # clean up old Homebrew packages and cache
        freeze           # freeze current Homebrew packages to Brewfile
        outdated         # list outdated Homebrew packages
        services         # list all Homebrew services
        services-restart # restart all running Homebrew services
        services-stop    # stop specific Homebrew services (with non-fatal errors)
        update           # update Homebrew package database
        upgrade          # upgrade all outdated Homebrew packages
    llm:
        install *ARGS # install LLM plugins with optional arguments
        path          # open LLM templates directory in Sublime Text
        upgrade       # upgrade all installed LLM plugins
    macos:
        timemachine-boost          # boost Time Machine backup speed by increasing IO priority
        timemachine-boost-complete # restore normal IO priority after Time Machine backup completes
        timemachine-delete *ARGS   # delete specific Time Machine backups
        timemachine-list           # list all Time Machine backups
        xcode-bootstrap            # install Xcode command line tools
        xcode-upgrade              # upgrade Xcode command line tools by removing and reinstalling
    ollama:
        copy-plist  # copy custom ollama plist file to homebrew directory
        diff-plist  # compare local ollama plist with installed version
        download    # download various ollama models (- prefix makes failures non-fatal)
        getenv      # display ollama environment variables from launchctl
        list        # list all downloaded ollama models
        serve *ARGS # serve ollama in a tandem process with optional arguments
        setenv      # set ollama environment variables in launchctl
    pyenv:
        upgrade +ARGS="--skip-existing"     # upgrade python and update pyenv configuration
        upgrade-all +ARGS="--skip-existing" # install or upgrade all python versions managed by pyenv
    python:
        bootstrap                 # bootstrap python environment with essential packages
        outdated                  # list outdated Python packages
        pip-install *ARGS         # install python packages using uv pip installer
        pip-uninstall *ARGS       # uninstall python packages using uv pip installer
        update                    # update python environment and pyenv settings
        uv-python-install *ARGS   # install python versions using uv installer
        uv-python-reinstall *ARGS # reinstall python versions using uv installer
        uv-tool-install *ARGS     # install common python CLI tools using uv installer
    virtualenv:
        scan    # scan virtualenvs and display their python versions
        upgrade # upgrade pip in all virtualenvs
        workon  # list all virtualenvs with their python and pip versions
    virtualenvwrapper:
        get_env_details  # virtualenvwrapper hook for getting environment details
        initialize       # virtualenvwrapper hook for environment initialization
        postactivate     # virtualenvwrapper hook that runs after environment activation
        postdeactivate   # virtualenvwrapper hook that runs after environment deactivation
        postmkproject    # virtualenvwrapper hook that runs after creating a project
        postmkvirtualenv # virtualenvwrapper hook that runs after creating a virtualenv
        postrmproject    # virtualenvwrapper hook that runs after removing a project
        postrmvirtualenv # virtualenvwrapper hook that runs after removing a virtualenv
        preactivate      # virtualenvwrapper hook that runs before environment activation
        predeactivate    # virtualenvwrapper hook that runs before environment deactivation
        premkproject     # virtualenvwrapper hook that runs before creating a project
        premkvirtualenv  # virtualenvwrapper hook that runs before creating a virtualenv
        prermproject     # virtualenvwrapper hook that runs before removing a project
        prermvirtualenv  # virtualenvwrapper hook that runs before removing a virtualenv

    [database]
    postgresql-upgrade # Upgrade PostgreSQL to latest version and migrate databases

    [golinks]
    open-docs          # Open documentation in browser using Tailscale/golinks
    open-go            # Open Tailscale/golinks homepage
    open-ha            # Open Home Assistant interface in browser
    open-syncthing     # Open Syncthing interface in browser

    [maintenance]
    cleanup DAYS="0"   # Clean up old Homebrew packages and casks
    outdated           # List outdated packages from Homebrew and pip
    update             # Update project to run at its current version
    upgrade            # Update and upgrade Homebrew packages
    upgrade-all        # Upgrade all tools (pyenv and mise packages)

    [services]
    restart            # Restart Homebrew services
    stop               # Stop all Homebrew services

    [setup]
    bootstrap          # Install and update all dependencies
    freeze             # Update lockfiles without installing dependencies [alias: lock]
    install            # Create symlinks for dotfiles using homesick

    [utils]
    fmt                # Format and overwrite justfile
    update-brewfile    # Update Brewfile from cog template
    update-readme-docs # Update README.md docs using cog

Hammerspoon Keyboard Shortcuts

Action Key Combination
hyper ctrl + opt + cmd
meta cmd + shift
reload config hyper + r
show grid hyper + g
make full screen hyper + m
center and 60% hyper + c
move to left half hyper + left
move to right half hyper + right
move to top half hyper + up
move to lower half hyper + down
move to upper left (25%) ctrl + opt + shift + left
move to upper right (25%) ctrl + opt + shift + up
move to lower left (25%) ctrl + opt + shift + down
move to lower right (25%) ctrl + opt + shift + right
move to next monitor ctrl + opt + right
move to previous monitor ctrl + opt + left

Terminal theme

  • Dracula Dark theme for iTerm and 294+ apps.

Inspiration / Thank you!

Contact / Social Media

Here are a few ways to keep up with me online. If you have a question about this project, please consider opening a GitHub Issue.