This repository contains personal dotfiles for configuring various development tools and shell environments.
These dotfiles are designed for macOS and Linux systems.
Dotfiles repositories facilitate the management of configurations across different systems.
This repository is available as a template for creating your own personal dotfiles setup.
This repository provides configurations for 65+ tools and applications, organized into the following categories:
- Shells: zsh (with oh-my-zsh), bash, fish
- Terminal Emulators: alacritty, kitty, wezterm, iTerm2
- Prompt: starship (with fallback to custom theme)
- Multiplexer: tmux (with tmuxp for session management)
- Neovim: Integration with ElieVIM
- Vim: Classic vim configurations
- Emacs: Custom configurations
- VS Code: Settings and extensions
- Zed: Modern code editor setup
- Linux: i3, awesome, hyprland, sway (Wayland)
- macOS: AeroSpace (tiling window manager)
- Display Protocols: X11, Wayland configurations
- Version Control: git, gh (GitHub CLI)
- Languages: Node.js, Python, Go, Erlang, PHP, Java, C/C++
- Package Managers: npm/nvm, mamba, brew
- Build Tools: bazel, make
- Databases: mongosh (MongoDB shell)
- Containers: docker, kind, minikube
- Kubernetes: k9s (terminal UI)
- Cloud: AWS CLI
- DNS: CoreDNS configurations
- Monitoring: btop, below
- Networking: curl, wget, httpie
- File Management: custom bin scripts
- System Config: fontconfig, udev rules, tmpfiles
- Boot: dracut, plymouth
- Media Players: mpv, mpd, cmus
- Browsers: firefox, chrome configurations
- Remote Desktop: anydesk, jumpdesktop
- Communication: discord
- Calendar: khal (calendar)
- Contacts: khard (contacts)
- Notes: navi (cheatsheets)
- Time Tracking: wakatime
- Screenshots: Configuration scripts
- Display Info: fastfetch
- Archive Tools: Custom extraction scripts
- Proxy: Configuration helpers
- Security: Secrets management templates
For a complete list of available installation scripts, run ./start.sh list.
Before installing these dotfiles, ensure you have the following:
- Git: Version 2.0 or higher
- Bash: Version 4.0 or higher (already installed on most systems)
- A Unix-like operating system: macOS, Ubuntu, Arch Linux, or similar
- zsh: For the full shell experience (can also use bash)
- curl or wget: For downloading additional components
- sudo access: Required for installing system packages
- The installation will check for required tools (bash, zsh, tmux, vim) and notify you if any are missing
- Most tools will be installed automatically via the setup scripts
- Some configurations require desktop environment (fonts, window managers, etc.)
- Backup your existing dotfiles before installation, as this will create symbolic links that may overwrite existing configurations
You need to first install an operating system to use these dotfiles,
For installing ArchLinux from scratch with archinstall,
please check here.
For macOS setup, run the following scripts:
# install brew with the default configuration.
./start.sh brew
# configure osx with Parham's preferences.
./start.sh macosTo install these dotfiles on a fresh system, run the following command:
git clone https://github.com/1995parham/dotfiles.git ~/.dotfiles && cd ~/.dotfiles && ./start.sh env && ./install.shThis will clone the repository into your home directory (~/.dotfiles), and run the start.sh env script to install
required tools and then run install.sh script to
create symbolic links between the dotfiles and their expected locations in your home directory.
After that, you can set zsh as your default terminal (you can use bash too, there is no hard requirement to use zsh):
sudo chsh $USER -s /bin/zshRun start.sh font script to install useful fonts (obviously on a desktop system):
./start.sh fontDon't forget to configure git with your username and email. You have two options:
Option 1: Use the automated setup script (recommended):
./start.sh gitOption 2: Manually configure git:
# Create the config file
touch $HOME/.config/git/config
# Edit it and add your information:
# [user]
# name = Your Name
# email = [email protected]Run start.sh neovim script to install neovim with ElieVIM configurations:
./start.sh neovimThese dotfiles configure various tools and applications. You can install individual components using the modular start.sh script:
./start.sh <name>Here are some popular setup commands you might want to run:
# Development environment
./start.sh neovim # Install Neovim with ElieVIM configuration
./start.sh git # Configure Git with user settings
./start.sh tmux # Set up tmux multiplexer
./start.sh docker # Configure Docker
# Language environments
./start.sh node # Install Node.js and npm
./start.sh go # Set up Go environment
./start.sh python # Configure Python and pip
# Terminal tools
./start.sh alacritty # Install Alacritty terminal
./start.sh starship # Install Starship prompt
./start.sh font # Install useful fonts
# System utilities
./start.sh btop # Install btop system monitor
./start.sh k9s # Install k9s for Kubernetes
# macOS specific
./start.sh brew # Install Homebrew
./start.sh macos # Apply macOS preferences
./start.sh aerospace # Install AeroSpace window manager
# Linux specific
./start.sh i3 # Set up i3 window manager
./start.sh awesome # Set up Awesome window managerTo see all available installation scripts with descriptions:
./start.sh listYou can run the script multiple times to install different tools:
./start.sh neovim
./start.sh tmux
./start.sh dockerTo update your dotfiles to the latest version:
# Navigate to your dotfiles directory
cd ~/.dotfiles
# Pull the latest changes
git pull origin main
# Re-run the installation to update symbolic links
./install.sh
# Optionally, update specific tools
./start.sh neovim # Update Neovim configuration
./start.sh tmux # Update tmux configurationSome components manage their own updates:
- oh-my-zsh: Updates automatically or run
omz update - ElieVIM: Update via Neovim's plugin manager
- Homebrew (macOS): Run
brew update && brew upgrade
If you've forked this repository, sync with upstream:
# Add upstream remote (one-time setup)
git remote add upstream https://github.com/1995parham/dotfiles.git
# Fetch and merge updates
git fetch upstream
git merge upstream/mainProblem: "Permission denied" when running scripts
# Solution: Make scripts executable
chmod +x start.sh install.shProblem: Installation fails with "command not found"
# Solution: Install the base requirements first
./start.sh env # Installs essential toolsProblem: Symbolic links already exist
# Solution: Backup and remove existing dotfiles
mv ~/.zshrc ~/.zshrc.backup
mv ~/.tmux.conf ~/.tmux.conf.backup
# Then re-run ./install.shProblem: Git configuration not working
# Solution: Ensure the config file exists and has correct format
cat ~/.config/git/config
# Should contain [user] section with name and emailProblem: Fonts not displaying correctly
# Solution: Install fonts and update font cache
./start.sh font
fc-cache -fv # Linux
# On macOS, restart terminal after font installationProblem: Scripts must run without root permissions
# Solution: Run as regular user, not with sudo
# The scripts will prompt for sudo when needed
./start.sh env # Don't use: sudo ./start.sh env- Check logs: Most scripts provide detailed output
- Script fails: Run with
-yflag to auto-answer prompts:./start.sh -y env - Report issues: GitHub Issues
- Contact: [email protected]
To remove dotfiles (symbolic links):
# Remove individual symlinks
rm ~/.zshrc ~/.bashrc ~/.tmux.conf ~/.vimrc
# Or identify all symlinks pointing to dotfiles
find ~ -maxdepth 1 -type l -ls | grep dotfilesNote: This only removes symbolic links, not the installed applications.
While this is a personal dotfiles repository, contributions are welcome:
- Fork the repository
- Create a feature branch
- Make your changes
- Test on a fresh system if possible
- Submit a pull request
This project is licensed under the GNU General Public License v2.0 - see the LICENSE file for details.
- Built with dotfiles.lib - Script collection for effortless dotfile management
- Inspired by the broader dotfiles community
- Uses oh-my-zsh for zsh configuration
- Neovim configuration powered by ElieVIM