Skip to content

akullpp/settings

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

316 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Settings

Public, commented configuration for a macOS development laptop. The repository can bootstrap a new machine, but every source is deliberately readable and usable without the installer.

Personal identity, credentials, tokens, absolute home paths, and Neovim configuration are not stored here.

Bootstrap a new laptop

  1. Install Homebrew with its official installer.
  2. From this repository, run brew bundle --file Brewfile. Homebrew installs applications and command-line tools.
  3. Run ./setup to link the public configuration, make Zed the default for code and text files, and keep Zen as the web browser.
  4. Open a new login shell and run mise install to install Go, Java, Node.js, Python, and the Vercel CLI from config/mise.toml.

The Brewfile installs mise itself. mise owns the language runtimes, so the Brewfile intentionally does not install separate Homebrew copies of Go, Java, Node.js, or Python.

MacTeX changes the shell path through /etc/paths.d; restart the terminal after the first installation.

Installer

./setup [--dry] [--target DIR] [--help]
  • --dry prints every proposed backup and link without changing files.
  • --target DIR treats another directory as the home directory, which is useful for testing.
  • Existing files are moved to collision-safe timestamped backups.
  • Repeated runs leave correct links unchanged.
  • Package installation remains separate and explicit through brew bundle.

The installer uses relative links to individual files. It never replaces an entire configuration directory, so unrelated settings remain untouched. When targeting the real home directory it also uses duti to make Zed the macOS handler for common code and text formats and Zen the handler for HTML and web links.

Read or install files manually

The repository uses visible names even when an application requires a hidden destination.

Readable source Normal destination Purpose
config/zprofile ~/.zprofile Login-shell paths and XDG directories
config/zshrc ~/.zshrc Interactive shell behavior and tool integrations
config/zsh-plugins.txt ~/.zsh_plugins.txt Antidote plugin list
config/gitconfig ~/.gitconfig Public Git behavior without identity
config/mise.toml ~/.config/mise/config.toml Go, Java, Node.js, Python, and Vercel CLI versions
config/starship.toml ~/.config/starship.toml Shell prompt

To copy a file instead of linking it, use the table directly. For example:

cp config/mise.toml ~/.config/mise/config.toml

To create the same kind of relative link as the installer, run it once with --dry to see every source and destination first.

Private Git identity

The public Git configuration includes ~/.gitconfig.local. The installer moves an existing Git name and email into that private file without printing either value, sets mode 0600, and never places the file in this repository.

To create it manually:

git config --file ~/.gitconfig.local --edit
chmod 600 ~/.gitconfig.local

GitHub authentication remains in the macOS Keychain and GitHub CLI credential helper; no credential value is stored in the public configuration.

Private shell helpers

The interactive shell loads ~/.zshrc.local when it exists. Keep machine-specific aliases, internal endpoints, and operational helpers there so they remain private while the public shell configuration stays reproducible.

Project templates

The templates directory contains reusable, commented defaults:

  • editorconfig for whitespace and encoding rules.
  • gitattributes for consistent LF line endings.
  • lint-staged.config.cjs for linting, formatting, and type-checking staged TypeScript.
  • prettier.config.cjs for shared formatting preferences.

The fetch-config zsh function downloads them safely, retains an existing destination as a timestamped backup, and accepts these names:

fetch-config editorconfig
fetch-config gitattributes
fetch-config lint-staged
fetch-config prettier

What is intentionally excluded

  • Neovim configuration is maintained separately.
  • Git name, email, credentials, and tokens remain local.
  • Corporate-managed applications, Apple App Store applications, and vendor-only hardware utilities remain outside Homebrew.
  • Prezto, WezTerm, and the old standalone shell helpers are no longer active.
  • Zed settings and local themes remain in ~/.config/zed.

License

MIT

About

Personal default settings

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages