My public Arch/Omarchy dotfiles, managed with GNU Stow and the dot command.
- Stow-based dotfiles rooted at
~/.config/dotfiles - Public config for shell, editor, and tooling
- Single compiled binary at
scripts/.local/bin/dot(Bun + Effect v4 + OpenTUI) - TUI dashboard with git diff view, GitHub workflow runs, GitHub notifications, repo notes, omarchy menus, git staging, and AI commit suggestions
- Optional private overlays from
~/.config/dotfiles-private - Omarchy repo sync for
bootstrap,hypr,waybar,ghostty, anduwsm - GitHub workflow run status and notification inbox via
dot git-workflows,dot git-notifications, and Waybar
dot/- TypeScript source for thedotbinary (excluded from stow)scripts/.local/bin/dot- compiled binary (stowed to~/.local/bin/dot).stowrc- stow target and ignore ruleszsh/- shell configneovim/- Neovim configstarship/- prompt configagents/- agent tooling: public OpenCode (.opencode/), Cursor launcher script (.local/bin/cursor); private overlay adds~/.cursor/(argv.json,mcp.json, rules), Claude Code, OpenCode secrets,~/.config/opencode/(seedot agents-sync). OpenCode skills, agents, commands, and plugins are published totimmo001/opencode-configautomatically on push.editorconfig/- editor config
- Current desktop/laptop split worktree repo:
hypr - Laptop worktree:
~/.config/hypron branchlaptop - Desktop worktree:
~/.config/hypr-desktopon branchdesktop - If this split-worktree setup changes, update the relevant
README.md,AGENTS.md, and skill documentation together so the documented layout stays accurate
# Before dot is on PATH
~/.config/dotfiles/scripts/.local/bin/dot help
# Build the binary (requires bun)
cd ~/.config/dotfiles/dot && bun run build
# Typical workflow
dot init
dot update
dot git-diff
dot doctordot init- questionnaire (when available), Omarchy sync (including split-repo worktree setup likehypr-desktop), package setup, optional public/private Arch package install, then public/private installdot update- Omarchy + public/private pull (including optional extra private repos and split Omarchy repo worktrees), then stow refreshdot stow- stow refresh only (no git pull)dot git-diff- git status + staged/unstaged summaries with fetched unpushed/incoming commit checks across managed repos (including optional extra private repos and split Omarchy repo worktrees); usedot git-diff --waybarfor one-line Waybar JSON (dot diffremains a human compatibility alias)dot git-workflows- two-pane watched GitHub workflow runs view for each repo's locally checked-out HEAD commit; use--since <date>to filter by activity time, and--raw,--waybar,--list-repos, or--list-runsfor CLI outputdot git-notifications- GitHub notification inbox with open, mark-read, done, ignore, and unignore actions; use--all,--participating,--since <date>,--raw,--waybar,--list-threads,--mark-read <id>,--mark-done <id>,--ignore <id>, or--unignore <id>for CLI output/actionsdot notes- two-pane repository notes browser; use--allor pressgto browse every repo notes directory, anddot notes list --allfor CLI output grouped by repodot handoffs/dot handoff- open the notes browser filtered to notes taggedhandoff; use--allto browse handoffs across every repodot setup [--confirm]- package install step onlydot install- backup/adopt install flow for public/private dotfilesdot clean- unstow private then publicdot doctor- tool, repo, workflow runs, extra repo, remote, public/private package, private package repo, and Chromium extension health checksdot opencode-debug [--agent <name>]- runopencode debug paths,config,skill, andinfotogether; optionally inspect one agent withopencode debug agent <name>dot private-pkg-publish [--no-git] [--skip-build] [--install] <package>- build and publish a mapped private package into the private pacman repo, sync the mirror, refresh pacman metadata, optionally install it, and commit/push by defaultdot agents-sync- copy~/.config/opencode/AGENTS.mdintoagents/.cursor/rules/global-agents.mdcin private dotfiles by default (alwaysApply: true+ body; stows to~/.cursor/rules/).dot updateanddot git-diffrun this automatically by default (see env vars below).
OpenCode skills, agents, commands, and plugins live in agents/.config/opencode/ and are also automatically published to timmo001/opencode-config so they can be browsed, imported, and installed independently of the full dotfiles repo — see that repo for documentation and installation instructions.
- Debug:
dot opencode-debug [--agent <name>] - Publishing is automatic via GitHub Actions on push
system-health-check- friendly multi-snapshot system health report for CPU, memory, network, pressure, and known logs- Add
--open-opencodeto runopencode runagainst the saved report, then open a full interactive OpenCode session withopencode --continue
- Private dotfiles provide the watched repo list in
~/.config/dotfiles-private/.git-workflow-watch-repos dot git-workflowsshows watched repos on the left, with workflow runs for the selected locally checked-out HEAD commit on the right; disabled workflows are hidden;dot git-workflows --waybar --since "$(date -u -d '1 hour ago' +%Y-%m-%dT%H:%M:%SZ)"emits one-line Waybar JSON for runs created, rerun, or updated in the window, and--list-repos/--list-runsemit plain text rows- The Waybar workflow module refreshes
dot git-workflows --waybar --since <one-hour-ago>through its own short-lived cache; left click opens the filtered TUI and right click refreshes the cache git-workflow-watch, its global hook, and its user systemd timer are obsolete and should not be installeddot doctorverifies the watched repo list, active Waybar workflow-runs module wiring, and absence of legacygit-workflow-watchleftoversdot git-notificationsshows the authenticated user's GitHub notification inbox; the API requiresghauthenticated with a classic token carryingnotificationsorreposcope- The Waybar notification module refreshes
dot git-notifications --waybarthrough its own short-lived cache; left click opens the notifications TUI and right click refreshes the cache dot doctorverifies GitHub notification API access plus the active Waybar notification module wiring
- Public dotfiles provide
daily-volume-zero.timerin laptop-only stow packages (scripts--laptopandsystemd--laptop), a user systemd timer that runs at 5am local time - The timer runs
daily-volume-zero, which sends a 10-second desktop notification, clears default sink mute, then sets the default PipeWire/WirePlumber sink volume to0% - The timer is optional and is not enabled by
dot; usesystemctl --user enable --now daily-volume-zero.timeron machines that should use it
DOTFILES_PUBLIC_DIR- public dotfiles path (default~/.config/dotfiles)DOTFILES_PRIVATE_DIR- private dotfiles path (default~/.config/dotfiles-private)DOT_ALLOW_PRIVATE-auto|always|never(defaultauto)DOT_PRIVATE_GH_USER- expected GitHub user for private actions (defaulttimmo001)DOT_PRIVATE_EXTRA_REPOS_FILE- extra private repo config file fordot git-diff/dot update/dot doctor(default$DOTFILES_PRIVATE_DIR/.dot-extra-repos, format:name|path[|schedule]or justpath; 5-field cron schedules such as* 8-15 * * 1-5filter diff/Waybar and matchingdot git-workflowsvisibility;dot doctorexpects each repo to be on a named branch with an upstream)DOT_PRIVATE_PACKAGE_REPO_FILE- private pacman repo config fordot(default$DOTFILES_PRIVATE_DIR/.dot-private-package-repo)DOT_PRIVATE_PACKAGES_FILE- private package list fordot(default$DOTFILES_PRIVATE_DIR/.dot-private-packages)DOT_PRIVATE_PACMAN_REPO_CONFIG- pacman repo snippet path written bydot(default/etc/pacman.d/timmo-private.conf)OMARCHY_REPO_BASE_DIR- Omarchy repo base path (default~/.config)DOT_OMARCHY_BRANCH- branch override for split Omarchy repos (currentlyhypr)DOT_BOOTSTRAP_BRANCH- branch forbootstrapsync (defaultdistro/omarchy)DOT_INCLUDE_OMARCHY_DIFF_REPOS- include Omarchy repos indot git-diff(1|0, default1)DOT_INCLUDE_OMARCHY_UPDATE_REPOS- include Omarchy repos indot updatesync (1|0, default1)DOT_INIT_NONINTERACTIVE- skip init questionnaire (1|0, default0)DOT_WORKFLOW_WATCH_REPOS_FILE- watched repo list file used bydot git-workflows(default$DOTFILES_PRIVATE_DIR/.git-workflow-watch-repos)DOT_DAILY_VOLUME_ZERO_TIMER_UNIT- 5am volume reset timer unit name (defaultdaily-volume-zero.timer)DOT_AUTO_CD- zsh wrapper auto-cd to first repo with changes afterdot git-diff; otherwise restore original dir (failed diff falls back to~/.config/dotfiles) (1|0, default1)DOT_AGENTS_SYNC_SOURCE- AGENTS file to mirror (default~/.config/opencode/AGENTS.md)DOT_AGENTS_SYNC_RULE_FILE- Cursor rule output path (default$DOTFILES_PRIVATE_DIR/agents/.cursor/rules/global-agents.mdc, else~/.cursor/rules/global-agents.mdc)DOT_AGENTS_SYNC_ON_UPDATE- runagents-syncafterdot update(1|0, default1)NOTES- notes vault git repo used bydot notesand OpenCode note commands (preferred; default~/Documents/notes)DOT_NOTES_DIR- compatibility notes vault override used whenNOTESis unsetDOT_FETCH_TTL_SECONDS- seconds to reuse last upstream fetch (default300)
- Clone
dotfilesto~/.config/dotfiles - Clone
dotfiles-privateto~/.config/dotfiles-private(if available) - Confirm
gh auth statusworks - Run
~/.config/dotfiles/scripts/.local/bin/dot doctor - Run
~/.config/dotfiles/scripts/.local/bin/dot init - Restart shell and confirm
dot helpis onPATH - Run
dot git-diffand verify expected repo state - Run
dot updateto validate sync + stow end-to-end