Modern development environment configuration for Linux and macOS. Features a config-driven installation system with YAML configuration, presets, and interactive tool selection.
curl -fsSL https://raw.githubusercontent.com/fodurrr/dotfiles/main/setup.sh | bashOr with a preset:
curl -fsSL https://raw.githubusercontent.com/fodurrr/dotfiles/main/setup.sh | bash -s -- --preset developergit clone https://github.com/fodurrr/dotfiles.git ~/dotfiles
cd ~/dotfiles
./install.sh./install.shWalks you through category-by-category tool selection with descriptions.
./install.sh --preset minimal # Shell + CLI tools (~5 min)
./install.sh --preset developer # Full dev environment (~15 min)
./install.sh --preset macos # macOS-optimized setup./install.sh --preset developer --dry-runPreview what would be installed without making changes.
- Zsh with vi-mode
- Starship prompt
- Zinit plugin manager
- tmux - Industry-standard multiplexer (recommended)
- zellij - Modern Rust-based alternative
- ghostty, warp, alacritty, kitty, wezterm - GPU-accelerated terminals (GUI)
- eza - Modern ls with icons
- bat - Cat with syntax highlighting
- fzf - Fuzzy finder
- zoxide - Smart cd
- fd - Fast find
- ripgrep - Fast grep
- yazi - Terminal file manager
- jq - JSON processor
- tldr - Simplified man pages
- Neovim with LazyVim
- mise - Polyglot version manager
- Docker - Container runtime
- lazygit - Terminal git UI
- gh - GitHub CLI
- delta - Beautiful diffs
- neovim - Hyperextensible vim-based editor (with LazyVim, NvChad, etc.)
- zed - Fast native code editor (GUI, recommended)
- vscode - Popular extensible editor (GUI)
- cursor - AI-native code editor (GUI)
The installer uses dotfiles.yaml for configuration. Create your own or use a preset:
shell: zsh
prompt: starship
plugin_manager: zinit
terminal: tmux
editors:
- neovim:
config: lazyvim
version_manager: mise
languages:
- node: "22"
- elixir: "1.18"
node_package_manager: bun
container: docker
git_tools:
- gh
- lazygit
- delta
cli_tools:
- eza
- bat
- fd
- ripgrep
- zoxide
- fzf
- jq
- tldr
extras:
- direnvSee dotfiles.example.yaml for all options.
Note: GUI tools (terminals like ghostty/warp, editors like vscode/zed/cursor) require manual installation. The installer will notify you with download links.
dotfiles/
├── .zshrc.d/ # Modular zsh snippets
├── .config/ # App configs (stowed)
│ ├── nvim/ # Neovim (LazyVim)
│ └── starship.toml # Starship prompt
├── scripts/
│ ├── lib/ # Shared libraries
│ │ ├── common.sh # Logging, utilities
│ │ ├── package-manager.sh # apt/dnf/brew abstraction
│ │ ├── config-parser.sh # Parse dotfiles.yaml
│ │ └── interactive.sh # Gum-based selection UI
│ ├── components/ # Tool installers
│ ├── registry/
│ │ └── tools.yaml # Tool registry with descriptions
│ └── build-zshrc.sh # Assembles .zshrc
├── presets/ # Installation presets
│ ├── minimal.yaml
│ ├── developer.yaml
│ └── macos.yaml
├── install.sh # Main installer
└── dotfiles.example.yaml # Example config
./install.sh # Interactive install
./install.sh --preset developer # Use preset
./install.sh --dry-run # Preview changes
./scripts/sync.sh # Sync dotfiles via stow
./scripts/build-zshrc.sh # Rebuild .zshrc from snippets| Alias | Command |
|---|---|
ls |
eza with icons |
la |
eza long format |
cat |
bat with highlighting |
gs |
git status |
lg |
lazygit |
z |
zoxide (smart cd) |
| OS | Status |
|---|---|
| Ubuntu 20.04+ | Fully Supported |
| Debian 11+ | Fully Supported |
| Fedora 35+ | Fully Supported |
| macOS | Partial (presets ready) |
Peter Fodor - @fodurrr
MIT