A carefully crafted collection of configuration files for Fish, Tmux, Ghostty, Helix, Zed and more, optimized for cross-platform use.
- Cross-platform compatibility: Works on macOS, Linux, and FreeBSD
- Theme support: Custom themes including Finde, Gruvbox Material, Lackluster, Zenbones, and more
- Modern tools: Configuration for cutting-edge tools like Ghostty terminal and Zed editor
- Shell enhancements: Fish shell with useful abbreviations, functions, and OS-specific configurations
- Development optimized: Tmux with sensible defaults and theme switching
- AI coding tools: Shared skills and commands for Claude Code, OpenCode, Amp, and Codex
| Component | Description |
|---|---|
| Fish | Shell with good defaults and easy to configure |
| Zsh | Alternative shell with platform-specific configurations |
| Component | Description |
|---|---|
| Ghostty | Modern GPU-accelerated terminal emulator |
| Rio | Hardware-accelerated terminal |
| Component | Description |
|---|---|
| Helix | A post-modern text editor written in Rust |
| Zed | High-performance, multiplayer code editor |
| Tmux | When editing remote I use Tmux to save sessions and manage windows |
| Lazygit | Terminal UI for git commands |
| Component | Description |
|---|---|
| Claude Code | Anthropic's CLI for Claude (skills and commands) |
| OpenCode | AI coding assistant (shares skills with Claude) |
| Amp | AI-powered editor (shares commands with Claude) |
| Codex | OpenAI's CLI (shares skills with Claude) |
This repository includes a shared ecosystem of skills and commands for AI coding assistants. The skills are defined once in claude/skills/ and symlinked to other tools.
| Skill | Description |
|---|---|
dev-browser |
Browser automation with persistent page state |
frontend-design |
Create distinctive, production-grade frontend interfaces |
ship |
Create a concrete plan for finishing a project |
guide |
Interactive guidance to complete a task themselves |
solveit |
Generate structured learning guides using the Polya method |
beads |
Track complex, multi-session work with dependency graphs |
skill-creator |
Guide for creating new skills |
claude/skills/ <- Primary skill definitions
|
+-> ~/.claude/skills (Claude Code)
+-> ~/.opencode/skill (OpenCode)
+-> ~/.codex/skills (Codex)
claude/commands/ <- Shared commands
|
+-> ~/.claude/commands (Claude Code)
+-> ~/.config/amp/commands (Amp)
While not directly configured in this repository, my dotfiles include support for terminal-based editors and tools, complementing my development workflow. The Tmux configuration works particularly well with Neovim for remote editing sessions.
This setup enables clicking file links in your browser (e.g., Phoenix error pages) to open them directly in the correct Neovim instance.
How it works:
nvsstarts Neovim with a socket at/tmp/nvim-$SESSION_NAME- Clicking
nvim://file/...URLs opens files in that instance - Automatically switches tmux session/pane and focuses Ghostty
Setup:
- Run
make binto install the handler scripts - Install the URL handler app (located at
~/Applications/Nvim URL Handler.appafter first setup) - Add to your project's
.mise.toml:
[env]
_.source = "~/.local/bin/mise-tmux-session"
PLUG_EDITOR = "nvim://file/__FILE__:__LINE__?tmux-session={{ env.TMUX_SESSION_NAME }}"- Start Neovim with
nvs(instead ofnvim) in your tmux session
- Git
- Make
- A package manager (Homebrew on macOS, apt/dnf on Linux)
Clone this repository:
git clone https://github.com/petar/dotfiles.git
cd dotfilesUse the Makefile to install specific components:
# Install all configurations
make
# Shells
make fish
make zsh
# Terminals
make ghostty
make rio
# Editors & Tools
make helix
make zed
make tmux
make lazygit
# AI Coding Tools
make claude
make opencode
make amp
make codex
# Scripts (nvim URL handler, etc.)
make binThese tools enhance both shells and should be installed first:
brew install eza # Modern ls replacement (aliased to ls)
brew install bat # Modern cat replacement (aliased to cat)
brew install fzf # Fuzzy finder- Install Fisher (plugin manager):
curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher- Install plugins:
fisher install jorgebucaran/autopair.fish
fisher install jethrokuan/z
fisher install PatrickF1/fzf.fish
fisher install IlanCosman/tide@v6- Configure Tide prompt:
tide configure- Install tools:
brew install zoxide # Directory jumping (use 'z' command)
brew install direnv # Per-directory environment variables
brew install mise # Version manager for dev tools
brew install gitu # Terminal UI for git (aliased to 'gu')- Clone ZSH plugins:
mkdir -p ~/.zsh
git clone https://github.com/zsh-users/zsh-autosuggestions.git ~/.zsh/zsh-autosuggestions
git clone https://github.com/zdharma-continuum/fast-syntax-highlighting.git ~/.zsh/fast-syntax-highlighting
git clone https://github.com/hlissner/zsh-autopair.git ~/.zsh/zsh-autopair
git clone https://github.com/sindresorhus/pure.git ~/.zsh/pureThese dotfiles are organized to be easily customizable:
- OS-specific configurations are isolated in separate files (darwin.fish, linux.fish, freebsd.fish)
- Theme switching is supported in Tmux and Ghostty
- Each tool has its own directory for clean separation of concerns
- Secrets are kept in separate files (secrets.fish) that are not tracked by git
Common issues and solutions:
- Symlinks not created: Ensure you have proper permissions in your home directory
- Fish plugins not working: Make sure Fisher is installed and run the plugin install commands
- Theme not applying: Check that the theme files are properly linked and your terminal supports the colors
- OS-specific configs not loading: Verify that the OS detection in the configs matches your system
MIT
