https://github.com/zerebos/dotfiles
My personal set of non-secret dotfiles
https://github.com/zerebos/dotfiles
config dotfiles shell terminal yadm zsh
Last synced: 2 months ago
JSON representation
My personal set of non-secret dotfiles
- Host: GitHub
- URL: https://github.com/zerebos/dotfiles
- Owner: zerebos
- License: mit
- Created: 2024-10-22T20:03:32.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2026-03-25T16:04:19.000Z (3 months ago)
- Last Synced: 2026-04-05T15:32:42.756Z (3 months ago)
- Topics: config, dotfiles, shell, terminal, yadm, zsh
- Language: Shell
- Homepage:
- Size: 159 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# zDotfiles
My personal ZSH dotfiles managed with [yadm](https://yadm.io/). A modern, modular ZSH configuration with curated tools and workflows for Unix/Linux development environments.
## 📸 Screenshots
### Terminal with Powerlevel10k

*Ghostty terminal with Powerlevel10k theme, fast-syntax-highlighting, and autosuggestions*
### Modern CLI Tools

*Replacements for traditional Unix tools with better output and features*
### Yazi File Manager

*Full-featured file manager with image previews, git integration, and custom plugins*
### FZF Git Workflow

*The `fshow` command: fuzzy-find git commits with full diff preview*
### Brewfile Helper Tool

*Interactive package selection using the `brewfile view` command*
## ✨ Features
- **🚀 Fast Shell Startup** - P10k instant prompt and optimized loading
- **📦 Modular Configuration** - Organized into logical components (lib, aliases, plugins)
- **🎨 Modern CLI Tools** - Replaces traditional Unix tools with modern alternatives
- **🔍 FZF Integration** - Fuzzy finding everywhere (git, files, scripts)
- **🛠️ Developer Workflows** - Specialized commands for Go, Node/Bun, Git
- **🎯 XDG Compliant** - Respects XDG Base Directory standards
- **📱 Multi-Terminal Support** - Configs for Ghostty, Kitty, Alacritty, WezTerm, Rio
- **⚡ Auto-Bootstrap** - One command setup with dependency management
## 📋 What's Included
### Shell Configuration
- **ZSH** with Powerlevel10k theme
- Syntax highlighting via fast-syntax-highlighting
- Auto-suggestions via zsh-autosuggestions
- Smart completion system
- Custom aliases and functions organized by category:
- Navigation shortcuts
- Git workflows
- File operations
- Development tools
- Container management
- System utilities
### Modern CLI Tools
Replacements for traditional Unix commands:
- `eza` → better `ls` with icons and colors
- `bat` → better `cat` with syntax highlighting
- `erd` → better `tree` with better layouts
- `fd` → better `find` with simpler syntax
- `ripgrep` → faster `grep`
- `zoxide` → smarter `cd` with frecency
- `bottom` → better `top` with more features
- `dua-cli`, `gdu`, `diskonaut` → disk usage analyzers
### Development Tools
- **Git**: `gh`, `lazygit`, `git-delta`
- **Editors**: `micro` with custom colorschemes
- **Languages**: Go, Bun/Node.js, Rust, Zig toolchains
- **Utils**: `jq`, `yq`, `hyperfine`, `silicon`, `glow`
- **TUIs**: `yazi` (file manager), `presenterm` (presentations), `fastfetch`
### Applications & Services
- File manager: Yazi with plugins
- Terminal: Multiple configs (Ghostty primary)
- SSH: Wishlist, termscp
- 1Password CLI integration
## 🚀 Quick Start
### Prerequisites
- Git
- ZSH (this configuration is ZSH-specific)
- Internet connection
- Supported OS: macOS or Linux
- Note: Windows is supported via WSL, but native Windows Terminal config is not included
### Installation
1. **Install YADM**
```bash
# macOS
brew install yadm
# Linux (Ubuntu/Debian)
sudo apt install yadm
# Linux (Arch)
sudo pacman -S yadm
```
2. **Clone this repo**
```bash
yadm clone https://github.com/zerebos/dotfiles.git
```
3. **Run bootstrap**
```bash
yadm bootstrap
```
This will:
- Install Homebrew (if missing)
- Install essential tools via Homebrew
- Set up Yazi plugins
- Configure locale settings
4. **Install additional tool bundles** (optional)
```bash
# Install multiple brewfiles at once
brewfile install dev dev-go mac
# Or browse and install individual packages interactively
brewfile view dev # Browse dev tools with fzf
brewfile search git # Search for git-related tools
# See all available brewfiles
brewfile list
```
5. **Set ZSH as default shell** (if not already)
```bash
chsh -s $(which zsh)
```
6. **Restart your terminal**
7. **Validate your installation** (optional)
```bash
./bin/validate-dotfiles
```
This helper script checks that:
- Essential CLI tools are installed
- Directory structure is correct
- ZSH configuration is properly loaded
- Environment variables are set
- Custom aliases and functions are available
The script is useful for troubleshooting installation issues or verifying your setup after updates.
## 📁 Structure
```
dotfiles/
├── .config/
│ ├── zsh/ # ZSH configuration
│ │ ├── .zshrc # Main config file
│ │ ├── lib/ # Core libraries
│ │ ├── aliases/ # Categorized aliases
│ │ └── plugins/ # Plugin configurations
│ ├── yadm/ # YADM-specific configs
│ │ ├── bootstrap # Auto-setup script
│ │ └── brewfiles/ # Homebrew bundles
│ ├── git/ # Git configuration
│ ├── kitty/ # Kitty terminal config
│ ├── ghostty/ # Ghostty terminal config
│ ├── alacritty/ # Alacritty terminal config
│ ├── wezterm/ # WezTerm terminal config
│ ├── yazi/ # Yazi file manager config
│ ├── micro/ # Micro editor config
│ └── ... # Other app configs
├── bin/ # Custom scripts
└── .zshenv # ZSH environment setup
```
## 🎯 Key Aliases & Functions
### Navigation
- `..` - Go up one directory
- `cd` - Aliased to `z` (zoxide) for smart navigation
- `cdg` - Jump to git root
- `cdp` - Jump to project root (git, npm, go, cargo)
- `mkcd ` - Create directory and cd into it
- `zz` - Fuzzy find and jump to frequent directories
### Git
- `gs` - git status
- `ga` - git add
- `gp` - git pull
- `gcm` - git commit -m
- `gpu` - git push
- `glg` - git log graph
- `fshow` - Fuzzy find git commits with preview
- `fstash` - Fuzzy find git stashes with preview
### Files
- `ls` - eza with icons (if available)
- `cat` - bat with syntax highlighting
- `tree` - erd with better layout
- `ll` - long listing
- `lla` - long listing with hidden files
### Development
- `serve [port]` - Start HTTP server (bun or python)
- `curlj ` - Get JSON with pretty printing
- `rpkg` - Run package.json script (fuzzy select)
- `lspkg` - List package.json scripts
- `gor [target]` - Run go program
- `gob [target]` - Build go program to ./bin
### System
- `fkill` - Fuzzy find and kill process
- `gdd` - Show disk usage
- `btm` - Display system information
- `listening` - Show open ports
## 🎨 Customization
### Changing the Theme
The Powerlevel10k theme can be reconfigured:
```bash
p10k configure
```
### Adding Your Own Aliases
Create a new file in `.config/zsh/aliases/` with a `.zsh` extension. It will be auto-loaded.
### Adding Custom Brewfiles
Create a custom Brewfile in `.config/yadm/brewfiles/` (e.g., `personal.rb`) and install with:
```bash
brewfile install personal
```
### Terminal Configurations
This repository includes configurations for multiple terminal emulators. These are maintained to test TUI and CLI applications across different terminals for correctness and compatibility.
**Primary Terminal**:
- **macOS/Linux**: [Ghostty](https://ghostty.org/) (or [cmux](https://github.com/manaflow-ai/cmux) which uses Ghostty under the hood)
- **Windows**: Windows Terminal (config not included in dotfiles)
**Additional Terminal Configs** (for testing):
- **Kitty** - Feature-rich, GPU-accelerated, great image protocol support
- **Alacritty** - Minimal, very fast, cross-platform
- **WezTerm** - Lua-configurable, excellent features
- **Rio** - Modern Rust-based terminal
You can install any of these terminals and use their respective configs. The shell configuration works seamlessly across all of them.
## 🧩 Installing Additional Tools
After the base installation, you can install additional tool bundles using the `brewfile` helper script:
```bash
# Install specific brewfiles (e.g., dev tools on macOS)
brewfile install dev mac
# Interactively browse and install individual packages
brewfile view dev # Browse dev brewfile with fzf
brewfile search git # Search across all brewfiles for packages matching "git"
# List available brewfiles
brewfile list
```
Available brewfiles:
- `essentials` - Core CLI tools and TUIs (installed by bootstrap)
- `dev` - General development tools (git, gh, lazygit, languages)
- `dev-go` - Go-specific tools and utilities
- `dev-rust` - Rust toolchain and utilities
- `dev-zig` - Zig toolchain
- `dev-extras` - Additional development utilities
- `dev-gui` - GUI development applications
- `containers` - Container tools (Docker, Podman, etc.)
- `mac` - macOS-specific applications
- `vscode` - VS Code extensions via brew
See [`bin/brewfile`](bin/brewfile) for full usage details and implementation.
## 🔧 Maintenance
### Update Dotfiles
```bash
yadm pull
```
### Update Tools
```bash
brew update && brew upgrade
```
### Update Yazi Plugins
```bash
ya pack -u
```
### Validate Your Setup
After updates or if you encounter issues, verify your installation:
```bash
./bin/validate-dotfiles
```
This will check all critical components and help identify any missing tools or configuration issues.
### Commit Changes
```bash
yadm add
yadm commit -m "Description"
yadm push
```
## 💡 Tips
1. **FZF Keybindings**:
- `Ctrl+R` - Search command history
- `Ctrl+T` - Search files
- `Alt+C` - Search directories
2. **Zoxide Navigation**:
- `z foo` - Jump to directory matching "foo"
- `zi` - Interactive directory selection
3. **Git Workflows**:
- Use `fshow` to interactively browse commits
- Use `fstash` to view stash contents
4. **Performance**:
- The config is optimized for fast startup
- Heavy plugins are lazy-loaded
- Completions are cached
## 🤝 Contributing
Feel free to open issues or submit PRs if you find bugs or have suggestions!
## 📄 License
MIT License - Feel free to use and modify as you wish.
## 🙏 Credits
Built with and inspired by:
- [yadm](https://yadm.io/) - Dotfile manager
- [Powerlevel10k](https://github.com/romkatv/powerlevel10k) - ZSH theme
- [fzf](https://github.com/junegunn/fzf) - Fuzzy finder
- [zoxide](https://github.com/ajeetdsouza/zoxide) - Smart cd
- And many other amazing open source tools
---
**Note**: This is a ZSH-specific configuration. While some tools and configs work across shells, the core shell configuration requires ZSH. Review and customize before using.