539a8fc28f
Convert the legacy system_sync.sh and system_restore.sh into a modular shareable repository: - bin/ssr CLI dispatcher with install/sync/restore/schedule/config/status - lib/ split: common, cloud, brew, mackup, macos - Cloud provider abstraction (icloud, dropbox, googledrive, onedrive, custom) - launchd template for scheduled daily sync (renderable via sed) - ssr.conf.example with whitelisted KEY=VALUE config loader - macos-defaults.sh extracted from inline block, overridable - install.sh bootstrap symlinks CLI into ~/.local/bin - README with usage, config table, migration map, security notes - Original scripts archived under legacy/ for reference Fixes vs originals: set -euo pipefail, quoted vars, find -print0, spctl --global-disable (was --master-disable), MACOS=".macos" bug, zero-width char before ln, Apple Silicon brew shellenv, config injection hardening. Co-authored-by: Cursor <cursoragent@cursor.com>
78 lines
2.9 KiB
Bash
Executable File
78 lines
2.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# Setup script for setting up a new macos machine
|
||
echo "Starting setup"
|
||
|
||
declare -A nonPckgApps
|
||
nonPckgApps[PhraseExpress]="https://www.phraseexpress.com/de/mac/download/"
|
||
nonPckgApps[AusweisApp2]="https://www.ausweisapp.bund.de/download/windows-und-mac/"
|
||
#nonPckgApps[]=""
|
||
|
||
BREWFILE="$1"
|
||
LOGGER_BIN="/usr/bin/logger -ist '$0'"
|
||
# Check for Homebrew to be present, install if it's missing
|
||
if test ! $(which brew); then
|
||
echo "Installing homebrew..."
|
||
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
|
||
fi
|
||
BREW_BIN=$(which brew)
|
||
BREW_PREFX=$(brew --prefix)
|
||
CASK_DIR=$(brew --caskroom)
|
||
# Update homebrew recipes
|
||
$BREW_BIN update
|
||
$BREW_BIN install mackup
|
||
MACKUP_DIR="$HOME/Library/Mobile Documents/com~apple~CloudDocs/Mackup"
|
||
ln -s $MACKUP_DIR/.mackup.cfg $HOME/.mackup.cfg
|
||
MACKUP_BIN=$(which mackup)
|
||
|
||
|
||
read -t 60 -n 1 -p "configure iCloud Drive and confirm to continue with Brewfile '$BREWFILE'? [y/N]: " answer
|
||
if [ $? == 0 ]; then
|
||
echo
|
||
echo "allow Apps downloaded from anywhere…"
|
||
sudo spctl --master-disable
|
||
#open /System/Library/PreferencePanes/Security.prefPane
|
||
echo
|
||
echo "Make sure Rosetta is installed..."
|
||
sudo softwareupdate --install-rosetta
|
||
|
||
$BREW_BIN bundle --verbose --file="$BREWFILE" | $LOGGER_BIN
|
||
$MACKUP_BIN restore
|
||
|
||
#echo "this script is unable to install the following apps..."
|
||
#for key val in ${(kv)nonPckgApps}; do
|
||
# echo "$key"
|
||
# open "$val"
|
||
#done
|
||
|
||
read -n 1 -p "Hit return to continue: " answer
|
||
echo "these apps will need manual config and opened in the background..."
|
||
find "$CASK_DIR" -iname "*.app" | while read APP;
|
||
do
|
||
open "$APP";
|
||
done
|
||
|
||
read -n 1 -p "Hit return to continue: " answer
|
||
echo "Configuring OS... (may need sudo)"
|
||
MACOS = ".macos"
|
||
source "$MACOS"
|
||
# Pin The Dock To The Left(start), Bottom(middle), Right(end)
|
||
defaults write com.apple.dock pinning -string middle
|
||
# Set dock to a flat 2D version
|
||
defaults write com.apple.dock no-glass -boolean YES && killall Dock;
|
||
# Recent Applications Stack in Dock
|
||
defaults write com.apple.dock persistent-others -array-add '{ "tile-data" = { "list-type" = 1; }; "tile-type" = "recents-tile"; }' && killall Dock;
|
||
# put a small gradient behind an icon
|
||
defaults write com.apple.dock mouse-over-hilte-stack -boolean YES && killall Dock;
|
||
# add a message of your choice to the Login window
|
||
sudo defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText "Welcome back..."
|
||
# Enable Time Machine On Unsupported Drives
|
||
defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1
|
||
# Force Mail To Display In Plain Text
|
||
defaults write com.apple.mail PreferPlainText -bool TRUE
|
||
# widegts on the dashboard
|
||
defaults write com.apple.dashboard devmode YES
|
||
echo "Macbook setup completed!"
|
||
else
|
||
echo "Can't wait anymore!"
|
||
fi
|