My personal shell, tmux, and terminal environment for Linux, macOS, WSL, and
Termux: Bash and Zsh startup, tmux configuration and session tooling, WezTerm,
ripgrep, atuin, and the agent rules I use with coding assistants. It is
managed by dot, which tracks $HOME
directly in Git and layers optional overlay repos on top.
This is my configuration, not a framework. Browse and borrow freely. If you
want the same workflow for your own files, start from dot and its
examples/minimal-dotfiles.
The one-liner installs my config, my tools, and an auto-update cron job. Read the notes below it before running it on a machine you care about.
curl -fsSL cgraf78.github.io/d | bash
source ~/.bashrc # or: source ~/.zshrc-
It installs
dot, then my config into$HOME. Conflicting files are backed up under~/.dot-backup/. -
It installs a cron job that runs
dot updateevery 30 minutes, so the machine keeps pulling this repo'smainand updating the installed tools. -
It installs my tool set (listed in
.config/shdeps/10-deps.conf) through your system package manager (which may need sudo), GitHub releases and clones, and custom installers such as WezTerm, tmux, and a Nerd Font. -
It writes my agent rules into a managed block in
~/.claude/CLAUDE.md,~/.codex/AGENTS.md, and other coding agents' global rule files, via agent-rules-sync. Text outside the block is kept. -
The default
editorprofile adds the dotfiles-nvim overlay. Private overlays are optional and are skipped when your key cannot read them. -
It clones this repo over SSH. Without a GitHub SSH key, use HTTPS instead:
curl -fsSL cgraf78.github.io/d | DOTFILES_REPOSITORY=https://github.com/cgraf78/dotfiles.git bash
It needs curl and git, plus Homebrew on macOS. macOS also requires Bash
4+ (brew install bash). The system Bash 3.2 is too old.
- dot: the dotfiles manager this repo runs on.
- shdeps: installs the tools listed in
.config/shdeps/. - dotfiles-nvim: my Neovim layer
(the default
editorprofile). - dotfiles-dev: my development layer (Git, toolchains, editors, agent tooling).
- nvim-workspace, termnav, tmux-tools, git-tools, and agentguard: standalone tools extracted from these dotfiles.
See the full guide. Licensed
under MIT; see .github/LICENSE.
There is deliberately no root AGENTS.md or CLAUDE.md: the repo root is
$HOME, so either file would apply to every project under it. Read the
dotfiles operations,
testing, and
ownership
playbooks and the test suite guide
instead.
CI also runs ShellCheck over every shell program and fails on any that is
missing from shellcheck-files.txt and on stale
rows; dot test does not check this. The check scans untracked files too, so
run it from a clean clone, never from a live $HOME:
SHELLCHECK_EXCLUDE_CODES=SC1091 bash <cgraf78/actions at the locked SHA>/.github/actions/shellcheck-inventory/run.sh "$PWD" .github/shellcheck-files.txt.