Skip to content
lettertwoPublic

About

XDG_CONFIG_HOME

Topics

Resources

Stars

4 stars

Watchers

1 watching

Forks

Latest commit

 

History

1,478 Commits

Folders and files

Repository files navigation

Config Directory

AKA "dotfiles"

This repo is designed to be checked out to $XDG_CONFIG_HOME. See XDG Base Directory Specification for more.

I try to follow XDG conventions, but this is a mac-centric config.

Prerequisites and Dependencies

The following are used for managing dependencies and installation.

The install task will attempt to bootstrap these things if they are missing.

Installation

The default $XDG_CONFIG_HOME dir is ~/.config, and that is where we will install.

Note that $XDG_CONFIG_HOME does not have not to be set yet. Installation will attempt to configure it for you, which will require admin credentials.

If you have no config dir yet:

mkdir ~/.config
cd ~/.config
git clone git@github.com:lettertwo/config.git .
make install

If you have stuff in ~/.config already:

cd ~/.config
git init
git remote add origin git@github.com:lettertwo/config.git
git fetch
git reset origin/main
git checkout -t origin/main
make install

Updating

An update will do the following:

  • pull the latest from lettertwo/config
  • update Homebrew and installed dependencies
  • update Sheldon and installed dependencies
  • update Fisher and installed dependencies
  • update Neovim and installed dependencies
  • update Kitty
cd ~/.config
make update

Git config

The git/config will try to include a git/user config file. I do it this way to avoid having to modify the git/config file with any settings that aren't shareable.

You can add your own user and other settings to git/user like this:

touch ~/.config/git/user
git config --file ~/.config/git/user user.name "Your Name Here"
git config --file ~/.config/git/user user.email "your@email.here"
git config --file ~/.config/git/user credential.helper osxkeychain

Claude config

Claude Code is not XDG-aware — it defaults to ~/.claude. We point it at ~/.config/claude instead via CLAUDE_CONFIG_DIR (set in fish/conf.d/claude.fish), so its config is tracked here directly with no symlinks. Claude writes all of its runtime state into that directory too; an allowlist claude/.gitignore keeps everything except the portable config out of git.

On a new machine — or when switching a machine that still has a real ~/.claude — run make claude (after quitting all Claude sessions). The ~/.claude target relocates any existing runtime state into ~/.config/claude and replaces ~/.claude with a fallback symlink so GUI/IDE launches that don't inherit CLAUDE_CONFIG_DIR still resolve here. It's idempotent and refuses to relocate while Claude is open.

Never run git clean -fdx / -fdX in this repo — the -x/-X flag deletes the gitignored Claude runtime state (history, projects, sessions). Plain git clean -fd is safe.

About

XDG_CONFIG_HOME

Topics

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages