Welcome
$HOME
!
This repo makes moving into your new mac a breeze by automatically furnishing it with your favorite app(liance)s, and giving you the tools you need to maintain it. I have made my preferences open source to serve as a blueprint and inspiration for others.
Whether or not dotfile repos should be forked is a topic of hot debate. If you do fork this repo, I strongly recommend you personalize the contained files before unpacking.
Jump to: β¨ TL;DR | π₯ Demo | π¦ Unpack | π οΈ Maintain | ποΈ Contents | ποΈ Personalize | π‘ Inspiration | π Resources
The floor plan at a glance:
Gif/Video coming soon.
Warning
Before unpacking, review the repo contents to make sure they match your style and backup your existing configs.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/boldandbrad/dotfiles/main/ship.sh)"
This will download and run ship.sh
, which clones this repo to
~/Setup/dotfiles
(if not present), and then prompts you to run
unpack.sh
.
Alternatively you can clone the repo yourself and run
unpack.sh
manually.
git clone --recursive https://github.com/boldandbrad/dotfiles.git ~/Setup/dotfiles
cd ~/Setup/dotfiles && ./unpack.sh
The unpack script explains what it will do, prompts before doing so, and is idempotent. This means it can be safely run multiple times without compounding changes or breaking.
In brief, unpacking does the following:
- β Verify system compatibility
- π Check and prompt for system updates
- β¬οΈ Install or update user packages and apps
- π Symlink user dotfiles and configs
- βοΈ Apply user system settings
- π± Clone user github repos
Continue reading for more details on what to expect.
To make system maintanence simpler post-unpack, a handful of convenient command aliases are provided. Invoke these from anywhere.
Command | Description |
---|---|
sys-refresh |
Rerun system setup (unpack.sh ) |
sys-clean |
Clean system caches and app data (β Coming soon) |
dot-commit |
Persist current dotfiles to github (β Coming soon) |
dot-relink |
Relink installed dotfiles |
zsh-reload |
Reload shell environment (.zshrc ) |
dep-check |
Check if all apps and dependencies are installed |
dep-refresh |
Install/update all apps and dependencies |
dep-prune |
Uninstall apps and dependencies that aren't needed |
git-reclone |
Reclone user github repos |
The contents of this repo are organized into a few high level directories.
dotfiles/
βββ config/ # Config files for packages and apps. Symlinked by dotbot.
β βββ ..
βββ scripts/ # Shell scripts for system and tool setup. Called by unpack.sh.
β βββ ..
βββ vendor/ # Dependencies which are managed as git submodules.
β βββ ..
βββ ..
βββ Makefile # Helpful development commands.
βββ ship.sh # Remote installation script.
βββ unpack.sh # Main installation and setup script.
βββ symlinks.yaml # Dotbot symlink configuration.
The config/
directory contains config files for
packages and apps. They are symlinked to their respective locations on the
system by dotbot
as specified in symlinks.yaml
at the
repo root.
Most packages and apps respect the
XDG base directory specification
to determine where to store configurations and data. This creates consistency
and predictability while keeping your $HOME
free of clutter.
The following XDG variables are defined in .zshenv
,
which is sourced before symlinking.
Env Variable | Location |
---|---|
XDG_BIN_HOME |
~/.local/bin |
XDG_CACHE_HOME |
~/.local/var/cache |
XDG_CONFIG_HOME |
~/.config |
XDG_DATA_HOME |
~/.local/share |
XDG_LIB_HOME |
~/.local/lib |
XDG_STATE_HOME |
~/.local/state |
The scripts/
directory contains shell scripts that automate system and tool
setup. This includes OS specific scripts for installing apps and dependencies,
and system configurations. Most of these scripts are called directly from
unpack.sh
at the repo root.
Docs coming soon.
If you have cloned or are reusing snippets from this repo for your own system setup, there are a handful of things that should change before unpacking.
- Change the value of
GITHUB_USER
username in bothship.sh
andunpack.sh
. This is used to automatically clone your public git repos, including this one. - Search for and replace all other 'boldandbrad' references with your preferred user name or value.
There are tons of great dotfile and machine setup repos out there. In particular, I took inspiration from these gems:
- dreamsofcode-io/dotfiles - nvim and tmux configs
- lissy93/dotfiles - install scripts and repo structure
- stefanzweifel/dotfiles
- superatomic/dotfiles
- webpro/dotfiles
- Roadmap - planned changes and updates to this repo
- boldandbrad docs π - my personal dev docs
- Dotbot π - dotbot github repo
- Dotfiles Community π - a great collection of dotfile resources
- dotfyle π - discover neovim plugins and configurations, including mine
Copyright (c) 2021-present Bradley Wojcik. Released under the MIT License. See LICENSE for details.