- Shell 100%
| .aliases | ||
| .bash_profile | ||
| .bashrc | ||
| .gitconfig | ||
| .gitignore | ||
| .htoprc | ||
| .selected_editor | ||
| .tmux.conf | ||
| .vimrc | ||
| .zshrc | ||
| CLAUDE.md | ||
| dotfiles.sh | ||
| README.md | ||
dotfiles
Portable shell configuration, synced across Debian and macOS machines.
Everything in $HOME is a symlink back into this repo, so editing a file here
changes it everywhere the repo is checked out.
Install
git clone git@git.edwork.org:edwork/dotfiles ~/Projects/dotfiles
cd ~/Projects/dotfiles && ./dotfiles.sh
Existing real files are moved to ~/.dotfiles-backup/<timestamp>/ before being
replaced — nothing is overwritten in place.
Updating
dotfiles # pull, re-link, reload the current shell
The script is idempotent — run it as often as you like. A link that is already
correct is left alone silently, so a quiet run means the machine is in sync. This is
also how new files reach existing machines: add a line to LINKS in dotfiles.sh
and the next run picks it up.
DRY_RUN=1 ~/.dotfiles.sh prints what would happen without touching anything.
Automatic updates
.zshrc and .bashrc check the mtime of ~/.edworkdotfiles on shell startup and
run dotfiles if it is more than 30 days old.
| File | Effect |
|---|---|
~/.edworkdotfiles |
Sentinel; its mtime is the 30-day clock. Touched on every run. |
~/.edworkoffline |
Kill switch. If present, auto-update never runs. disableupdate creates it. |
A failed git pull (offline, diverged) is a warning, not an error — links are still
reconciled from whatever is on disk. Git runs with BatchMode and a 5-second connect
timeout so an unreachable server can never hang a new terminal.
Per-machine customisation
~/.local_aliases is created empty on first run, sourced last by both shells, and is
not tracked. Machine-specific aliases, paths, and secrets belong there.
What's here
| File | Links to |
|---|---|
.aliases |
~/.aliases — shared aliases and functions for both shells |
.bashrc / .bash_profile |
~/.bashrc, ~/.bash_profile |
.zshrc |
~/.zshrc |
.gitconfig |
~/.gitconfig — only when $USER is edwork |
.htoprc |
~/.config/htop/htoprc |
.tmux.conf |
~/.tmux.conf |
.vimrc |
~/.vimrc |
.selected_editor |
~/.selected_editor — Debian select-editor; inert elsewhere |
dotfiles.sh |
~/.dotfiles.sh |
Shell history from both shells is unified into ~/.shell_history.
Many aliases (update, upgrade, memdiag, ports, ip) are Debian-only by
design and are not expected to work on macOS.