- Keep all config files in this git repo and symlink them to your
$HOME
- Install and
zsh
shell. This can be run in a fresh Unix installation - Use
devbox
as vendor-agnostic package manager (uses Nix in the background) - Keep global apps and configs as few as possible, use devbox and direnv for setups per project/directory
- Deterministic: Can run scripts multiple times
- As few assumptions/restrictions as possible
- No hard-coded paths, use
$_SETUP
to reference files in this repository - (Almost) no apps on host system like python runtime
zsh
: Bootstrapping is a problem: Must read.zshrc
to makezsh
via devbox available. Must be recognized by VSCode.git
: Bootstrapping & git is used everywhere, so for performance of devbox shells
- No hard-coded paths, use
- Allow local customization:
- Customize via
.envrc
anddevbox.json
- Integrate some
.local
files where needed, e.g.~/.gitconfig.local
and~/.zshrc.local
- Customize via
- Install a nerdfont
- Install zsh (https://github.com/ohmyzsh/ohmyzsh/wiki/Installing-ZSH) and make it the default (
chsh -s "$(which zsh)"
) - Install git
- Clone this repository to any location including submodules
git clone --recurse-submodules https://github.com/mikel-jason/personal-env-setup
- Run
./scripts/install.sh
to install mandatory - Run
./scripts/bootstrap.sh
- Reload your terminal
- Optional: Add a post-receive hook to auto-update on every pull
See Project Guide to read about creating local project envs.
- GitHub: holman/dotfiles: Method of loading files based on the file ending
- YouTube: DevOps Toolkit - Nix for Everyone: Unleash Devbox for Simplified Development: Why devbox
- Arch Linux Wiki: XDG Base Directory: Extensive list of apps with respective options to change config locations