Skip to content

pburtchaell/os

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

os

A simple script to configure macOS system preferences to my liking and install my favorite apps, services and frameworks. Completely refactored in 2026 for macOS Tahoe compatibility and to cover my current stack for useful, productive AI, coding and design work.

Getting started

On a new Mac, run remotely with one command:

curl -fsSL psb.lol/setup.sh | bash

Or from a local clone:

sh setup.sh

The script will present a menu with configuration options:

  • macOS settings - Configure system preferences and app defaults
  • Dock layout - Set up Dock apps and settings
  • Development tools - Install Homebrew, Oh My Zsh, Node, pnpm, Python, Claude Code and Mole
  • Applications - Install a selectable set of GUI apps via Homebrew Cask
  • All of the above - Run everything

You can preview the whole flow without changing anything using --simulate:

sh setup.sh --simulate

If an install appears to hang, run with --verbose (or VERBOSE=1) to stream the installer output live instead of behind a spinner.

The menus, spinner and confirmation prompts are powered by gum. On startup the script shows Getting ready... while it downloads a temporary copy of gum (no Homebrew required) and removes it when it finishes, so it leaves nothing behind. If you already have gum installed, it's used as-is and left untouched.

What it does

macOS system preferences

Configures more reasonable preferences for:

  • Finder: Show hidden files, use list view, show path/status bar, show file extensions
  • Menu bar: Hide WiFi, Battery, Spotlight, Siri, Focus Modes, Sound and Now Playing
  • Screenshots: Save as PNG, disable drop shadows
  • Keyboard: Enable key repeat (disable press-and-hold), faster repeat rate
  • Trackpad: Faster tracking speed
  • General: Expand save/print panels, disable app resume, enable auto-updates

As well as a few app preferences:

  • Safari: Disable search suggestions to Apple, set blank homepage, disable password autofill
  • Chrome: Disable swipe navigation, disable background mode, expand print dialog
  • TextEdit: Use plain text mode with UTF-8 encoding
  • Activity Monitor: Show all processes, sort by CPU usage

Dock layout

Clears the default Dock apps and adds your preferred apps in a nice order:

  • Finder
  • Messages
  • Chrome, ChatGPT & Claude
  • GitHub Desktop, Ghostty, Cursor & Xcode
  • Downloads folder
  • Trash

Development tools

Offers a checklist of dev tools to install — the ones you don't have yet are pre-selected, so you can deselect any you want to skip (↑/↓ to move, space to toggle, enter to confirm):

  • Homebrew - Package manager for macOS
  • Oh My Zsh - Framework for managing Zsh configuration
  • Node - JavaScript runtime
  • pnpm - Fast, disk space efficient package manager
  • Python - General-purpose programming language
  • Claude Code - Fast coding
  • Mole - SSH tunnel manager

Applications

Offers a checklist of GUI apps to install via Homebrew Cask (↑/↓ to move, space to select, enter to confirm):

  • Browsers: Google Chrome, Vivaldi, Firefox
  • Dev & AI: Ghostty, Visual Studio Code, Cursor, GitHub Desktop, Claude Desktop, superwhisper
  • Design & media: Figma, CleanShot X, ImageOptim
  • Productivity: 1Password, Paste, Stats, Dropbox, Flux
  • Comms & media: Discord, Zoom, Spotify, Sonos
  • Maker / 3D: Bambu Studio, OpenSCAD, Raspberry Pi Imager

Development

The scripts are linted with ShellCheck and tested with bats-core:

brew install bats-core shellcheck

shellcheck setup.sh scripts/*.sh
bats tests/

Tests live in tests/ and cover the utils.sh helpers (simulate mode, the install spinner, gum capability detection), setup.sh argument parsing, and the cask list. The interactive prompts are powered by gum and read /dev/tty, so they can't be driven headlessly and aren't unit-tested. Both checks run on every push via GitHub Actions (.github/workflows/ci.yml), which pins the same ShellCheck version used locally.

Inspiration

Years ago, the original inspiration for this came from:

About

friendly lil macOS setup

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages