There are tons of useful things in here:
eza (smarter ls), bat (smarter cat), zoxide (smarter cd)..gitignore file and aliases.update script for updating dotfiles, Zsh plugins, brew, and apt packages.Missing feature? Fork this repo and make it better.
Dotfiles are installed by running one of the following commands in your terminal, just copy one of the following commands and execute in the terminal:
Tell Git who you are using these commands:
git config -f ~/.gitlocal user.email "email@yoursite.com"
git config -f ~/.gitlocal user.name "Name Lastname"
Clone dotfiles repo:
# Clone dotfiles repo
git clone https://github.com/denysdovhan/dotfiles.git $HOME/.dotfiles
# Go to the dotfiles directory
cd $HOME/.dotfiles
# Install dotfiles
./install
./install also links agents/AGENTS.md into supported agent config directories when those directories already exist (~/.codex, ~/.cursor, ~/.config/agents, ~/.config/github-copilot, and ~/.config/opencode).
Use single command to get the latest updates:
update
This command refreshes sudo, pulls the latest dotfiles, reruns ./install --except shell, updates zgen and Zsh plugins, and updates brew when available.
Note: You may put your custom settings into
~/.zshlocal.
I suggest you to organize project folder as follows:
~/Projects
βββ Forks # for GitHub fork
βββ Job # for job projects
βββ Playground # for short-term experiments
βββ Repos # for long-term projects
Aliases are going to make your work fast and enjoyable. See code in $DOTFILES/lib/aliases.zsh. Here is what's included:
.. β cd ..... β cd ../...... β cd ../../....... β cd ../../../..~ β cd ~- β cd -dl β cd ~/Downloadsdt β cd ~/Desktoppj β cd ~/Projectspjr β cd ~/Projects/Repospjf β cd ~/Projects/Forkspjj β cd ~/Projects/Jobpjl β cd ~/Projects/Playgrounde β $EDITOR+x β chmod +xx+ β chmod +xreload β reload ~/.zshrcclr β clearopen <FILE> β open file from terminal.o <FILE> β open file from terminal.oo β open current folder.term β open iTerm.update β get updates (Runs $DOTFILES/scripts/update.sh).bootstrap β run machine bootstrap (Runs $DOTFILES/scripts/bootstrap.sh).dotfiles β jump quickly into dotfiles folder.myip β my local IP address.password β generate random password, copies it into clipboard and outputs it to terminal.path β print $PATH in readable view.getpage β download web page with all assets.get β download file with original filename.git-root β jump to the current repo root.help β use tldr when available.lg β open lazygit when available.Depending on installed tools, ls uses eza, cat uses bat, cd uses zoxide, and rm uses trash.
These OMZ plugins are included:
brew β Homebrew completions and helpers.git β git aliases and functions.history-substring-search β browser-like history search.npm β provides completion as well as adding many useful aliases.yarn β the same as for npm, but for yarnnvm β auto-sourcing nvm.fnm β fnm integration.pyenv β pyenv integration.gh β GitHub CLI aliases and completions.sudo β [Esc] [Esc] to re-run previous command with sudo.ssh-agent β automatically starts ssh-agent to set up and load whichever credentials you want for ssh connections.gpg-agent β enables gpg-agent if it is not running.docker and docker-compose β Docker helpers.fzf, direnv, bun, deno, and more..zshrc (it's hard to keep the list updated).Dotfiles also include some functions that will make your life easier. See code in bin/.
emptytrash β empty the Trash on all mounted volumes and the main HDD.git-cleanup β removes old Git branches and does other cleanup.git-fork β add remote upstream.git-upstream β sync branch with upstream.gz β get gzipped file sizen β runs given command using binary in node_modules/.bin of the current project.nyan β print nyan cat.password β generate a random password and copy it to the clipboard.Note: Add your git user data and custom settings to
~/.gitlocal.
auto.main.white bold for meta information;cyan bold for frag;red bold for old lines;green bold for new lines.push.default set as current.pull.rebase set to true.push.autoSetupRemote set to true.rerere enabled for conflict resolution reuse.git://github.com/, gh:, github: addresses as git@github.com: for GitHub.git://gist.github.com/, gst:, gist: addresses as git@gist.github.com: for Gists.~/.gitlocal file.git a β git add β patch mode for specified files.git ua β git reset HEAD β unstage files.git b β git branch β list, create, or delete branches.git c β git commit β record changes to the repository.git m β git merge β merge branches.git mc β git merge --continue β continue merge after resolving conflicts.git co β git checkout β checkout a branch or paths to the working tree.git cb β git checkout -b β create and checkout branch.git sw β git switch β switch branches.git swc β git switch -c β create and switch branch.git ap β git add -p β add file contents to the index.git ca β git commit -a β commit with automatically stage files that have been modified and deleted.git cm β git commit -m β commit with commit message.git cam β git commit -am β add all files and commit with message.git s β git status -sb β short status with current branch.git main β go to main branch and pull from remote.git master β go to master branch and pull from remote.git develop β go to develop branch and pull from remote.git remain β fetch latest main and merge it into the current branch.git remaster β fetch latest master and merge it into the current branch.git git β do not complain about git git.git l β commits log with pretty single line format.git ll β log with list of changed files for each commit.git ignore β ignore files: append file to .gitignore.git this β initialize, add all files and commit.git amend β amend last commit.git redo β amend last commit with its original message.git undo β reset --mixed HEAD^ β reset index changes, but not the working tree.git discard β checkout -- β discard changes.git contrib β list of contributors and how many commits each person has.git today β see how many lines of code you have written today.git sync β pull and push changes from/to remote.git lazy β open lazygit.git-root β go to repo root.git-cleanup [--force] β removes old Git branches.git-fork <original-author> β add remote upstream.git-upstream [branch] β sync branch with upstream (defaults to master).Resources that I used to make these dotfiles better:
MIT Β© Denys Dovhan
Shell
79.2%
AppleScript
8.2%
Ruby
7.5%
Vim Script
5.2%
There are tons of useful things in here:
eza (smarter ls), bat (smarter cat), zoxide (smarter cd)..gitignore file and aliases.update script for updating dotfiles, Zsh plugins, brew, and apt packages.Missing feature? Fork this repo and make it better.
Dotfiles are installed by running one of the following commands in your terminal, just copy one of the following commands and execute in the terminal:
Tell Git who you are using these commands:
git config -f ~/.gitlocal user.email "email@yoursite.com"
git config -f ~/.gitlocal user.name "Name Lastname"
Clone dotfiles repo:
# Clone dotfiles repo
git clone https://github.com/denysdovhan/dotfiles.git $HOME/.dotfiles
# Go to the dotfiles directory
cd $HOME/.dotfiles
# Install dotfiles
./install
./install also links agents/AGENTS.md into supported agent config directories when those directories already exist (~/.codex, ~/.cursor, ~/.config/agents, ~/.config/github-copilot, and ~/.config/opencode).
Use single command to get the latest updates:
update
This command refreshes sudo, pulls the latest dotfiles, reruns ./install --except shell, updates zgen and Zsh plugins, and updates brew when available.
Note: You may put your custom settings into
~/.zshlocal.
I suggest you to organize project folder as follows:
~/Projects
βββ Forks # for GitHub fork
βββ Job # for job projects
βββ Playground # for short-term experiments
βββ Repos # for long-term projects
Aliases are going to make your work fast and enjoyable. See code in $DOTFILES/lib/aliases.zsh. Here is what's included:
.. β cd ..... β cd ../...... β cd ../../....... β cd ../../../..~ β cd ~- β cd -dl β cd ~/Downloadsdt β cd ~/Desktoppj β cd ~/Projectspjr β cd ~/Projects/Repospjf β cd ~/Projects/Forkspjj β cd ~/Projects/Jobpjl β cd ~/Projects/Playgrounde β $EDITOR+x β chmod +xx+ β chmod +xreload β reload ~/.zshrcclr β clearopen <FILE> β open file from terminal.o <FILE> β open file from terminal.oo β open current folder.term β open iTerm.update β get updates (Runs $DOTFILES/scripts/update.sh).bootstrap β run machine bootstrap (Runs $DOTFILES/scripts/bootstrap.sh).dotfiles β jump quickly into dotfiles folder.myip β my local IP address.password β generate random password, copies it into clipboard and outputs it to terminal.path β print $PATH in readable view.getpage β download web page with all assets.get β download file with original filename.git-root β jump to the current repo root.help β use tldr when available.lg β open lazygit when available.Depending on installed tools, ls uses eza, cat uses bat, cd uses zoxide, and rm uses trash.
These OMZ plugins are included:
brew β Homebrew completions and helpers.git β git aliases and functions.history-substring-search β browser-like history search.npm β provides completion as well as adding many useful aliases.yarn β the same as for npm, but for yarnnvm β auto-sourcing nvm.fnm β fnm integration.pyenv β pyenv integration.gh β GitHub CLI aliases and completions.sudo β [Esc] [Esc] to re-run previous command with sudo.ssh-agent β automatically starts ssh-agent to set up and load whichever credentials you want for ssh connections.gpg-agent β enables gpg-agent if it is not running.docker and docker-compose β Docker helpers.fzf, direnv, bun, deno, and more..zshrc (it's hard to keep the list updated).Dotfiles also include some functions that will make your life easier. See code in bin/.
emptytrash β empty the Trash on all mounted volumes and the main HDD.git-cleanup β removes old Git branches and does other cleanup.git-fork β add remote upstream.git-upstream β sync branch with upstream.gz β get gzipped file sizen β runs given command using binary in node_modules/.bin of the current project.nyan β print nyan cat.password β generate a random password and copy it to the clipboard.Note: Add your git user data and custom settings to
~/.gitlocal.
auto.main.white bold for meta information;cyan bold for frag;red bold for old lines;green bold for new lines.push.default set as current.pull.rebase set to true.push.autoSetupRemote set to true.rerere enabled for conflict resolution reuse.git://github.com/, gh:, github: addresses as git@github.com: for GitHub.git://gist.github.com/, gst:, gist: addresses as git@gist.github.com: for Gists.~/.gitlocal file.git a β git add β patch mode for specified files.git ua β git reset HEAD β unstage files.git b β git branch β list, create, or delete branches.git c β git commit β record changes to the repository.git m β git merge β merge branches.git mc β git merge --continue β continue merge after resolving conflicts.git co β git checkout β checkout a branch or paths to the working tree.git cb β git checkout -b β create and checkout branch.git sw β git switch β switch branches.git swc β git switch -c β create and switch branch.git ap β git add -p β add file contents to the index.git ca β git commit -a β commit with automatically stage files that have been modified and deleted.git cm β git commit -m β commit with commit message.git cam β git commit -am β add all files and commit with message.git s β git status -sb β short status with current branch.git main β go to main branch and pull from remote.git master β go to master branch and pull from remote.git develop β go to develop branch and pull from remote.git remain β fetch latest main and merge it into the current branch.git remaster β fetch latest master and merge it into the current branch.git git β do not complain about git git.git l β commits log with pretty single line format.git ll β log with list of changed files for each commit.git ignore β ignore files: append file to .gitignore.git this β initialize, add all files and commit.git amend β amend last commit.git redo β amend last commit with its original message.git undo β reset --mixed HEAD^ β reset index changes, but not the working tree.git discard β checkout -- β discard changes.git contrib β list of contributors and how many commits each person has.git today β see how many lines of code you have written today.git sync β pull and push changes from/to remote.git lazy β open lazygit.git-root β go to repo root.git-cleanup [--force] β removes old Git branches.git-fork <original-author> β add remote upstream.git-upstream [branch] β sync branch with upstream (defaults to master).Resources that I used to make these dotfiles better:
MIT Β© Denys Dovhan
Shell
79.2%
AppleScript
8.2%
Ruby
7.5%
Vim Script
5.2%