No description
Find a file
MohamedElashri b3abd28e9b
update
2026-06-20 10:39:47 +02:00
bash add generic linux dotfiles setup 2026-06-07 10:41:02 +02:00
cli Nov19th2024 update 2024-11-19 04:06:20 -05:00
git update 2026-06-20 10:39:47 +02:00
sh update 2026-06-20 10:39:47 +02:00
ssh update dotfiles. 2026-06-07 10:12:59 +02:00
templates/local add local templates 2026-06-07 10:55:34 +02:00
terminals update dotfiles. 2026-06-07 10:12:59 +02:00
zsh update 2026-06-20 10:39:47 +02:00
backup modularize the setup 2026-06-07 12:27:50 +02:00
bootstrap.sh add generic linux dotfiles setup 2026-06-07 10:41:02 +02:00
README.md modularize the setup 2026-06-07 12:27:50 +02:00
restore modularize the setup 2026-06-07 12:27:50 +02:00

dotfiles

Personal dotfiles designed to run on more than one Linux machine.

Quick Start

Clone the repository, then run:

./bootstrap.sh --yes

The default bootstrap behavior is conservative:

  • detect the package manager and install only base dependencies: curl, git, rsync, zsh
  • restore dotfiles as symlinks into $HOME
  • skip optional tool installers
  • back up replaced files under ~/.dotfiles-backup/<timestamp>/

To install optional tools too:

./bootstrap.sh --yes --optional-tools

Optional tools currently mean Oh My Zsh, Starship, Atuin, and Rust.

Restore Only

Use restore when dependencies are already installed:

./restore --link
./restore --copy
./restore --link --dry-run

--link keeps $HOME files pointing at this repo. --copy copies files into place. Existing targets are moved to ~/.dotfiles-backup/<timestamp>/ before replacement unless --no-backup is passed.

Machine-Specific Overrides

Do not fork the repo for host-specific paths or secrets. Put local-only files in:

~/.config/dotfiles/environment.local.zsh
~/.config/dotfiles/zshrc.local.zsh
~/.environment.local.zsh
~/.dotfiles.local.zsh

Examples of things that belong there:

  • machine-specific PATH entries
  • work-only aliases
  • private tokens or environment variables
  • host-specific SSH or cluster helpers

Templates are provided in templates/local/. They are examples only and are not installed by bootstrap.sh or restore.

Shell Layout

  • zsh/.zshenv: minimal zsh setup loaded by every zsh process
  • zsh/.zprofile: zsh login-shell setup
  • zsh/.zshrc: interactive zsh setup
  • zsh/core/: PATH, options, completion, and Oh My Zsh setup
  • zsh/aliases/: simple aliases grouped by domain
  • zsh/functions/: shell functions grouped by domain
  • zsh/integrations/: optional external tool hooks
  • zsh/*.zsh: compatibility wrappers for older installs
  • bash/.bashrc: interactive bash setup
  • sh/.profile: POSIX login-shell setup
  • cli/: user scripts restored to ~/cli

The zsh config skips missing tools and paths. For example, missing nvm, Homebrew, TeX Live, Starship, Atuin, or optional Oh My Zsh plugins should not break startup.

restore installs the zsh module directories under ~/.config/dotfiles/zsh/. In --link mode they point back to this repository; in --copy mode they are copied into place.