A fully reproducible Linux development environment built around symlinks.
This repository manages everything in ~/.config and essential dotfiles in ~, all tracked in one place and safely symlinked back to the system.
The goal is simple: clone the repo, run one script, and get your exact setup every time.
No manual copying. No drift. No mystery state.
- A clean, versioned
~/.config - Predictable dotfiles in
~ - Idempotent install and update scripts
- Health checks to catch broken symlinks
- A heavily tuned Neovim setup with documentation
- A Zsh environment that feels fast, safe, and modern
This dotfiles setup now includes Starship, a blazing-fast, cross-shell prompt written in Rust! It works alongside Powerlevel10k, giving you the flexibility to switch between themes instantly.
Why Starship?
- β‘ Blazing Fast - Written in Rust for maximum performance
- π¨ Beautiful - Rich colors, icons, and 40+ language/tool detections
- π§ Customizable - Simple TOML configuration
- π Cross-Shell - Works with Zsh, Bash, Fish, PowerShell, and more
- π¦ Comprehensive - Auto-detects Git, Docker, Cloud providers, and more
Built-in toggle mechanism makes switching effortless:
| Command | Description |
|---|---|
toggle |
Toggle between Starship and Powerlevel10k |
toggle starship |
Switch to Starship |
toggle p10k |
Switch to Powerlevel10k |
check-prompt |
Check which prompt is currently active |
Quick Start:
# Install Starship
curl -sS https://starship.rs/install.sh | sh
# Switch to Starship
toggle starship
exec zsh
# Switch back to Powerlevel10k anytime
toggle p10k
exec zshπ Full Guide: See STARSHIP_GUIDE.md for installation, configuration, and customization details
dot_files/
β
βββ config/ # mirrors ~/.config
β βββ alacritty/
β βββ kitty/
β βββ wezterm/
β βββ ghostty/
β βββ nvim/
β βββ starship.toml # Starship prompt configuration
βββββββ STARSHIP_GUIDE.md # Starship configuration and usage guide
β βββ ... # other app configs
β
βββ home/ # dotfiles in ~ (not ~/.config)
β βββ .bashrc
β βββ .zshrc
β βββ .p10k.zsh
β βββ .gitconfig
β βββ .aliases
β βββ ...
β
βββ scripts/ # helper scripts
β βββ install.sh # links all configs, dotfiles, and scripts; ensures Zsh plugins installed
β βββ update.sh # syncs system configs and plugins back into the repo with backups
β βββ install_zsh_plugins.sh # installs missing Zsh plugins (syntax highlighting, history search)
β βββ health_check.sh # verifies symlinks and checks dependencies
β βββ check_tools.sh # checks for recommended CLI tools
β βββ fix_nested.sh # flattens accidental nested directories
β
βββ shell/ # shell configuration
β βββ linux_aliases.sh # custom aliases (linked to ~/.aliases)
β βββ prompt_switcher.sh # Starship/P10k toggle functions
β
βββ QUICKSTART.md # 5-minute setup guide
βββ DEPENDENCIES.md # required and optional dependencies
βββ NVIM_STUDY_GUIDE.md # comprehensive Neovim usage guide
βββ README.md
Clone into your home directory:
git clone git@github.com:Zayan-Mohamed/dot_files.git ~/dot_files
cd ~/dot_filesWarning This repo is designed for your personal setup. Always review scripts before running them on a new machine.
Run the main install script:
~/dot_files/scripts/install.shThis will:
- Symlink all
~/.config/*directories - Symlink home dotfiles in
~/dot_files/home/ - Symlink your scripts folder to
~/scripts - Ensure required Oh My Zsh plugins (
zsh-syntax-highlightingandzsh-history-substring-search) are installed - Safely remove any existing conflicting files or symlinks
Whenever you make changes to your configs on the system, run:
~/dot_files/scripts/update.shThis will:
- Backup your current repo files to a timestamped folder in
dot_files/backups/ - Sync
~/.config/*and tracked dotfiles back into the repo - Sync Oh My Zsh custom plugins
- Keep scripts and
.p10k.zshup-to-date
~/scripts/health_check.sh # Verify symlinks and essential tools
~/scripts/check_tools.sh # Check for recommended modern CLI tools~/scripts/install.sh # Initial setup or re-link configs
~/scripts/update.sh # Sync changes back to repo
source ~/.zshrc # Reload shell configuration- QUICKSTART.md - Get started in 5 minutes
- DEPENDENCIES.md - All required and optional dependencies
- NVIM_KEYBINDINGS.md - Complete keybindings reference for Neovim
- STARSHIP_GUIDE.md - Starship installation, configuration, and customization guide
π‘ Prompt Freedom: Both Powerlevel10k and Starship are fully supported. Switch between them instantly with
toggle!
A comprehensive guide to using the Neovim configuration efficiently is available at:
This guide includes:
- Core Keybindings - Essential shortcuts and leader key mappings
- File Navigation & Search - FZF-Lua fuzzy finding and nvim-tree usage
- Text Editing Superpowers - vim-sandwich, commentary, yanky, and advanced motions
- LSP & Code Intelligence - Code navigation, refactoring, and autocompletion
- Git Integration - Gitsigns, Fugitive, and visual diff tools
- Buffer & Window Management - Efficient multi-file workflows
- Advanced Navigation - Hop.nvim, folding, and custom text objects
- Productivity Plugins - Complete overview of all 80+ plugins
- 6-Week Learning Path - Structured approach to mastery
- Practice Exercises - Hands-on scenarios to build muscle memory
Perfect for both beginners learning Neovim and experienced users wanting to leverage the full power of this configuration.
- Alacritty - GPU-accelerated, highly configurable
- Kitty - Advanced features with ligatures
- Ghostty - Modern, native terminal
- WezTerm - GPU-accelerated with Lua scripting, pane/tab management, and modern keybindings
- Dual Prompt Themes - Seamlessly switch between:
- Starship - Rust-powered, 40+ language/tool detection, blazing fast
- Powerlevel10k - Feature-rich Zsh theme with instant prompt
- Syntax highlighting as you type
- Autosuggestions from command history
- Smart history shared across all sessions
- Modern aliases for common tasks
- One-command switching - Toggle prompts without conflicts
- 80+ plugins pre-configured
- LSP support for Python, Lua, Bash, YAML, Vim
- Fuzzy finding with FZF-lua
- Git integration with Fugitive, Gitsigns
- Treesitter syntax highlighting
- See full guide in NVIM_STUDY_GUIDE.md
- The install script is idempotent β you can run it multiple times safely.
- Plugin installer (
install_zsh_plugins.sh) runs automatically during linking but only installs missing plugins. - Designed for fully reproducible setups on fresh machines.