Skip to content

Latest commit

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

dotfiles

Personal shell, prompt, and editor config for Fedora and macOS.

Stack: Zsh · Starship (Gruvbox Rainbow preset) · zimfw plugin manager · modern Rust CLI tools.

Install

git clone git@github.com:mathielo/dotfiles.git ~/.dotfiles &&~/.dotfiles/install.sh

Supported: 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).

1Password + SSH keys

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

What install.sh does

  1. 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
  2. Installs MesloLGS Nerd Font (Fedora only) to ~/.local/share/fonts from romkatv/powerlevel10k-media, then runs fc-cache -f. On macOS this is handled by the Homebrew cask above.

  3. Installs configs (prompts before overwriting):

    TargetSourceMethod
    ~/.zshenv~/.dotfiles/zshenvsymlink
    ~/.zshrc~/.dotfiles/zdotdir/zshrc.templatecopy (per-machine tweaks)
    ~/.config/starship.tomlstarship preset gruvbox-rainbowgenerated

    Only ~/.zshenv lands in $HOME. It sets ZDOTDIR="$HOME/.dotfiles/zdotdir", so zsh loads .zshrc, .zimrc, and aliases.zsh from inside the repo. It also sets VIMINIT to source ~/.dotfiles/vimrc directly — no ~/.vimrc symlink needed. Runtime data (zim plugins, zsh history, compdump) goes under $XDG_DATA_HOME / $XDG_STATE_HOME / $XDG_CACHE_HOME, keeping $HOME clean.

  4. Configures git globally: core.editor=vim, commit.gpgsign=true, delta as the pager (core.pager, interactive.diffFilter, delta.navigate, merge.conflictstyle=zdiff3).

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

Per-machine tweaks

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.

Installed tools

CLI utilities

NameWhat it doesQuick example
starshipCross-shell prompt (Gruvbox Rainbow preset)See here
fzfFuzzy finder — Ctrl-R history, Ctrl-T files, Alt-C dirsvim $(fzf)
ezaModern ls with colors/icons/git statusll, eza --tree
batcat with syntax highlighting + git gutterbat README.md
ripgrepFast recursive greprg TODO
fdFriendlier findfd '\.md$'
deltaSide-by-side syntax-highlighted git diffsgit diff (auto)

Zsh plugins (managed by zimfw)

NameWhat it doesQuick example
zimfwZsh plugin managerzimfw upgrade
zsh-autosuggestionsGreys-out the next command from historyType gi, press → to accept
fast-syntax-highlightingColors commands as you typeTypos render red
zsh-history-substring-searchPrefix-based up-arrow searchType git, press ↑
fzf-tabReplaces Tab completion with an fzf pickercd <Tab>

Keeping things up to date

  • Plugins: zimfw upgrade
  • Starship: brew upgrade starship / sudo dnf upgrade starship
  • Dotfiles: cd ~/.dotfiles && git pull

Terminal profiles

About

Personal shell, prompt, and editor config for Fedora and macOS.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages