My personal Linux dotfiles for a fresh machine.
I keep this repo public in case other people find the setup useful and want to adapt it for their own machines.
This repo sets up:
zshas your shell- Antidote for Zsh plugins
misefor developer tools such asnode,python,ripgrep,fzf, andzoxide- a default Powerlevel10k prompt config
I use this repo for my own machines. If you found it useful, feel free to fork it and adapt it to your own workflow.
When you run ./install.sh, it will:
- Install basic system packages:
curl,git,keychain, pinentry (pinentry-ttyonapt,pinentryondnf/pacman), andzsh - Link the dotfiles from this repo into your home directory
- Install
miseif it is missing - Install Antidote for Zsh plugins
- Install the tools listed in
config/mise/config.toml - Link
gnupg/gpg-agent.confto~/.gnupg/gpg-agent.conf - Link the default Powerlevel10k config to
$ZDOTDIR/.p10k.zsh(or~/.p10k.zshwhenZDOTDIRis not set) - Refresh the
misezsh completion from the installedmiseversion
The installer currently supports:
aptdnfpacman
If your system uses something else, the script will still link the files, but you may need to install some base packages yourself first.
Recommended workflow:
- Fork this repo to your own GitHub account
- Clone your fork
- Make your changes locally
- Push the changes back to your fork
Example:
git clone <your-fork-url> ~/dotfiles
cd ~/dotfiles
./install.shAfter you customize the repo, save and push your changes:
git add .
git commit -m "Update dotfiles"
git pushAfter that:
- Open a new terminal
- If needed, change your default shell:
chsh -s "$(command -v zsh)"If you want machine-specific aliases, secrets, tokens, or private environment variables, create a local file:
cp ~/dotfiles/zsh/.zshrc.local.example "${ZDOTDIR:-$HOME}/.zshrc.local"That file is for things you do not want to commit to the repo.
This setup ships with a default Powerlevel10k config in zsh/.p10k.zsh.
During install, it is linked to:
${ZDOTDIR:-$HOME}/.p10k.zshzsh/.zshrc loads it automatically.
To create or reconfigure your prompt:
p10k configureThat command will update:
${ZDOTDIR:-$HOME}/.p10k.zshIf you want to keep the new prompt as the default for future machines, copy it back into the repo:
cp "${ZDOTDIR:-$HOME}/.p10k.zsh" ~/dotfiles/zsh/.p10k.zshThe current mise config installs:
batfdfzfk9skubectlkubectl-ainodepythonripgrepshellcheckshfmtusagezoxide
You can change that list in config/mise/config.toml.
The installer also refreshes zsh/.zsh/completions/_mise from your installed mise binary so completions stay aligned with the current version.
.
├── .zsh_plugins.txt
├── config/
│ └── mise/
│ └── config.toml
├── gnupg/
│ └── gpg-agent.conf
├── install.sh
├── README.md
└── zsh/
├── .p10k.zsh
├── .zsh/
│ └── completions/
├── .zshrc
└── .zshrc.local.example
- You can run
./install.shagain safely. - The default Powerlevel10k config is stored in
zsh/.p10k.zsh. misemanages user-space tools. Your Linux package manager is still used for basic system packages.