Skip to content

ronload/dotfiles

Repository files navigation

dotfiles banner

dotfiles

License Platform shellcheck shfmt zsh-syntax lua-lint stylua gitleaks Theme

Personal configuration files for my macOS development environment, centered on Neovim, Zsh, and Ghostty.

Requirements

  • macOS
  • No other prerequisites — setup.sh installs Homebrew and everything else from Brewfile.

Quick Start

git clone https://github.com/ronload/dotfiles.git ~/dotfiles
cd ~/dotfiles
./setup.sh

setup.sh installs Homebrew, Rust, opencode, and every package in Brewfile, then hands off to install.sh to symlink configs, clone fzf-git.sh, and sync Neovim plugins. Each step is idempotent and safe to re-run.

What's Included

  • nvim — Neovim with lazy.nvim and TokyoNight Moon
  • zsh — Zsh shell (zshrc, zprofile, zshenv, aliases, prompt, abbreviations)
  • ghostty — Ghostty terminal
  • git — Git global config (with conditional work identity include)
  • gh — GitHub CLI
  • fastfetch — System info with a custom colored-bar module
  • yazi — Terminal file manager
  • Brewfile — Homebrew package manifest

Development

Linting and formatting are driven by just. The justfile is the single source of truth — GitHub Actions invoke the same recipes on every push and pull request.

just              # list all recipes
just ci           # run every linter and formatter check
just lint         # run all linters (lua, shell, zsh)
just format       # run all formatter checks (lua, shell)
just lint-lua     # luacheck on tracked Lua files
just lint-shell   # shellcheck on tracked shell scripts
just lint-zsh     # zsh -n syntax check on zsh/*
just format-lua   # stylua --check
just format-shell # shfmt -i 2 -ci -d

All recipes operate on git ls-files, so untracked files are skipped. Zsh files are validated by zsh -n rather than shellcheck, which does not support zsh.

Local Overrides

git/gitconfig conditionally includes a work identity for repos under git@github.com:prinsur/**:

[includeIf "hasconfig:remote.*.url:git@github.com:prinsur/**"]
    path = ~/.gitconfig-prinsur

This override file is not tracked. Create it manually on each machine:

cat > ~/.gitconfig-prinsur <<'EOF'
[user]
    email = your-work-email@example.com
EOF

Without it, commits to prinsur/* repos fall back to the global identity.

License

Released under the MIT License. See LICENSE for details.

About

Personal macOS development environment: Neovim, Ghostty, Zsh, with one-command setup.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors