A curated set of dotfiles and scripts to bootstrap a comfortable, modern dev environment. It includes shell configuration (zsh), a Lua-based Neovim setup, and a small set of helper scripts to install prerequisites and symlink everything into place.
home/— Files intended to live directly under$HOME(e.g., shell RCs).config/— Files for$HOME/.config(e.g.,nvim/for the Neovim config written in Lua).scripts/— Helper/installer scripts used during setup.install.sh— One-shot installer that orchestrates the setup.- Extras:
guake.conf(terminal),vimium.json(browser Vim keybinds),resticprofile.toml,sanoid.conf(backup/snapshots).
The repository is primarily Lua and Shell, reflecting the Neovim config plus installer scripts.
Requirements:
gitand a POSIX-like environment (Linux/macOS). The installer will try to install anything else it needs (e.g., zsh, Neovim) depending on your system.
# clone
git clone https://github.com/erichlf/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
# run the installer
./install.shWhat the installer typically does:
- Detects your OS/distro.
- Installs or updates core tools (zsh, neovim, etc.) as needed.
- Creates symlinks from the repo to your
$HOMEand$HOME/.config. - Optionally applies terminal/editor/browser extras.
Prefer to do things manually? See Manual linking below.
If you’d rather link files yourself:
- Copy or symlink anything under
home/into$HOME. - Copy or symlink anything under
config/into$HOME/.config. - Launch a new shell to pick up zsh config; start
nvimto let plugins finish bootstrapping.
Tip: If you use GNU Stow, you can mirror
home/andconfig/into place cleanly (not required by the repo, but convenient).
cd ~/.dotfiles
git pull
# re-run the installer if you want it to reconcile changes
./install.shThere is no method right now to uninstall. However, you can remove symlinks you
created and/or restore your previous dotfiles backup. If you used Stow,
stow -D <package> will reverse those links. To remove packages it would be
more of a manual operation by reading what pacakges were installed and then
uninstalling them.
dotfiles/
├─ home/ # items that should live directly in $HOME
├─ config/ # items for $HOME/.config (e.g., nvim/)
├─ scripts/ # installer and helper scripts
├─ install.sh # main entry point for setup
├─ guake.conf # terminal config (optional)
├─ vimium.json # browser keybindings (optional)
├─ resticprofile.toml# restic profiles (optional)
├─ sanoid.conf # zfs-auto-snapshot profiles (optional)
└─ private/ # local-only overrides (not tracked)
(See the repo root for the actual files and directories.)
Q: Can I pick and choose?
Yes. Run source scripts/utils.sh and then run the commands you'd like to run.
Q: macOS or Linux?
Both are supported; but currently install.sh focuses on android (termux),
cachyos, and ubuntu.
Q: What keys are supported in the yaml files?
- apt-get, apt: uses apt-get to install packages
- pacstall: uses pacstall to install packages, should have extras: install_chaotic prior
- pac: uses pacman to install packages
- yay: uses yay to install packages, should have extras: install_yay prior
- pkg: uses termux pkg to install packages
- base-ubuntu: uses apt-get to install packages as a first step
- base-arch: uses pacman to install packages as a first step
- base-phone: uses termux pkg to install packages as a first step
- extras: run aliases that are in the environment (sourced from utils.sh) by name
- final-ubuntu: uses apt-get to install packages as a final step
- final-arch: uses pacman to install packages as a final step
- final-phone: uses termux pkg to install packages as a final step
- final-extras: runs aliases that are in the environment (sourced from utils.sh) by name as a final step
Open source—see the LICENSE file in the repo.