# dotfiles Personal and server dotfiles. Kept in two areas: - `servers/` — a single, generic set of server dotfiles (zsh, vim, bash, htop, neofetch) applied to any homelab server, rather than one folder per host - (personal dotfiles live at the repo root, kept separate from `servers/`) ## Layout ``` servers/ .zshrc zsh config (oh-my-zsh, agnoster theme, kubectl plugin) .vimrc vim config (dracula + lightline + Vundle) .bashrc bash config (standard Debian default) .config/htop/htoprc htop config .config/neofetch/config.conf neofetch config ``` These are the common baseline shared across the homelab hosts (iris, vega, nebula, nexus, ...). They were consolidated from the per-host configs into one generic set so a single `./install.sh` works on any server. ## What is NOT included (and why) These are intentionally excluded from the repo: - `.ssh/`, `.kube/`, `.docker/`, `.ansible/` — secrets / infra credentials - `.zsh_history`, `.viminfo`, `.zcompdump*`, `.netrwhist` — ephemeral caches - `.oh-my-zsh/` — upstream framework; reinstall instead of vendoring - `.vim/bundle/*` — Vundle-managed third-party plugins - `backup.sh`, `clean.sh`, `crontab.bak*`, `talosctl`, `places` — local utility scripts / binaries specific to each host ## Installing on a fresh server ```sh git clone git@git.ivanch.me:ivanch/dotfiles.git cd dotfiles chmod +x install.sh ./install.sh # detects Debian/Alpine, installs pkgs + oh-my-zsh, # deploys servers/ and installs Vim plugins # optional: ./install.sh --chsh (set login shell to zsh) # ./install.sh --dry-run (preview only) ``` Or as a single line (clone, install, then remove the folder): ```sh git clone git@git.ivanch.me:ivanch/dotfiles.git /tmp/dotfiles && \ cd /tmp/dotfiles && chmod +x install.sh && ./install.sh; cd /tmp && rm -rf /tmp/dotfiles ``` The installer: 1. Detects the OS / package manager (`apt` on Debian, `apk` on Alpine) and installs `git curl wget zsh vim`, plus CLI tools `htop`, `fzf`, `nslookup` (dnsutils/bind-tools) and the NFS client (`nfs-common`/`nfs-utils` for NFS mounts). `kubectl` is installed if available in the repos. 2. Installs oh-my-zsh (unattended) + the `zsh-autosuggestions` plugin. 3. Copies the `servers/` dotfiles into `$HOME`. 4. Clones the Vim plugins declared in `.vimrc` (dracula, lightline, vim-gitbranch) directly — no interactive step required. It is safe to re-run; every step is idempotent.