Skip to content

fsaravia/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

105 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dotfiles

A small Apple Silicon macOS setup with:

  • one small bootstrap command
  • one package install command
  • modern Zsh, Vim, Ghostty, and Git defaults
  • an opt-in macOS defaults script
  • a small Linux profile for owned SSH hosts

Quick start

Install packages:

./install-packages

Link the dotfiles:

./bootstrap

Apply macOS defaults:

./macos-defaults.sh

Linux hosts

Owned Linux hosts can use the Linux profile:

./linux/install-packages
./linux/bootstrap

The Linux package installer targets Debian, Ubuntu, and other apt-based hosts. It warns about package names missing from the host's apt repositories and installs the packages it can find. When Debian package names expose commands as batcat or fdfind, it creates ~/.local/bin/bat and ~/.local/bin/fd aliases if those commands are otherwise missing. The Linux profile links the shared Vim and Git ignore files, but uses linux/.zshrc and linux/git/config.

linux/bootstrap also sets zsh as the login shell when root or passwordless sudo is available.

What gets linked

  • ~/.config/git/config
  • ~/.config/git/ignore
  • ~/.zshrc
  • ~/.vimrc
  • ~/.config/ghostty

If a destination already exists as a real file or directory, bootstrap moves it into ~/.dotfiles-backups/<timestamp>/ before linking.

linux/bootstrap links:

  • ~/.config/git/config
  • ~/.config/git/ignore
  • ~/.zshrc
  • ~/.vimrc

Linux uses linux/git/config, which keeps shared Git defaults but leaves workstation-specific signing and delta configuration out of the base server profile.

The Linux zsh config assumes Debian/Ubuntu package paths for fzf and zsh plugins under /usr/share.

Packages

Brewfile includes the core tooling this setup expects:

  • bat, eza, fd, fzf, mise, ripgrep, zoxide
  • git, gh, gnupg
  • git-delta
  • shellcheck
  • zsh-autosuggestions, zsh-syntax-highlighting
  • ghostty
  • font-jetbrains-mono-nerd-font

Validation

Check shell config and scripts with:

zsh -n .zshrc
zsh -n linux/.zshrc
bash -n bootstrap linux/bootstrap install-packages linux/install-packages macos-defaults.sh
shellcheck bootstrap linux/bootstrap install-packages linux/install-packages macos-defaults.sh

Terminal upgrades

On macOS, Git diff, show, and patch logs are rendered through delta. Use z <directory hint> to jump to frequent directories, and bat <file> when you want a nicer file read than cat.

Work-laptop Dart and Flutter paths stay supported in .zshrc, but only when ~/.pub-cache/bin or ~/Development/flutter/bin exist.

mise is installed and activated on macOS for project-local tool versions. This repo does not pin global language runtimes; individual projects can use mise.toml or .tool-versions. Local-only mise overrides such as mise.local.toml and .mise.local.toml are ignored globally.

If Docker is installed, install-packages generates zsh completions into ~/.local/share/zsh/site-functions.

Git signing

The macOS Git config signs commits by default. Keep machine-specific signing keys out of the repo by setting them in ~/.config/git/config.local:

cp git/config.local.example ~/.config/git/config.local
git config --file ~/.config/git/config.local user.signingkey <your-gpg-key-fingerprint>

Both zsh profiles set GPG_TTY for terminal-based GPG passphrase prompts. The Linux Git config keeps signing opt-in through config.local so server profiles can stay lightweight.

About

My dotfiles

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors