My personal dotfiles for development setup.
As name suggests, this is a personal configuration, maybe you do not like what I am doing, so you should adjust or pick things you like.
Good advise is to read the script before running.
git clone https://github.com/MSmaili/dotfiles ~/dotfiles
cd ~/dotfiles
./install.shTo preview what will be installed without making changes:
./install.sh --dry-run- macOS - Homebrew + GUI apps
- Ubuntu - APT packages
- Fedora - DNF packages
- Terminal: Ghostty
- Window Manager: Aerospace (macOS)
- Development: Neovim, Lazygit, Lazydocker
- Shell: Zsh with Zinit
- Theme: Pure
- Plugins: autosuggestions, syntax-highlighting
- Tools: fzf, fd, bat, tmux
.zshrc- Shell configuration.config/nvim/- Neovim setup.config/tmux/- Tmux configuration.config/*/- Various app configs
- Install tmux plugins
Inside tmux, press:
prefix + I
to install/update all plugins.
- Recommended versions
For best compatibility with the custom scripts and commands used here, it’s recommended to have at least:
- tmux version 3.2a
- bash version 5.x
- Custom tmux session script
You can define your own project/session layout in:
~/.tmux-session.jsonUse the following format:
- Each key is a session name.
- Each value is an array of window paths for that session.
Example:
{
"nvim": ["~/.config/nvim"],
"dotfiles": ["~/dotfiles"]
}Then run:
tmux_initThis will automatically create tmux sessions based on the configuration in ~/.tmux-session.json.
You will also have a simple tmux-session switcher available.
Some files are gitignored for personal settings:
.zshrc.local - Personal shell config (sourced by .zshrc)
# Example: Add personal paths, API keys, work-specific aliases
export WORK_DIR="$HOME/work".config/git/config.local - Personal git config (included by .config/git/config)
[user]
name = Your Name
email = your.email@example.com
signingkey = YOUR_GPG_KEY