Skip to content

MSmaili/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dotfiles

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.

Neovim setup screenshot

Quick Setup

Good advise is to read the script before running.

git clone https://github.com/MSmaili/dotfiles ~/dotfiles
cd ~/dotfiles
./install.sh

To preview what will be installed without making changes:

./install.sh --dry-run

Supported Platforms

  • macOS - Homebrew + GUI apps
  • Ubuntu - APT packages
  • Fedora - DNF packages

What's Included

Applications

  • Terminal: Ghostty
  • Window Manager: Aerospace (macOS)
  • Development: Neovim, Lazygit, Lazydocker

Shell Setup

  • Shell: Zsh with Zinit
  • Theme: Pure
  • Plugins: autosuggestions, syntax-highlighting
  • Tools: fzf, fd, bat, tmux

Configurations

  • .zshrc - Shell configuration
  • .config/nvim/ - Neovim setup
  • .config/tmux/ - Tmux configuration
  • .config/*/ - Various app configs

Manual Steps After Install

  1. Install tmux plugins

Inside tmux, press:

prefix + I

to install/update all plugins.


  1. 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

  1. Custom tmux session script

You can define your own project/session layout in:

~/.tmux-session.json

Use 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_init

This will automatically create tmux sessions based on the configuration in ~/.tmux-session.json.

You will also have a simple tmux-session switcher available.


Local Configuration

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