Initial setup: mac_os installer with custom config
Contains both components needed for Mac setup: - mac_os/: Installer scripts (from bkuhlmann/mac_os) - mac_os-config/: Custom app configuration Configured apps: - Homebrew formulas: atuin, bash, ffmpeg, mas, mole, node, rename, ykman - Homebrew casks: chromium, deepl, element, nextcloud, nova, proton suite, signal, transmit - App Store: Affinity suite, Bitwarden, Final Cut Pro, Invoice Ninja, iWork, PastePal, xSearch Usage: cd mac_os && ./bin/run Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
17
mac_os-config/bin/install_app_store
Executable file
17
mac_os-config/bin/install_app_store
Executable file
@@ -0,0 +1,17 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
# Installs App Store software.
|
||||
|
||||
# Affinity Suite
|
||||
mas install 1616831348 # Affinity Designer 2
|
||||
mas install 1616822987 # Affinity Photo 2
|
||||
mas install 1606941598 # Affinity Publisher 2
|
||||
|
||||
# Productivity
|
||||
mas install 1352778147 # Bitwarden
|
||||
mas install 424389933 # Final Cut Pro
|
||||
mas install 1503970375 # Invoice Ninja
|
||||
mas install 409203825 # Numbers
|
||||
mas install 409201541 # Pages
|
||||
mas install 1503446680 # PastePal
|
||||
mas install 1579902068 # xSearch
|
||||
7
mac_os-config/bin/install_applications
Executable file
7
mac_os-config/bin/install_applications
Executable file
@@ -0,0 +1,7 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
# Installs non-App Store, non-Homebrew applications.
|
||||
# Add custom app installations here using functions from lib/installers.sh:
|
||||
# install_dmg_app, install_zip_app, install_bare_pkg, etc.
|
||||
|
||||
# Currently empty - all apps are installed via Homebrew or App Store.
|
||||
39
mac_os-config/bin/install_basics
Executable file
39
mac_os-config/bin/install_basics
Executable file
@@ -0,0 +1,39 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
# Installs basic system settings.
|
||||
|
||||
read -p "What is this machine's label (Example: \"Alchemist\")? " mac_os_label
|
||||
if [[ -z "$mac_os_label" ]]; then
|
||||
printf "%s\n" "ERROR: Invalid MacOS label."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
read -p "What is this machine's name (Example: \"alchemist\")? " mac_os_name
|
||||
if [[ -z "$mac_os_name" ]]; then
|
||||
printf "%s\n" "ERROR: Invalid MacOS name."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
read -p "Delete all files in $HOME/Documents (y/n)? " documents
|
||||
if [[ "$documents" == "y" ]]; then
|
||||
rm -rf "$HOME/Documents/*"
|
||||
printf "%s\n" "Documents deleted."
|
||||
fi
|
||||
|
||||
read -p "Delete all files in $HOME/Downloads (y/n)? " downloads
|
||||
if [[ "$downloads" == "y" ]]; then
|
||||
rm -rf "$HOME/Downloads/*"
|
||||
printf "%s\n" "Downloads deleted."
|
||||
fi
|
||||
|
||||
read -p "Change /usr/local ownership to $USER:staff (y/n)? " ownership
|
||||
if [[ "$ownership" == "y" ]]; then
|
||||
sudo chown -R "$USER":staff /usr/local
|
||||
printf "%s\n" "Ownership changed."
|
||||
fi
|
||||
|
||||
printf "Setting system label and name...\n"
|
||||
sudo scutil --set ComputerName "$mac_os_label"
|
||||
sudo scutil --set HostName "$mac_os_name"
|
||||
sudo scutil --set LocalHostName "$mac_os_name"
|
||||
sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.smb.server NetBIOSName -string $mac_os_name
|
||||
566
mac_os-config/bin/install_defaults
Executable file
566
mac_os-config/bin/install_defaults
Executable file
@@ -0,0 +1,566 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
# Installs system and application default settings.
|
||||
|
||||
printf "%s\n" "System - Disable boot sound effects."
|
||||
sudo nvram SystemAudioVolume=" "
|
||||
|
||||
printf "%s\n" "System - Reveal IP address, hostname, OS version, etc. when clicking login window clock."
|
||||
sudo defaults write /Library/Preferences/com.apple.loginwindow AdminHostInfo HostName
|
||||
|
||||
printf "%s\n" "System - Disable launching of previously open applications upon reboot."
|
||||
defaults write -g ApplePersistence -bool no
|
||||
|
||||
printf "%s\n" "System - Disable automatic termination of inactive apps."
|
||||
defaults write NSGlobalDomain NSDisableAutomaticTermination -bool true
|
||||
|
||||
printf "%s\n" "System - Expand save panel by default."
|
||||
defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode -bool true
|
||||
|
||||
printf "%s\n" "System - Disable 'Are you sure you want to open this application?' dialog."
|
||||
defaults write com.apple.LaunchServices LSQuarantine -bool false
|
||||
|
||||
printf "%s\n" "System - Increase window resize speed for Cocoa applications."
|
||||
defaults write NSGlobalDomain NSWindowResizeTime -float 0.001
|
||||
|
||||
printf "%s\n" "System - Disable window resume system-wide."
|
||||
defaults write NSGlobalDomain NSQuitAlwaysKeepsWindows -bool false
|
||||
|
||||
printf "%s\n" "System - Disable auto-correct."
|
||||
defaults write NSGlobalDomain NSAutomaticSpellingCorrectionEnabled -bool false
|
||||
|
||||
printf "%s\n" "System - Disable smart quotes (not useful when writing code)."
|
||||
defaults write NSGlobalDomain NSAutomaticQuoteSubstitutionEnabled -bool false
|
||||
|
||||
printf "%s\n" "System - Disable smart dashes (not useful when writing code)."
|
||||
defaults write NSGlobalDomain NSAutomaticDashSubstitutionEnabled -bool false
|
||||
|
||||
printf "%s\n" "System - Require password immediately after sleep or screen saver begins."
|
||||
defaults write com.apple.screensaver askForPassword -int 1
|
||||
defaults write com.apple.screensaver askForPasswordDelay -int 0
|
||||
|
||||
printf "%s\n" "System - Avoid creating .DS_Store files on network volumes."
|
||||
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true
|
||||
|
||||
printf "%s\n" "System - Automatically restart if system freezes."
|
||||
systemsetup -setrestartfreeze on
|
||||
|
||||
printf "%s\n" "System - Disable software updates."
|
||||
sudo softwareupdate --schedule off
|
||||
|
||||
printf "%s\n" "Keyboard - Automatically illuminate built-in MacBook keyboard in low light."
|
||||
defaults write com.apple.BezelServices kDim -bool true
|
||||
|
||||
printf "%s\n" "Keyboard - Turn off keyboard illumination when computer is not used for 5 minutes."
|
||||
defaults write com.apple.BezelServices kDimTime -int 300
|
||||
|
||||
printf "%s\n" "Keyboard - Enable keyboard access for all controls."
|
||||
defaults write NSGlobalDomain AppleKeyboardUIMode -int 3
|
||||
|
||||
printf "%s\n" "Keyboard - Set a fast keyboard repeat rate."
|
||||
defaults write NSGlobalDomain KeyRepeat -int 0
|
||||
|
||||
printf "%s\n" "Keyboard - Disable press-and-hold for keys in favor of key repeat."
|
||||
defaults write NSGlobalDomain ApplePressAndHoldEnabled -bool false
|
||||
|
||||
printf "%s\n" "Trackpad - Map bottom right corner to right-click."
|
||||
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadCornerSecondaryClick -int 2
|
||||
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadRightClick -bool true
|
||||
defaults -currentHost write NSGlobalDomain com.apple.trackpad.trackpadCornerClickBehavior -int 1
|
||||
defaults -currentHost write NSGlobalDomain com.apple.trackpad.enableSecondaryClick -bool true
|
||||
|
||||
printf "%s\n" "Trackpad - Enable tap to click for current user and the login screen."
|
||||
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -bool true
|
||||
defaults -currentHost write NSGlobalDomain com.apple.mouse.tapBehavior -int 1
|
||||
defaults write NSGlobalDomain com.apple.mouse.tapBehavior -int 1
|
||||
|
||||
printf "%s\n" "Trackpad - Use CONTROL (^) with scroll to zoom."
|
||||
defaults write com.apple.universalaccess closeViewScrollWheelToggle -bool true
|
||||
defaults write com.apple.universalaccess HIDScrollZoomModifierMask -int 262144
|
||||
|
||||
printf "%s\n" "Trackpad - Follow keyboard focus while zoomed in."
|
||||
defaults write com.apple.universalaccess closeViewZoomFollowsFocus -bool true
|
||||
|
||||
printf "%s\n" "Bluetooth - Increase sound quality for headphones/headsets."
|
||||
defaults write com.apple.BluetoothAudioAgent "Apple Bitpool Min (editable)" -int 40
|
||||
|
||||
printf "%s\n" "Menu Bar - Show only Bluetooth and Airport."
|
||||
for domain in $HOME/Library/Preferences/ByHost/com.apple.systemuiserver.*; do
|
||||
defaults write "${domain}" dontAutoLoad -array "/System/Library/CoreServices/Menu Extras/TimeMachine.menu"
|
||||
done
|
||||
|
||||
defaults write com.apple.systemuiserver menuExtras -array \
|
||||
"/System/Library/CoreServices/Menu Extras/Bluetooth.menu" \
|
||||
"/System/Library/CoreServices/Menu Extras/AirPort.menu"
|
||||
|
||||
printf "%s\n" "Dock - Remove all default app icons."
|
||||
defaults write com.apple.dock persistent-apps -array
|
||||
|
||||
printf "%s\n" "Dock - Automatically hide and show."
|
||||
defaults write com.apple.dock autohide -bool true
|
||||
|
||||
printf "%s\n" "Dock - Remove the auto-hiding delay."
|
||||
defaults write com.apple.Dock autohide-delay -float 0
|
||||
|
||||
printf "%s\n" "Dock - Don’t show Dashboard as a Space."
|
||||
defaults write com.apple.dock "dashboard-in-overlay" -bool true
|
||||
|
||||
printf "%s\n" "iCloud - Save to disk by default."
|
||||
defaults write NSGlobalDomain NSDocumentSaveNewDocumentsToCloud -bool false
|
||||
|
||||
printf "%s\n" "Finder - Show the $HOME/Library folder."
|
||||
chflags nohidden $HOME/Library
|
||||
|
||||
printf "%s\n" "Finder - Show hidden files."
|
||||
defaults write com.apple.finder AppleShowAllFiles -bool true
|
||||
|
||||
printf "%s\n" "Finder - Show filename extensions."
|
||||
defaults write NSGlobalDomain AppleShowAllExtensions -bool true
|
||||
|
||||
printf "%s\n" "Finder - Disable the warning when changing a file extension."
|
||||
defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false
|
||||
|
||||
printf "%s\n" "Finder - Show path bar."
|
||||
defaults write com.apple.finder ShowPathbar -bool true
|
||||
|
||||
printf "%s\n" "Finder - Show status bar."
|
||||
defaults write com.apple.finder ShowStatusBar -bool true
|
||||
|
||||
printf "%s\n" "Finder - Display full POSIX path as window title."
|
||||
defaults write com.apple.finder _FXShowPosixPathInTitle -bool true
|
||||
|
||||
printf "%s\n" "Finder - Use list view in all Finder windows."
|
||||
defaults write com.apple.finder FXPreferredViewStyle -string "Nlsv"
|
||||
|
||||
printf "%s\n" "Finder - Allow quitting via COMMAND+Q -- Doing so will also hide desktop icons."
|
||||
defaults write com.apple.finder QuitMenuItem -bool true
|
||||
|
||||
printf "%s\n" "Finder - Disable the warning before emptying the Trash."
|
||||
defaults write com.apple.finder WarnOnEmptyTrash -bool false
|
||||
|
||||
printf "%s\n" "Finder - Allow text selection in Quick Look."
|
||||
defaults write com.apple.finder QLEnableTextSelection -bool true
|
||||
|
||||
printf "%s\n" "iOS Simulator - Symlink the iOS Simulator application."
|
||||
sudo ln -sf "/Applications/Xcode.app/Contents/Applications/iPhone Simulator.app" "/Applications/iOS Simulator.app"
|
||||
|
||||
printf "%s\n" "Safari - Set home page to 'about:blank' for faster loading."
|
||||
defaults write com.apple.Safari HomePage -string "about:blank"
|
||||
|
||||
printf "%s\n" "Safari - Hide bookmarks bar."
|
||||
defaults write com.apple.Safari ShowFavoritesBar -bool false
|
||||
|
||||
printf "%s\n" "Safari - Use Contains instead of Starts With in search banners."
|
||||
defaults write com.apple.Safari FindOnPageMatchesWordStartsOnly -bool false
|
||||
|
||||
printf "%s\n" "Safari - Enable debug menu."
|
||||
defaults write com.apple.Safari IncludeInternalDebugMenu -bool true
|
||||
|
||||
printf "%s\n" "Safari - Enable the Develop menu and the Web Inspector."
|
||||
defaults write com.apple.Safari IncludeDevelopMenu -bool true
|
||||
defaults write com.apple.Safari WebKitDeveloperExtrasEnabledPreferenceKey -bool true
|
||||
defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2DeveloperExtrasEnabled -bool true
|
||||
|
||||
printf "%s\n" "Safari - Add a context menu item for showing the Web Inspector in web views."
|
||||
defaults write NSGlobalDomain WebKitDeveloperExtras -bool true
|
||||
|
||||
printf "%s\n" "Safari - Disable sending search queries to Apple.."
|
||||
defaults write com.apple.Safari UniversalSearchEnabled -bool false
|
||||
|
||||
printf "%s\n" "Chrome - Prevent native print dialog, use system dialog instead."
|
||||
defaults write com.google.Chrome DisablePrintPreview -boolean true
|
||||
|
||||
printf "%s\n" "Mail - Copy email addresses as 'foo@example.com' instead of 'Foo Bar <foo@example.com>'."
|
||||
defaults write com.apple.mail AddressesIncludeNameOnPasteboard -bool false
|
||||
|
||||
printf "%s\n" "Mail - Disable send animation."
|
||||
defaults write com.apple.mail DisableSendAnimations -bool true
|
||||
|
||||
printf "%s\n" "Mail - Disable reply animation."
|
||||
defaults write com.apple.mail DisableReplyAnimations -bool true
|
||||
|
||||
printf "%s\n" "Mail - Enable COMMAND+ENTER to send mail."
|
||||
defaults write com.apple.mail NSUserKeyEquivalents -dict-add "Send" -string "@\\U21a9"
|
||||
|
||||
printf "%s\n" "Address Book - Enable debug menu."
|
||||
defaults write com.apple.addressbook ABShowDebugMenu -bool true
|
||||
|
||||
printf "%s\n" "iCal - Enable debug menu."
|
||||
defaults write com.apple.iCal IncludeDebugMenu -bool true
|
||||
|
||||
printf "%s\n" "TextEdit - Use plain text mode for new documents."
|
||||
defaults write com.apple.TextEdit RichText -int 0
|
||||
|
||||
printf "%s\n" "TextEdit - Open and save files as UTF-8 encoding."
|
||||
defaults write com.apple.TextEdit PlainTextEncoding -int 4
|
||||
defaults write com.apple.TextEdit PlainTextEncodingForWrite -int 4
|
||||
|
||||
printf "%s\n" "Disk Utility - Enable debug menu."
|
||||
defaults write com.apple.DiskUtility DUDebugMenuEnabled -bool true
|
||||
defaults write com.apple.DiskUtility advanced-image-options -bool true
|
||||
|
||||
printf "%s\n" "Time Machine - Prevent prompting to use new hard drives as backup volume."
|
||||
defaults write com.apple.TimeMachine DoNotOfferNewDisksForBackup -bool true
|
||||
|
||||
printf "%s\n" "Printer - Expand print panel by default."
|
||||
defaults write NSGlobalDomain PMPrintingExpandedStateForPrint -bool true
|
||||
|
||||
printf "%s\n" "Printer - Automatically quit printer app once the print jobs complete."
|
||||
defaults write com.apple.print.PrintingPrefs "Quit When Finished" -bool true
|
||||
|
||||
printf "%s\n" "Game Center - Disable Game Center."
|
||||
defaults write com.apple.gamed Disabled -bool true
|
||||
|
||||
printf "%s\n" "App Store - Enable the WebKit Developer Tools in the Mac App Store."
|
||||
defaults write com.apple.appstore WebKitDeveloperExtras -bool true
|
||||
|
||||
printf "%s\n" "App Store - Enable Debug Menu in the Mac App Store."
|
||||
defaults write com.apple.appstore ShowDebugMenu -bool true
|
||||
|
||||
printf "CCMenu - Add open source projects\n"
|
||||
defaults write net.sourceforge.cruisecontrol.CCMenu '
|
||||
{
|
||||
NSNavLastRootDirectory = "~/Downloads";
|
||||
NSNavPanelExpandedSizeForSaveMode = "{800, 448}";
|
||||
"NSStatusItem Preferred Position Item-0" = 628;
|
||||
"PlaySound Broken" = 0;
|
||||
"PlaySound Fixed" = 0;
|
||||
"PlaySound StillFailing" = 0;
|
||||
"PlaySound Successful" = 0;
|
||||
ProjectOrder = 1;
|
||||
"SendNotification Broken" = 1;
|
||||
"SendNotification Fixed" = 1;
|
||||
"SendNotification StillFailing" = 1;
|
||||
"SendNotification Successful" = 1;
|
||||
ShowPipelineStatusInWindow = 1;
|
||||
"Sound Broken" = Sosumi;
|
||||
"Sound Fixed" = Sosumi;
|
||||
"Sound StillFailing" = Sosumi;
|
||||
"Sound Successful" = Sosumi;
|
||||
pipelines = (
|
||||
{
|
||||
feedName = "bkuhlmann/auther";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/auther.cc.xml";
|
||||
name = Auther;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/bashsmith";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/bashsmith.cc.xml";
|
||||
name = Bashsmith;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/benchmarks";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/benchmarks.cc.xml";
|
||||
name = Benchmarks;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/caliber";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/caliber.cc.xml";
|
||||
name = Caliber;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/cogger";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/cogger.cc.xml";
|
||||
name = Cogger;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/containable";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/containable.cc.xml";
|
||||
name = Containable;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/core";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/core.cc.xml";
|
||||
name = Core;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/docker-alpine-base";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/docker-alpine-base.cc.xml";
|
||||
name = "Docker Alpine Base";
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/docker-alpine-ruby";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/docker-alpine-ruby.cc.xml";
|
||||
name = "Docker Alpine Ruby";
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/dotfiles";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/dotfiles.cc.xml";
|
||||
name = Dotfiles;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/etcher";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/etcher.cc.xml";
|
||||
name = Etcher;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/functionable";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/functionable.cc.xml";
|
||||
name = "Functionable";
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/gemsmith";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/gemsmith.cc.xml";
|
||||
name = Gemsmith;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/ghub";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/ghub.cc.xml";
|
||||
name = Ghub;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/git-lint";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/git-lint.cc.xml";
|
||||
name = "Git Lint";
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/gitt";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/gitt.cc.xml";
|
||||
name = Gitt;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/hanamismith";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/hanamismith.cc.xml";
|
||||
name = Hanamismith;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/htmx";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/htmx.cc.xml";
|
||||
name = HTMX;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/htmx-remove";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/htmx-remove.cc.xml";
|
||||
name = "htmx Remove";
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/htmx-select";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/htmx-select.cc.xml";
|
||||
name = "htmx Select";
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/hemo";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/hemo.cc.xml";
|
||||
name = Hemo;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/http-fake";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/http-fake.cc.xml";
|
||||
name = "HTTP Fake";
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/infusible";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/infusible.cc.xml";
|
||||
name = Infusible;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/initable";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/initable.cc.xml";
|
||||
name = Initable;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/inspectable";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/inspectable.cc.xml";
|
||||
name = Inspectable;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/irb-kit";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/irb-kit.cc.xml";
|
||||
name = "IRB Kit";
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/kagi-api";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/kagi-api.cc.xml";
|
||||
name = "Kagi API";
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/lode";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/lode.cc.xml";
|
||||
name = Lode;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/mac_os";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/mac_os.cc.xml";
|
||||
name = macOS;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/mac_os-config";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/mac_os-config.cc.xml";
|
||||
name = "macOS Configuration";
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/marameters";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/marameters.cc.xml";
|
||||
name = Marameters;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/milestoner";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/milestoner.cc.xml";
|
||||
name = Milestoner;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/navigator";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/navigator.cc.xml";
|
||||
name = Navigator;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/pennyworth";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/pennyworth.cc.xml";
|
||||
name = Pennyworth;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/petail";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/petail.cc.xml";
|
||||
name = Petail;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/pipeable";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/pipeable.cc.xml";
|
||||
name = Pipeable;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/pkce";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/pkce.cc.xml";
|
||||
name = PKCE;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/pragmater";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/pragmater.cc.xml";
|
||||
name = Pragmater;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/prawn_plus";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/prawn_plus.cc.xml";
|
||||
name = "Prawn+";
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/refinements";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/refinements.cc.xml";
|
||||
name = Refinements;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/rubysmith";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/rubysmith.cc.xml";
|
||||
name = Rubysmith;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/runcom";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/runcom.cc.xml";
|
||||
name = Runcom;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/sod";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/sod.cc.xml";
|
||||
name = Sod;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/spek";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/spek.cc.xml";
|
||||
name = Spek;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/sublime_text_kit";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/sublime_text_kit.cc.xml";
|
||||
name = "Sublime Text Kit";
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/sublime_text_setup";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/sublime_text_setup.cc.xml";
|
||||
name = "Sublime Text Setup";
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/tana";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/tana.cc.xml";
|
||||
name = Tana;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/tocer";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/tocer.cc.xml";
|
||||
name = Tocer;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/tone";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/tone.cc.xml";
|
||||
name = Tone;
|
||||
},
|
||||
{
|
||||
feedName = "usetrmnl/trmnl-api";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/usetrmnl/trmnl-api.cc.xml";
|
||||
name = "TRMNL API";
|
||||
},
|
||||
{
|
||||
feedName = "usetrmnl/byos_hanami";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/usetrmnl/byos_hanami.cc.xml";
|
||||
name = "TRMNL Terminus";
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/versionaire";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/versionaire.cc.xml";
|
||||
name = Versionaire;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/wholeable";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/wholeable.cc.xml";
|
||||
name = Wholeable;
|
||||
},
|
||||
{
|
||||
feedName = "bkuhlmann/xdg";
|
||||
feedType = cctray;
|
||||
feedUrl = "https://circleci.com/gh/bkuhlmann/xdg.cc.xml";
|
||||
name = XDG;
|
||||
}
|
||||
);
|
||||
}'
|
||||
6
mac_os-config/bin/install_extensions
Executable file
6
mac_os-config/bin/install_extensions
Executable file
@@ -0,0 +1,6 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
# Installs application extensions (editor plugins, etc.)
|
||||
# Add extensions here using install_git_app or install_file from lib/installers.sh
|
||||
|
||||
# Currently empty - add extensions as needed.
|
||||
21
mac_os-config/bin/install_homebrew_casks
Executable file
21
mac_os-config/bin/install_homebrew_casks
Executable file
@@ -0,0 +1,21 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
# Installs Homebrew Casks (GUI applications).
|
||||
|
||||
# Browsers
|
||||
brew install --cask eloston-chromium
|
||||
|
||||
# Communication
|
||||
brew install --cask deepl
|
||||
brew install --cask element
|
||||
brew install --cask signal
|
||||
|
||||
# Cloud & Sync
|
||||
brew install --cask nextcloud
|
||||
brew install --cask proton-drive
|
||||
brew install --cask proton-mail
|
||||
brew install --cask protonvpn
|
||||
|
||||
# Development
|
||||
brew install --cask nova
|
||||
brew install --cask transmit
|
||||
20
mac_os-config/bin/install_homebrew_formulas
Executable file
20
mac_os-config/bin/install_homebrew_formulas
Executable file
@@ -0,0 +1,20 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
# Installs Homebrew formulas (CLI tools).
|
||||
|
||||
# Shell & Terminal
|
||||
brew install atuin
|
||||
brew install bash
|
||||
brew install bash-completion
|
||||
|
||||
# Development
|
||||
brew install node
|
||||
|
||||
# Media
|
||||
brew install ffmpeg
|
||||
|
||||
# Utilities
|
||||
brew install mas
|
||||
brew install mole
|
||||
brew install rename
|
||||
brew install ykman
|
||||
6
mac_os-config/bin/install_node_packages
Executable file
6
mac_os-config/bin/install_node_packages
Executable file
@@ -0,0 +1,6 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
# Installs global Node.js packages.
|
||||
# Add packages here: npm install -g <package>
|
||||
|
||||
# Currently empty - add packages as needed.
|
||||
6
mac_os-config/bin/install_ruby_gems
Executable file
6
mac_os-config/bin/install_ruby_gems
Executable file
@@ -0,0 +1,6 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
# Installs Ruby gems.
|
||||
# Add gems here: gem install <gem>
|
||||
|
||||
# Currently empty - add gems as needed.
|
||||
6
mac_os-config/bin/install_rust_crates
Executable file
6
mac_os-config/bin/install_rust_crates
Executable file
@@ -0,0 +1,6 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
# Installs Rust crates.
|
||||
# Add crates here: cargo install <crate>
|
||||
|
||||
# Currently empty - add crates as needed.
|
||||
11
mac_os-config/bin/install_shell
Executable file
11
mac_os-config/bin/install_shell
Executable file
@@ -0,0 +1,11 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
# Installs shell.
|
||||
|
||||
if [[ -z $(cat /etc/shells | grep "$(get_homebrew_bin_root)/bash") ]]; then
|
||||
sudo bash -c "printf '$(get_homebrew_bin_root)/bash\n' >> /etc/shells"
|
||||
chsh -s "$(get_homebrew_bin_root)/bash"
|
||||
rm -f "$HOME/.bash_profile"
|
||||
else
|
||||
printf "%s\n" "Shell is installed."
|
||||
fi
|
||||
6
mac_os-config/bin/rake
Executable file
6
mac_os-config/bin/rake
Executable file
@@ -0,0 +1,6 @@
|
||||
#! /usr/bin/env ruby
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "bundler/setup"
|
||||
|
||||
load Gem.bin_path "rake", "rake"
|
||||
48
mac_os-config/bin/restore_backup
Executable file
48
mac_os-config/bin/restore_backup
Executable file
@@ -0,0 +1,48 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
# Performs restoration of backups.
|
||||
|
||||
read -p "Enter the backup volume path (Example: \"/Volumes/alchemist\")? " mac_os_backup_root
|
||||
|
||||
if [[ ! -e "$mac_os_backup_root" ]]; then
|
||||
printf "%s\n" "ERROR: Backup volume cannot be found: $mac_os_backup_root."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p log
|
||||
|
||||
rsync \
|
||||
--rsync-path="sudo rsync" \
|
||||
--perms \
|
||||
--recursive \
|
||||
--compress \
|
||||
--numeric-ids \
|
||||
--links \
|
||||
--hard-links \
|
||||
--files-from="$MAC_OS_CONFIG_PATH/lib/restore.bom" \
|
||||
--log-file="log/restore.log" \
|
||||
--human-readable \
|
||||
--verbose \
|
||||
"$mac_os_backup_root/" /
|
||||
|
||||
# Newsyslog
|
||||
sudo cp -p "$mac_os_backup_root/etc/newsyslog.d/alchemists.conf" "/etc/newsyslog.d"
|
||||
sudo cp -p "$mac_os_backup_root/etc/newsyslog.d/homebrew.conf" "/etc/newsyslog.d"
|
||||
|
||||
# Dotfiles
|
||||
(
|
||||
cd "$HOME/Engineering/OSS/dotfiles"
|
||||
bin/run l
|
||||
)
|
||||
|
||||
# Sublime Text
|
||||
(
|
||||
cd "$HOME/Engineering/OSS/sublime_text_setup"
|
||||
bin/run l
|
||||
)
|
||||
|
||||
# Duti
|
||||
duti "$HOME/.config/duti/configuration.duti"
|
||||
|
||||
# Reboot
|
||||
printf "%s\n" "Please reboot machine and then finish by installing all libraries."
|
||||
Reference in New Issue
Block a user