- This repo is where I keep the dotfiles I'm currently using.
- My daily driver OS is macOS and my editor of choice is Neovim.
- I use Ghostty, Starship, and Tmux to customize my terminal workflow.
- I keep updating this repo as I recently got more interested in exploring new tools and setups.
dotfiles/
├── btop
│ └── themes
├── fastfetch
│ ├── ascii
│ └── images
├── ghostty
│ └── shaders
├── nvim
│ └── lua
├── starship
├── tmux
│ └── plugins
├── yt-dlp
└── zsh
└── pluginsI keep my dotfiles in ~/github/dotfiles/ and have provided symbolic links to ~/.config/.
Clone this repository:
mkdir -p ~/.config
git clone https://github.com/69-PEAK/dotfiles.git ~/github/.config/69-PEAK/dotfiles
# or
mkdir -p ~/69-PEAK
git clone https://github.com/69-PEAK/dotfiles.git ~/69-PEAK/dotfilesTo learn more about setting up each tool, check the README in each corresponding section of this repository.
brew install zsh
My Zsh configuration files is stored in ~/.config/zsh/.zshenv which is a symlink to ~/github/dotfiles/zsh/.zshenv
zsh/
├── .aliases
├── .functions
├── .zsh_history
├── .zshenv
├── .zshrc
├── fzf.zsh
└── plugins
├── zsh-autosuggestions
├── zsh-completions
└── zsh-syntax-highlighting.aliases— Custom command shortcuts.functions— Custom shell functions.zshenv— Environment variables and XDG directories (loaded first).zshrc— Main Zsh configuration: Custom dumping location, options, sources plugins, and promptfzf.zsh— FZF integrationplugins/— External Zsh plugins
Plugins:
zsh-autosuggestions — command suggestions as you type
git clone https://github.com/zsh-users/zsh-autosuggestions.git plugins/zsh-autosuggestionszsh-completions — additional completions for commands
git clone https://github.com/zsh-users/zsh-completions.git plugins/zsh-completionszsh-syntax-highlighting — highlights command syntax errors
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git plugins/zsh-syntax-highlightingImportant
- Do not forget to source each of these plugins in the
.zshrcfile. - You can refer to my
.zshrcto understand how plugin sourcing works.
- For Terminal tools like fzf follow next section.
fzf is an interactive fuzzy finder used for command history search, file navigation, and more.
brew install fzfRun fzf’s install script for default setup and answer NO to the prompt that asks to modify shell configuration files
$(brew --prefix)/opt/fzf/installI have created a dedicated file for fzf configuration: fzf.zsh.
This file contains all custom keybindings and options related to fzf and is sourced from .zshrc using.
eza is a modern replacement for ls with better defaults, colors, icons, and git integration but I only use it for listing commands.
brew install ezaI use eza mainly through aliases defined in ~/config/zsh/.aliases
Custom colors are defined using:
echo 'export EZA_COLORS="di=1;94:fi=1;32:ln=1;96:ex=1;32:pi=1;33:so=1;35:bd=1;33:cd=1;33:or=1;31:mi=1;31"' >> ~/.zshrcThis ensures consistent colors for files, directories, symlinks, and other file type
vivid is a tool that generates LS_COLORS strings from color themes.
This allows you to theme your ls-style tools and keep colors consistent.
Install Vivid
brew install vivid
echo 'export LS_COLORS="$(vivid generate tokyonight-night)"' >> ~/.zshrcEven though I primarily use eza, I keep LS_COLORS defined as a fallback for:
ls- scripts and minimal environments
- Remote servers without eza
- tools that respect GNU LS_COLORS
Note
You do not need vivid if you primarily use eza, since eza can handle its own coloring.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"After installation, make sure Homebrew is in your PATH:
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.config/zsh/.zshenv
eval "$(/opt/homebrew/bin/brew shellenv)"You can install Ghostty via Homebrew using this command:
brew install ghosttyI used the Spectre Ghostty config editor as a reference and tweaked the commands I liked. I also discovered that you can have a custom Ghostty icon in the macOS Dock. I highly recommend using this editor! I also added shaders for Ghostty, you can comment out in the config whatever you like during your setup.
Note
I am currently using the Catppuccin theme, so my custom Ghostty theme is commented out in the repository.
If you want to use one of Ghostty’s built-in themes, run: ghostty +list-themes
If you want to use my custom theme instead, uncomment the # Colors and # Window sections in the Ghostty config file.
You can tell Ghostty to use a specific config file when launching 'ghostty --config ~/path/to/your/file', though ghostty looks for config '~/.config/ghossty/config' fileI use Starship for the prompt. You can use my Starship config to get the same look, I kept it as simple as possible.
Your .zshrc config just needs to source Starship:
eval "$(starship init zsh)"Note
Starship expects its configuration file at ~/.config/starship.toml
brew install fastfetchMy fastfetch config is stored in ~/.config/fastfetch/conf.jsonc which contains images, ascii arts and fastfetch config file, again as I already told above, this is a symlink to ~/github/dotfiles/fastfetch/conf.jsonc.
Important
- Fastfetch on macOS doesn't show images until :
- I used
"type": "kitty-direct"for images, this does not work for ASCII art. - If you want ASCII art instead, comment out all
typeentries in the config.
- I used
brew install neovimMy Neovim configuration is stored in ~/.config/nvim/inti.lua, which is a symlink to ~/github/dotfiles/nvim/init.lua.
nvim/
├── init.lua
└── lua/
├── plugins/
└── vim-options.luaI am using LazyVim as my plugin manager. If you want the same setup as me, I have created README files for key files inside the nvim/ configuration.
Please follow the corresponding README for details on each file:
init.lua— main Neovim entry pointvim-options.lua— custom Vim options and keybindingsplugins/— plugin configurations
brew install tmuxMy Tmux configuration is stored in ~/.config/tmux/tmux.conf, which is a symlink to ~/github/dotfiles/tmux/tmux.conf.
Note
Tmux expects its configuration file to be named tmux.conf
This dotfiles setup is meant to be a living configuration. I update it as I learn new tools and tweak my workflow. Follow the respective sections above to install, configure, and enjoy a fully-featured terminal environment.