Skip to content

seanblowers/Macnite

Repository files navigation

Macnite

Ninite for macOS — tick the apps and CLI tools you want, get a one-line Homebrew installer. No backend, no tracking, no accounts.

macnite.app · Install the desktop app · Presets


What it does

Macnite lets you set up a new Mac in seconds. Browse or search thousands of Homebrew casks (GUI apps) and formulae (CLI tools), tick what you want, then either:

  • Copy a one-liner — paste it into Terminal and everything installs in one shot
  • Download a shell script — save it and run it later, share it with your team, or keep it for your next Mac

Homebrew is installed automatically if it isn't already present. The script tracks failures, prints a done report, and shows you what saved time.


Features

  • Curated homepage tiles — popular apps grouped by category (browsers, chat, media, productivity, utilities, AI assistants) so you can get set up fast without searching
  • Full catalog search — searches the entire Homebrew cask + formula catalog (cached from the official API, refreshed every 24 hours)
  • Presets — one-click bundles for common setups: New Mac Essentials, Developer, Designer, Student, Content Creator, Power User, Gaming, and AI Assistants
  • Share links — pick your apps and share a URL that pre-ticks the same selection for someone else
  • Copy command or download script — the one-liner is great for a quick setup; the .sh script is useful for scripted or repeated installs
  • Error reporting — if something fails to install, the script tells you clearly and the app lets you report it
  • Pure static site — no server, no database, no login, no tracking. Just HTML, CSS, and JavaScript talking to the public Homebrew API

Using Macnite to install apps

  1. Go to macnite.app
  2. Tick apps on the homepage tiles, or type in the search bar to find anything in the Homebrew catalog
  3. When you're happy with your selection, click Copy command or Download script
  4. Open Terminal and paste (or run the downloaded script):
# Example — the command Macnite generates looks like this:
command -v brew >/dev/null 2>&1 || /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" \
  && brew install --cask visual-studio-code iterm2 \
  && brew install git node

That's it. Homebrew is installed if missing, then all your chosen apps install in one go.

Using a Preset

If you don't want to pick apps manually, head to macnite.app/presets and choose a bundle that fits your use case. Each preset has a Copy command and Download script button — no ticking required.

Preset What's included
New Mac Essentials Chrome, 1Password, Raycast, Rectangle, VLC, The Unarchiver, AppCleaner
Developer VS Code, iTerm2, Docker, GitHub Desktop, Postman, TablePlus, git, node
Designer & Creative Adobe CC, Figma, Sketch, Blender, GIMP, Inkscape, HandBrake
Student & Office LibreOffice, Zoom, Notion, Obsidian, Zotero, ChatGPT, Google Drive
Communication Zoom, Slack, Discord, Microsoft Teams, WhatsApp, Signal, Telegram
Power User Raycast, Rectangle, AltTab, Karabiner-Elements, Stats, HiddenBar
AI Assistants ChatGPT, Claude, Ollama, LM Studio
Gaming Steam, Epic Games, Discord, OBS
Content Creator OBS, Audacity, HandBrake, DaVinci Resolve, Krita, IINA

Installing Macnite itself (the desktop app)

The bare cask command:

brew install --cask seanblowers/macnite/macnite

Or the full one-liner (installs Homebrew if missing, tracks failures, prints the done report):

command -v brew >/dev/null 2>&1 || /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" && eval "$(/opt/homebrew/bin/brew shellenv 2>/dev/null || /usr/local/bin/brew shellenv)" && macnite_fails="" && macnite_start=$SECONDS && for c in seanblowers/macnite/macnite; do brew install --cask "$c" || macnite_fails="$macnite_fails $c"; done && if [ -n "$macnite_fails" ]; then echo; echo "Could not install:$macnite_fails"; echo "(They may already be installed manually — move them to the Trash, then re-run.)"; fi && { macnite_elapsed=$((SECONDS - macnite_start)); macnite_fail_count=$(echo "$macnite_fails" | wc -w | tr -d " "); macnite_ok=$((1 - macnite_fail_count)); echo; echo "All done — $macnite_ok apps installed in $((macnite_elapsed / 60))m $((macnite_elapsed % 60))s. You saved ~$((macnite_ok * 10)) clicks."; } && { curl -fsSL https://macnite.seanblowers.app/install-banner.txt 2>/dev/null || true; }

Contributing

Contributions are welcome! Here are the main ways to help:

Add or change a curated app

The homepage tiles live in popular.js. Each entry is a short object:

{ kind: 'cask', token: 'your-app-token' }   // GUI app
{ kind: 'formula', token: 'your-tool' }      // CLI tool

token is the Homebrew cask or formula name (e.g. visual-studio-code, node). Check formulae.brew.sh if you're unsure of the exact token.

Suggest a preset

Open a GitHub Issue with the preset name, a one-line description, and a list of cask/formula tokens. Or use the Suggest a preset form at macnite.app/presets.

Fix a bug or add a feature

  1. Fork the repo
  2. Run locally (see below)
  3. Make your changes
  4. Open a pull request with a clear description of what you changed and why

Please keep pull requests focused — one fix or feature per PR makes review much faster.


Local development

python3 -m http.server 8000
# open http://localhost:8000

Note: use a real HTTP server, not file:// — the fetch and clipboard APIs require a proper origin.

Deploy to Netlify

Drag the project folder into the Netlify UI, or use the CLI:

netlify deploy --prod

Netlify auto-detects the hidden <form name="macnite-errors"> in index.html and provisions a form endpoint automatically. Submissions appear under Forms in the Netlify dashboard.


Project structure

File Purpose
index.html Main page markup, including the hidden Netlify Forms element
styles.css All styling
app.js Fetches the Homebrew API, renders the grid + search, builds the install command and script, handles error reporting
popular.js Curated list of homepage tiles
presets.js Preset definitions and the presets page logic
shared.js Shared utilities: catalog loading, command/script building, share URL helpers
sw.js Service worker for offline support
netlify.toml Publish dir and cache headers

Catalog source

  • Casks: https://formulae.brew.sh/api/cask.json
  • Formulae: https://formulae.brew.sh/api/formula.json

Both are cached in localStorage for 24 hours.


License

AGPL-3.0

About

Ninite for macOS — pick apps & CLI tools, get a one-line Homebrew installer. No backend, no tracking.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors