Personal shell, prompt, and editor config for Fedora and macOS.
Stack: Zsh · Starship (Gruvbox Rainbow preset) · zimfw plugin manager · modern Rust CLI tools.
git clone git@github.com:mathielo/dotfiles.git ~/.dotfiles && ~/.dotfiles/install.shSupported: Fedora and macOS. The script sudos for package installs and may prompt for your password again at chsh.
After the script finishes: log out and back in (or open a new terminal) and set your terminal font to MesloLGS NF. First zsh launch auto-installs zimfw plugins (a few seconds).
The install command above does not automatically sets up SSH keys via 1Password. If cloning the homelab repository, its ssh config already contains the necessary settings.
Otherwise, write the GitHub 1P SSH key from 1Password into ~/.ssh/github_1p_ssh.pub. Then add these to the top of ~/.ssh/config:
# Use the 1Password agent to authenticate with all hosts
Host *
IdentityAgent ~/.1password/agent.sock
# Specify which key to use for GitHub authentication
Host github.com
IdentityFile ~/.ssh/github_1p_ssh.pub
IdentitiesOnly yes
-
Installs packages via the native package manager:
- Fedora:
sudo dnf install -y tilix vim zsh starship fzf eza bat ripgrep fd-find - macOS:
brew install zsh starship fzf eza bat ripgrep fd+brew install --cask font-meslo-lg-nerd-font
- Fedora:
-
Installs MesloLGS Nerd Font (Fedora only) to
~/.local/share/fontsfrom romkatv/powerlevel10k-media, then runsfc-cache -f. On macOS this is handled by the Homebrew cask above. -
Installs configs (prompts before overwriting):
Target Source Method ~/.zshenv~/.dotfiles/zshenvsymlink ~/.zshrc~/.dotfiles/zdotdir/zshrc.templatecopy (per-machine tweaks) ~/.config/starship.tomlstarship preset gruvbox-rainbowgenerated Only
~/.zshenvlands in$HOME. It setsZDOTDIR="$HOME/.dotfiles/zdotdir", so zsh loads.zshrc,.zimrc, andaliases.zshfrom inside the repo. It also setsVIMINITto source~/.dotfiles/vimrcdirectly — no~/.vimrcsymlink needed. Runtime data (zim plugins, zsh history, compdump) goes under$XDG_DATA_HOME/$XDG_STATE_HOME/$XDG_CACHE_HOME, keeping$HOMEclean. -
Configures git globally:
core.editor=vim,commit.gpgsign=true,deltaas the pager (core.pager,interactive.diffFilter,delta.navigate,merge.conflictstyle=zdiff3). -
Changes the default shell to zsh via
chsh -s "$(command -v zsh)".
zimfw itself is bootstrapped automatically on first zsh launch by $ZDOTDIR/.zshrc, which downloads zimfw.zsh and runs init to pull all plugins listed in $ZDOTDIR/.zimrc.
Since ZDOTDIR is set, zsh ignores the plain ~/.zshrc — we repurpose it as the per-machine overrides file. It's copied from zdotdir/zshrc.template (not symlinked) so each machine can diverge, and sourced at the end of $ZDOTDIR/.zshrc. Use it for machine-specific PATH, env vars, or aliases.
| Name | What it does | Quick example |
|---|---|---|
| starship | Cross-shell prompt (Gruvbox Rainbow preset) | See here |
| fzf | Fuzzy finder — Ctrl-R history, Ctrl-T files, Alt-C dirs | vim $(fzf) |
| eza | Modern ls with colors/icons/git status |
ll, eza --tree |
| bat | cat with syntax highlighting + git gutter |
bat README.md |
| ripgrep | Fast recursive grep |
rg TODO |
| fd | Friendlier find |
fd '\.md$' |
| delta | Side-by-side syntax-highlighted git diffs | git diff (auto) |
| Name | What it does | Quick example |
|---|---|---|
| zimfw | Zsh plugin manager | zimfw upgrade |
| zsh-autosuggestions | Greys-out the next command from history | Type gi, press → to accept |
| fast-syntax-highlighting | Colors commands as you type | Typos render red |
| zsh-history-substring-search | Prefix-based up-arrow search | Type git, press ↑ |
| fzf-tab | Replaces Tab completion with an fzf picker | cd <Tab> |
- Plugins:
zimfw upgrade - Starship:
brew upgrade starship/sudo dnf upgrade starship - Dotfiles:
cd ~/.dotfiles && git pull
- Linux:
terminals/Tilix/ - macOS:
terminals/iTerm2/