Skip to content

atkinchris/dotfiles

Repository files navigation

dotfiles

Collection of dotfiles and helper scripts

Usage

Clone this repo, and run ./bootstrap.sh. This will copy all the dotfiles (but not helper scripts) into your home directory.

Installer scripts in ./scripts/ are designed to be idempotent and safe to re-run. They skip already-installed components where possible and use unattended install modes for tools like Oh My Zsh.

Files

The ./bootstrap.sh script will sync files from this repo to your home directory. It uses a static list of files (./files.txt) to explicitly know what to copy. If you add new files to this repo that need to be copied to the home directory, ensure they are added to that list.

This list was built using:

find . -type f ! -name '*.sh' ! -name '*.md' ! -path './.git/*' > files.txt

Committing Changes

If you've updated your local copies of these files in your home directory, and want to commit them back to this repo, use the following command to copy them over (this is the reverse of what is in ./bootstrap.sh).

bash ./scripts/sync-back.sh

This helper script is intentionally stricter than a plain reverse rsync:

  • It syncs entries from files.txt as usual.
  • For ./.local/bin/, it copies back only files that already exist in this repository.
  • Any host-only scripts in ~/.local/bin are ignored and will not be copied into this repo.

Useful Tips

Copying files from another computer

If you have access to another system over SSH (such as a Mac with "Remote Login" enabled), you can copy files and folders from the remote system to your local with the following command. This will recursively bring over any files and folders specified, excluding files which would, within a folder, have been ignored by that folder's .gitignore file.

rsync -avr --no-perms --filter=':- .gitignore' remote-system:~/<PATH>/ ~/<PATH>

Brew

These dotfiles are primarily used on a Mac, with Homebrew. To install supporting tools and CLIs from brew, a Brewfile is provided.

Note: items in the Brewfile are installed as part of ./scripts/brew.sh.

# Install applications from Homebrew
brew bundle install --file=Brewfile

# Backup a list of installed applications to the Brewfile
# This needs --force to overwrite the current Brewfile
brew bundle dump --no-vscode --file=Brewfile --force

Shell linting

Shell scripts in this repository are linted with shellcheck and formatting-checked with shfmt. Sourced Bash dotfiles such as .aliases, .functions, and .bashrc are validated with shellcheck. The .zshrc file is validated with zsh -n syntax checks.

To run locally:

bash ./scripts/lint-shell.sh

Python linting

Python scripts (detected via #!/usr/bin/env python-style shebangs, including python3) are linted with ruff.

To run locally:

bash ./scripts/lint-python.sh

About

Collection of dotfiles and helper scripts

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors