Flatten directory structure and update documentation
- Moved all files from mac_os/ subdirectory to repository root - Updated README.adoc to reflect simplified architecture - Updated QUICK_INSTALL.md with all current apps - Added claude-cli to install.sh and bin/install_homebrew_formulas - Repository now shows clean file structure without nested mac_os folder - Documentation now accurately describes opinionated installer approach Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
0
mac_os/.gitignore → .gitignore
vendored
0
mac_os/.gitignore → .gitignore
vendored
@@ -11,10 +11,10 @@ curl -fsSL https://static.due.ren/install.sh | bash
|
||||
That's it! The script will:
|
||||
1. Install Xcode Command Line Tools
|
||||
2. Install Homebrew
|
||||
3. Install all CLI tools (atuin, bash, gemini-cli, node, ffmpeg, mas, mole, rename, ykman)
|
||||
4. Install all GUI apps (Chromium, DeepL, Element, Signal, Nextcloud, Proton apps, Codex, Nova, Transmit)
|
||||
3. Install all CLI tools (atuin, bash, bash-completion, claude-cli, gemini-cli, node, ffmpeg, mas, mole, rename, ykman)
|
||||
4. Install all GUI apps (Chromium, DeepL, Element, Signal, Nextcloud, Proton apps, Codex, CodexBar, Nova, Transmit, Trimmy)
|
||||
5. Install Mac App Store apps (Bitwarden, Invoice Ninja, Numbers, Pages, PastePal, xSearch)
|
||||
6. Download and install Google Fonts (Barlow, Poppins)
|
||||
6. Download and install Google Fonts (Barlow, Barlow Semi Condensed, Poppins)
|
||||
|
||||
## Notes
|
||||
|
||||
@@ -43,9 +43,10 @@ To host on static.due.ren:
|
||||
## What's Installed
|
||||
|
||||
### Homebrew Formulas (CLI)
|
||||
- atuin - Shell history
|
||||
- atuin - Shell history manager
|
||||
- bash - Updated bash shell
|
||||
- bash-completion - Bash completions
|
||||
- claude-cli - Claude AI CLI
|
||||
- gemini-cli - Gemini AI CLI
|
||||
- node - Node.js
|
||||
- ffmpeg - Media processing
|
||||
@@ -64,8 +65,10 @@ To host on static.due.ren:
|
||||
- proton-mail - Proton Mail
|
||||
- protonvpn - Proton VPN
|
||||
- codex - AI coding assistant
|
||||
- codexbar - AI assistant menu bar (via steipete/tap)
|
||||
- nova - Nova editor
|
||||
- transmit - FTP client
|
||||
- trimmy - Video trimming tool
|
||||
|
||||
### Mac App Store
|
||||
- Bitwarden - Password manager
|
||||
158
README.adoc
Normal file
158
README.adoc
Normal file
@@ -0,0 +1,158 @@
|
||||
= macOS Installer
|
||||
|
||||
Opinionated shell scripts for automated macOS machine setup via Homebrew and Mac App Store.
|
||||
|
||||
== Features
|
||||
|
||||
* Installs link:https://developer.apple.com/xcode[Xcode Command Line Tools]
|
||||
* Installs link:http://brew.sh[Homebrew] with proper PATH configuration
|
||||
* Installs Homebrew formulas (CLI tools)
|
||||
* Installs Homebrew casks (GUI applications)
|
||||
* Installs link:http://www.apple.com/macosx/whats-new/app-store.html[App Store] software via mas
|
||||
* Installs Google Fonts (Barlow, Barlow Semi Condensed, Poppins)
|
||||
* Provides interactive CLI for step-by-step installation
|
||||
* Includes web-based installer generator at https://install.due.ren
|
||||
|
||||
== Quick Install
|
||||
|
||||
For a fresh macOS machine, run:
|
||||
|
||||
[source,bash]
|
||||
----
|
||||
curl -fsSL https://static.due.ren/install.sh | bash
|
||||
----
|
||||
|
||||
This single command installs everything automatically. See link:QUICK_INSTALL.md[Quick Install Guide] for details.
|
||||
|
||||
== Requirements
|
||||
|
||||
* macOS (tested on Apple Silicon and Intel)
|
||||
* Internet connection
|
||||
* Mac App Store account (for App Store installations)
|
||||
|
||||
== Manual Installation
|
||||
|
||||
Clone and run interactively:
|
||||
|
||||
[source,bash]
|
||||
----
|
||||
git clone https://git.due.ren/andreas/mac_os.git
|
||||
cd mac_os
|
||||
bin/run
|
||||
----
|
||||
|
||||
You will be presented with the following options:
|
||||
|
||||
....
|
||||
Install:
|
||||
b: Install basics (fonts).
|
||||
t: Install development tools (Xcode CLI).
|
||||
hf: Install Homebrew Formulas.
|
||||
hc: Install Homebrew Casks.
|
||||
m: Install Mac App Store software.
|
||||
i: Install all (executes all install options in order).
|
||||
Manage:
|
||||
c: Check status of installed software.
|
||||
C: Caffeinate machine (prevent sleep during installation).
|
||||
w: Clean work (temp) directory.
|
||||
q: Quit/Exit.
|
||||
....
|
||||
|
||||
Choose option `i` to run a full install or select a specific option to run a single action. Each option is designed to be re-run if necessary.
|
||||
|
||||
Pass the option directly to skip the prompt: `bin/run i`
|
||||
|
||||
== Web Generator
|
||||
|
||||
Visit https://install.due.ren to build a custom installer with your preferred software selections. The generator creates a standalone bash script you can download and run on any Mac.
|
||||
|
||||
== What's Installed
|
||||
|
||||
=== Homebrew Formulas (CLI Tools)
|
||||
* atuin - Shell history manager
|
||||
* bash - Updated bash shell
|
||||
* bash-completion - Bash completions
|
||||
* claude-cli - Claude AI CLI
|
||||
* gemini-cli - Gemini AI CLI
|
||||
* node - Node.js runtime
|
||||
* ffmpeg - Media processing
|
||||
* mas - Mac App Store CLI
|
||||
* mole - SSH tunneling
|
||||
* rename - Rename utility
|
||||
* ykman - YubiKey manager
|
||||
|
||||
=== Homebrew Casks (GUI Applications)
|
||||
* eloston-chromium - Ungoogled Chromium browser
|
||||
* deepl - DeepL translator
|
||||
* element - Matrix client
|
||||
* signal - Signal messenger
|
||||
* nextcloud - Nextcloud sync client
|
||||
* proton-drive - Proton Drive
|
||||
* proton-mail - Proton Mail
|
||||
* protonvpn - Proton VPN
|
||||
* codex - AI coding assistant
|
||||
* codexbar - AI assistant menu bar (steipete/tap)
|
||||
* nova - Nova text editor
|
||||
* transmit - FTP/SFTP client
|
||||
* trimmy - Video trimming tool
|
||||
|
||||
=== Mac App Store Applications
|
||||
* Bitwarden (1352778147) - Password manager
|
||||
* Invoice Ninja (1503970375) - Invoicing
|
||||
* Numbers (409203825) - Spreadsheets
|
||||
* Pages (409201541) - Word processor
|
||||
* PastePal (1503446680) - Clipboard manager
|
||||
* xSearch (1579902068) - Search tool
|
||||
|
||||
=== Fonts
|
||||
* Barlow - Google Font (full family)
|
||||
* Barlow Semi Condensed - Google Font (full family)
|
||||
* Poppins - Google Font (full family)
|
||||
* Berkeley Mono - Commercial font (must purchase separately)
|
||||
|
||||
== Customization
|
||||
|
||||
All installation scripts are in the `bin` folder:
|
||||
|
||||
* `bin/install_basics` - Installs custom fonts
|
||||
* `bin/install_dev_tools` - Installs Xcode Command Line Tools
|
||||
* `bin/install_homebrew_formulas` - Installs CLI tools via Homebrew
|
||||
* `bin/install_homebrew_casks` - Installs GUI apps via Homebrew
|
||||
* `bin/install_app_store` - Installs Mac App Store applications
|
||||
* `bin/run` - Main CLI interface
|
||||
|
||||
Edit these files to customize your installation. The `lib` folder provides helper functions for Homebrew installation, verification, and system utilities.
|
||||
|
||||
== Project Structure
|
||||
|
||||
----
|
||||
mac_os/
|
||||
├── bin/ # Installation scripts
|
||||
├── lib/ # Helper libraries
|
||||
├── fonts/ # Custom fonts to install
|
||||
├── website/ # Web-based installer generator
|
||||
├── install.sh # Single-file installer for hosting
|
||||
└── README.adoc # This file
|
||||
----
|
||||
|
||||
== Development
|
||||
|
||||
To contribute:
|
||||
|
||||
[source,bash]
|
||||
----
|
||||
git clone https://git.due.ren/andreas/mac_os.git
|
||||
cd mac_os
|
||||
----
|
||||
|
||||
Make your changes and submit a pull request.
|
||||
|
||||
== License
|
||||
|
||||
MIT License
|
||||
|
||||
== Credits
|
||||
|
||||
Forked and simplified from link:https://github.com/bkuhlmann/mac_os[bkuhlmann/mac_os].
|
||||
|
||||
Customized by link:https://due.ren[Andreas Dünnebacke].
|
||||
@@ -16,6 +16,7 @@ brew install bash
|
||||
brew install bash-completion
|
||||
|
||||
# AI
|
||||
brew install claude-cli
|
||||
brew install gemini-cli
|
||||
|
||||
# Development
|
||||
@@ -99,6 +99,7 @@ FORMULAS=(
|
||||
"atuin" # Shell history
|
||||
"bash" # Updated bash
|
||||
"bash-completion" # Bash completions
|
||||
"claude-cli" # Claude AI CLI
|
||||
"gemini-cli" # Gemini AI CLI
|
||||
"node" # Node.js
|
||||
"ffmpeg" # Media processing
|
||||
@@ -1,245 +0,0 @@
|
||||
:toc: macro
|
||||
:toclevels: 5
|
||||
:figure-caption!:
|
||||
|
||||
:mac_os_defaults_link: link:https://macos-defaults.com[macOS Defaults]
|
||||
|
||||
= macOS
|
||||
|
||||
Shell scripts for automated macOS machine setup.
|
||||
|
||||
This project is a framework for automating the setup of a macOS machine. In order to illustrate the
|
||||
potential of what this project can do, please see the companion
|
||||
link:https://alchemists.io/projects/mac_os-config[macOS Config] project for details. The _macOS
|
||||
Config_ project is an opinionated configuration which meets the needs of my development environment
|
||||
but is also meant to serve as an example and guide for building your own personalized setup. Here is
|
||||
how the two projects are meant to be used:
|
||||
|
||||
* *macOS* (this project) - The foundational framework for building custom macOS machine setups.
|
||||
* *link:https://alchemists.io/projects/mac_os-config[macOS Configuration]* - The layer on top of
|
||||
this _macOS_ project which defines a custom machine implementation. The project is meant to be
|
||||
forked for as many custom machine setups as needed.
|
||||
|
||||
toc::[]
|
||||
|
||||
== Features
|
||||
|
||||
* Provides a command line interface, written in Bash, with no additional dependencies for
|
||||
installation and management of a macOS machine.
|
||||
* Supports macOS boot disk creation for fresh install of operating system.
|
||||
* Installs link:https://developer.apple.com/xcode[Xcode Command Line Tools].
|
||||
* Installs link:http://brew.sh[Homebrew] formulas and casks.
|
||||
* Installs link:http://www.apple.com/macosx/whats-new/app-store.html[App Store] software.
|
||||
* Installs non-App Store software applications.
|
||||
* Installs software application extensions.
|
||||
* Installs dotfiles.
|
||||
* Installs link:https://nodejs.org[Node] link:https://www.npmjs.com[packages].
|
||||
* Installs link:https://www.ruby-lang.org[Ruby] link:https://rubygems.org[gems].
|
||||
* Installs link:https://www.rust-lang.org[Rust] link:https://crates.io[crates].
|
||||
* Applies {mac_os_defaults_link}.
|
||||
* Configures installed software.
|
||||
* Supports restoration of machine backups.
|
||||
|
||||
== Requirements
|
||||
|
||||
. link:https://www.apple.com/os/macos[macOS 26.0.0 (Tahoe)]
|
||||
. link:https://developer.apple.com/xcode[Xcode]
|
||||
|
||||
== Setup
|
||||
|
||||
To install, run:
|
||||
|
||||
[source,bash]
|
||||
----
|
||||
git clone https://github.com/bkuhlmann/mac_os.git
|
||||
cd mac_os
|
||||
git checkout 22.0.0
|
||||
----
|
||||
|
||||
== Usage
|
||||
|
||||
Run the following:
|
||||
|
||||
[source,bash]
|
||||
----
|
||||
bin/run
|
||||
----
|
||||
|
||||
You will be presented with the following options (listed in order of
|
||||
use):
|
||||
|
||||
....
|
||||
Boot:
|
||||
B: Create boot disk.
|
||||
Install:
|
||||
b: Apply basic settings.
|
||||
t: Install development tools.
|
||||
hf: Install Homebrew Formulas.
|
||||
hc: Install Homebrew Casks.
|
||||
m: Install Mac App Store software.
|
||||
a: Install application software.
|
||||
x: Install application software extensions.
|
||||
df: Install dotfiles.
|
||||
np: Install Node packages.
|
||||
rg: Install Ruby gems.
|
||||
rc: Install Rust crates.
|
||||
d: Apply default settings.
|
||||
cs: Configure installed software.
|
||||
i: Install everything (i.e. executes all install options in order listed).
|
||||
Restore:
|
||||
R: Restore settings from backup.
|
||||
Manage:
|
||||
c: Check status of managed software.
|
||||
C: Caffeinate machine.
|
||||
ua: Uninstall application software.
|
||||
ux: Uninstall application software extension.
|
||||
ra: Reinstall application software.
|
||||
rx: Reinstall application software extension.
|
||||
w: Clean work (temp) directory.
|
||||
q: Quit/Exit.
|
||||
....
|
||||
|
||||
Choose option `i` to run a full install or select a specific option to run a single action. Each
|
||||
option is designed to be re-run if necessary. This can also be handy for performing upgrades,
|
||||
re-running a missing/failed install, etc.
|
||||
|
||||
The option prompt can be skipped by passing the desired option directly to the `bin/run` script. For
|
||||
example, executing `bin/run i` will execute the full install process.
|
||||
|
||||
The machine should be rebooted after all install tasks have completed to ensure all settings have
|
||||
been loaded.
|
||||
|
||||
It is recommended that the `mac_os` project directory not be deleted and kept on the local machine
|
||||
in order to manage installed software and benefit from future upgrades.
|
||||
|
||||
=== Boot Disk
|
||||
|
||||
When attempting to create a boot disk via `bin/run B`, you’ll be presented with the following
|
||||
documentation (provided here for reference):
|
||||
|
||||
....
|
||||
macOS Boot Disk Setup
|
||||
1. Insert a USB drive (8GB or higher).
|
||||
2. Use Disk Utility to format as "Mac OS Extended (Journaled)".
|
||||
3. Use Disk Utility to set the schema, if available, as "GUID Partition Map".
|
||||
4. Use Disk Utility to label as "Untitled".
|
||||
5. Run this script to install the OS and create a bootable USB drive.
|
||||
|
||||
macOS Boot Disk Usage:
|
||||
1. Insert the USB drive, created above, into the machine to be upgraded.
|
||||
2. Reboot the machine.
|
||||
3. Press and hold the POWER key before the Apple logo appears.
|
||||
4. Select the USB boot disk from the menu.
|
||||
5. Use Disk Utility to delete and/or erase the hard drive including associated partitions.
|
||||
6. Use Disk Utility to create a single "APFS" drive.
|
||||
7. Install the new operating system.
|
||||
|
||||
macOS Boot Disk Recovery:
|
||||
1. Start/restart the machine.
|
||||
2. Press and hold the POWER key before the Apple logo appears.
|
||||
3. Wait for the macOS installer to load from the recovery partition.
|
||||
4. Use the dialog options to launch Disk Utility, reinstall the system, etc.
|
||||
....
|
||||
|
||||
💡 You can ensure the right installer is downloaded and available for Boot Disk creation by running the following commands:
|
||||
|
||||
[source,bash]
|
||||
----
|
||||
# Show which installers are available.
|
||||
softwareupdate --list-full-installers
|
||||
|
||||
# Download desired version.
|
||||
sudo softwareupdate --fetch-full-installer --full-installer-version 26.0
|
||||
----
|
||||
|
||||
=== Customization
|
||||
|
||||
All executable scripts can be found in the `bin` folder:
|
||||
|
||||
* `bin/apply_basic_settings` (optional, customizable): Applies basic and initial settings for
|
||||
setting up a machine.
|
||||
* `bin/apply_default_settings` (optional, customizable): Applies {mac_os_defaults_link}.
|
||||
* `bin/configure_software` (optional, customizable): Configures installed software as part of the
|
||||
post install process.
|
||||
* `bin/create_boot_disk` (optional): Creates a macOS boot disk.
|
||||
* `bin/install_app_store` (optional, customizable): Installs macOS, GUI-based, App Store
|
||||
applications.
|
||||
* `bin/install_applications` (optional, customizable): Installs macOS, GUI-based, non-App Store
|
||||
applications.
|
||||
* `bin/install_dev_tools` (required): Installs macOS development tools required by Homebrew.
|
||||
* `bin/install_dotfiles` (optional, customizable): Installs personal dotfiles so the system is
|
||||
tailored to your workflow.
|
||||
* `bin/install_extensions` (optional, customizable): Installs macOS application extensions and
|
||||
add-ons.
|
||||
* `bin/install_homebrew_casks` (optional, customizable): Installs Homebrew Formulas.
|
||||
* `bin/install_homebrew_formulas` (optional, customizable): Installs Homebrew Casks.
|
||||
* `bin/install_node_packages` (optional, customizable): Installs Node packages.
|
||||
* `bin/install_ruby_gems` (optional, customizable): Installs Ruby gems.
|
||||
* `bin/install_rust_crates` (optional, customizable): Installs Rust crates.
|
||||
* `bin/restore_backup` (optional, customizable): Restores system/application settings from backup
|
||||
image.
|
||||
* `bin/run` (required): The main script and interface for macOS setup.
|
||||
|
||||
The `lib` folder provides the base framework for installing, re-installing, and uninstalling
|
||||
software. Everything provided via the link:https://alchemists.io/projects/mac_os-config[macOS
|
||||
Config] project is built upon the functions found in the `lib` folder. See the
|
||||
link:https://alchemists.io/projects/mac_os-config[macOS Config] project for further details.
|
||||
|
||||
* `lib/settings.sh`: Defines global settings for software applications, extensions, etc.
|
||||
|
||||
=== Troubleshooting
|
||||
|
||||
* *Pi-hole*: When using link:https://pi-hole.net[Pi-hole], you might need to temporarily disable
|
||||
prior to upgrading as you might experience various errors with Apple not being able to detect an
|
||||
internet connection which prevents the installer from working.
|
||||
* *Recovery Mode*: When using the boot disk and the installer fails in some catastrophic manner,
|
||||
reboot the machine into recovery mode -- pass:[<kbd>POWER</kbd>] (Silicon) or
|
||||
pass:[<kbd>COMMAND</kbd>] + pass:[<kbd>r</kbd>] (Intel) buttons -- to download and install the
|
||||
last operating system used. Alternatively, you can also use pass:[<kbd>COMMAND</kbd>] +
|
||||
pass:[<kbd>OPTION</kbd>] + pass:[<kbd>r</kbd>] (Intel) to attempt to download the latest operating
|
||||
system.
|
||||
* *NVRAM/PRAM Reset*: When using the boot disk, you might experience a situation where you see a
|
||||
black screen with a white circle and diagonal line running through it. This means macOS lost or
|
||||
can't find the boot disk for some reason. To correct this, shut down and boot up the system again
|
||||
while holding down pass:[<kbd>OPTION</kbd>] + pass:[<kbd>COMMAND</kbd>] + pass:[<kbd>r</kbd>] +
|
||||
pass:[<kbd>p</kbd>] (Intel) keys simultaneously. You might want to wait for the system boot sound
|
||||
to happen a few times before releasing the keys. This will clear the system NVRAM/PRAM. At this
|
||||
point you can shut down and restart the system following the boot disk instructions (the boot disk
|
||||
will be recognized now).
|
||||
* *System Management Controller (SMC) Reset*: Sometimes it can help to reset the SMC to improve
|
||||
system speed. To fix, follow these steps:
|
||||
** Shut down your Mac.
|
||||
** Hold down pass:[<kbd>CONTROL</kbd>] + pass:[<kbd>OPTION</kbd>] on the left side of the keyboard
|
||||
and pass:[<kbd>SHIFT</kbd>] on the right side of the keyboard.
|
||||
** After seven seconds, hold down the Power button as well.
|
||||
** Release all keys after another seven seconds.
|
||||
** Turn on your Mac.
|
||||
** For more troubleshooting tips, check out The Eclectic Light Company's link:https://eclecticlight.co/mac-troubleshooting-summary/[Mac Troubleshooting Summary].
|
||||
|
||||
== Development
|
||||
|
||||
To contribute, run:
|
||||
|
||||
[source,bash]
|
||||
----
|
||||
git clone https://github.com/bkuhlmann/mac_os.git
|
||||
cd mac_os
|
||||
----
|
||||
|
||||
== link:https://alchemists.io/policies/license[License]
|
||||
|
||||
== link:https://alchemists.io/policies/security[Security]
|
||||
|
||||
== link:https://alchemists.io/policies/code_of_conduct[Code of Conduct]
|
||||
|
||||
== link:https://alchemists.io/policies/contributions[Contributions]
|
||||
|
||||
== link:https://alchemists.io/policies/developer_certificate_of_origin[Developer Certificate of Origin]
|
||||
|
||||
== link:https://alchemists.io/projects/mac_os/versions[Versions]
|
||||
|
||||
== link:https://alchemists.io/community[Community]
|
||||
|
||||
== Credits
|
||||
|
||||
Engineered by link:https://alchemists.io/team/brooke_kuhlmann[Brooke Kuhlmann].
|
||||
Reference in New Issue
Block a user