-
Clone the repository into
.dotfiles:git clone git@github.com:kszpieg/dotfiles.git .dotfiles
or use HTTPS variant:
git clone https://github.com/kszpieg/dotfiles.git .dotfiles
-
Run proper bash script:
-
for full installation run
setup.sh(it may require to provide sudo password during the process)cd ~/.dotfiles && chmod +x setup.sh && ./setup.sh
-
for a minimal installation on a server (Ubuntu/Debian only) add
--server— no Homebrew, compiler, terraform or AI tools; the tools behind the aliases come fromapt(eza,zoxide,jq,dig), whilestarshipandtlrcare installed as single binariescd ~/.dotfiles && chmod +x setup.sh && ./setup.sh --server
-
for only copy configs run
configs.sh(it's contained insetup.shso it's not necessary to run it separately)cd ~/.dotfiles && chmod +x configs.sh && ./configs.sh
-
for Termux on Android run
termux.sh— onlyopenssh,git,eza, the SSH config and bash aliases fromtermux/aliases.sh(the everyday ones from.aliases.zsh, read-only ones from oh-my-zsh's git plugin, plusssh-syncto pull both repos and reinstall the SSH config), the phone is just a terminal for the serverspkg install git && git clone https://github.com/kszpieg/dotfiles.git ~/.dotfiles cd ~/.dotfiles && chmod +x termux.sh && ./termux.sh
ssh/install.sh (run by configs.sh and termux.sh) copies ssh/config to ~/.ssh/config with mode 600 — copied, not linked, because ssh rejects configs writable by others (777 on WSL /mnt drives). The previous config is kept once as ~/.ssh/config.bak.
ssh/config holds only Host * defaults and Include ~/.ssh/config.d/*.conf. Host entries live in the private ssh_config repo: if it's cloned into /mnt/e/gitdir, ~/gitdir or ~/gdir, the installer copies its *.conf files into ~/.ssh/config.d/; otherwise it skips them. After a change in either repo: git pull and run ssh/install.sh again.
-
(Optional) Copy manually
update-motd.d/40-fastfetchinto/etc/update-motd.dand usesudo chmod +x 40-fastfetchcommand if you want some fancy stats about the system displayed in MOTD. -
Enjoy!
Shell:
zsh+ oh-my-zsh withfzf-tab,zsh-autosuggestionsandzsh-syntax-highlighting- starship prompt
zoxide(replacescd)
CLI tools (see Brewfile and setup.sh for the full list):
| Tool | Purpose |
|---|---|
bat |
cat alternative |
eza |
ls alternative |
fd |
find alternative |
ripgrep |
grep alternative |
sd |
sed alternative |
fzf |
fuzzy finder |
tlrc |
tldr client (help alias) |
jq, jless |
JSON processing and viewing |
htop |
process and resource monitor |
dust |
disk usage |
doggo, nmap, httpie |
network tools |
watchexec, just |
dev utilities |
fastfetch |
system info |
git-lfs |
Git LFS support (required by .gitconfig) |
terraform |
infrastructure as code (from the HashiCorp repository) |
AI tools: Claude Code, GitHub Copilot CLI, Codex CLI (update all with aiup).
Claude Code status line: .claude/statusline.sh (symlinked by configs.sh) shows model, repo, context and 5h/7d rate limits, and snapshots the limits to ~/.claude/state/usage.json. It needs jq and a Nerd Font, and has to be enabled once in ~/.claude/settings.json:
"statusLine": { "type": "command", "command": "~/.claude/statusline.sh", "refreshInterval": 30 }