My personal dotfiles repository. Feel free to modify for your own use.
This repository is organized into distinct directories based on their purpose:
-
home/- Configuration files (dotfiles) that get symlinked into$HOME. This includes shell configs (.bashrc,.bash_aliases), editor configs (.vim), tool-specific configs (.tflint.hcl,.gitignore_global), and package management (Brewfile). -
bin/- Executable scripts that get symlinked into~/binand added to your$PATH. These are user-facing tools you can run from anywhere in your shell. -
util/- Utility scripts that support the dotfiles infrastructure but are NOT linked into~/bin. These include installation helpers (helpers.sh,git-config.sh) and standalone utilities that you run directly from the repo (likeupdate-mac-hostname.sh). -
Root files - Installation (
install.sh), documentation (README.md), and project metadata (LICENSE,.editorconfig).
If you intend to use this as a template for your dotfiles, and you are not me, I strongly suggest you do the following things to personalize it.
- ⭐ this repo on GitHub!
- Remove or replace the authorized_keys with your own authorized_keys. These aren't installed by the script, they only exist for manual copying.
- (Optional) Inside
install.sh, change the git config options. - (Optional) Change any other files to your liking.
git clone https://github.com/abyss/dotfiles.git- (Optional) On Windows, see Getting symlinks to work on Windows.
bash ./dotfiles/install.sh
Warning: this will remove your current
~/.bashrc,~/.vim,~/.bash_aliases,~/.tflint.hcl,~/.gitignore_global, and~/Brewfile.
- (Optional) On MacOS,
brew bundlewill install the~/Brewfilecontents.
Any existing files will be updated by a git pull.
Creation of new files, changes to git config options, and install process may be updated by executing install.sh again.
If you are running the install on Windows, the symlinks will not work out of the box. To fix this, you need to do two things:
- Run Git Bash as Administrator
- Set the following environment variable first:
export MSYS=winsymlinks:nativestrict
- The
~/bindirectory will be created if it does not already exist. - All files in
home/will be symlinked into your home directory. ~/.system_aliaseswill be created if it does not already exist. You can put system-specific aliases here that you do not want to be tracked by git.- git config global options are configured inside of
install.sh, rather than by file. install.shshould be able to be run multiple times with no bad side effects.- The
.sshdirectory includes an authorized_keys, but it is not managed automatically.