220 lines
7.0 KiB
Bash
Executable File
220 lines
7.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# sm @ DeZIM-Institut
|
|
|
|
# Name of new User
|
|
read -p "Enter surname of new user: " -r NEW_USER
|
|
|
|
# Variable for setting a non-root install folder (to run the script, need to export this to .zshrc afterwards)
|
|
# HOMEBREW_CASK_OPTS="--appdir=~/Applications"
|
|
|
|
# Set Homebrew paths...
|
|
BREW_PATH="/opt/homebrew/bin:/opt/homebrew/sbin"
|
|
|
|
# Add packages if needed...
|
|
PACKAGES=(
|
|
coreutils
|
|
gnu-sed
|
|
gnu-tar
|
|
gnu-indent
|
|
gnu-which
|
|
findutils
|
|
gnutls
|
|
git
|
|
bat
|
|
tmux
|
|
readline
|
|
zsh
|
|
zsh-completions
|
|
openssh
|
|
python
|
|
ruby
|
|
samba
|
|
ssh-copy-id
|
|
speedtest-cli
|
|
fish
|
|
)
|
|
|
|
CASKS=(
|
|
microsoft-office-businesspro # office programs
|
|
slack # app for internal communication
|
|
adobe-acrobat-reader # pdf reader and compressor
|
|
firefox # web browser
|
|
google-chrome # web browser
|
|
keka # unarchiver/archiver
|
|
1password # password manager
|
|
zoom # app for meetings
|
|
deepl # machine learning translator
|
|
)
|
|
|
|
# Add applications if needed...
|
|
OPTIONAL_CASKS=(
|
|
microsoft-remote-desktop # RDP client
|
|
iterm2 # terminal emulator
|
|
docker # GUI for Docker
|
|
rstudio # RStudio
|
|
r # R Programming Languages
|
|
zotero # Zotero
|
|
utm # VMs
|
|
veracrypt # encrypted containers
|
|
)
|
|
|
|
# Installing Rosetta 2...
|
|
echo "Checking for arm64 architecture..."
|
|
if [[ "$(uname -m)" == "arm64" ]]; then
|
|
echo "arm64 architecture detected. Installing Rosetta."
|
|
softwareupdate --install-rosetta --agree-to-license
|
|
fi
|
|
|
|
# Install Sophos
|
|
chmod a+x "/Volumes/macOS_Magic/macOS_Magic/SophosInstall/Sophos Installer.app/Contents/MacOS/Sophos Installer"
|
|
chmod a+x "/Volumes/macOS_Magic/macOS_Magic/SophosInstall/Sophos Installer.app/Contents/MacOS/tools/com.sophos.bootstrap.helper"
|
|
sudo "/Volumes/macOS_Magic/macOS_Magic/SophosInstall/Sophos Installer.app/Contents/MacOS/Sophos Installer" --quiet
|
|
# Sophos Connect
|
|
sudo installer -package "/Volumes/macOS_Magic/macOS_Magic/VPN/Sophos_Connect.pkg" -target "/Volumes/Macintosh HD"
|
|
|
|
# Check for errors after executing commands
|
|
if [ $? -ne 0 ]; then
|
|
echo "Error installing Sophos. Exiting..."
|
|
exit 1
|
|
fi
|
|
|
|
# Check for Homebrew to be present, install if it's missing
|
|
if ! command -v brew &>/dev/null; then
|
|
echo "Installing Homebrew..."
|
|
if /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"; then
|
|
echo "Homebrew installation successful."
|
|
else
|
|
echo "Homebrew installation failed."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# Add Homebrew paths to .zshrc and .zprofile
|
|
#sudo echo "export PATH=\"$BREW_PATH:\$PATH\"" >>"/Users/$NEW_USER/.zshrc"
|
|
#sudo echo "export PATH=\"$BREW_PATH:\$PATH\"" >>"/Users/$NEW_USER/.zprofile"
|
|
|
|
# Source .zshrc to apply changes immediately
|
|
# source "$HOME/.zshrc"
|
|
|
|
# Fixing permissions for specific subdirectories in /opt/homebrew (Apple Silicon)
|
|
echo "Fixing permissions..."
|
|
sudo chown -R $NEW_USER:admin /opt/homebrew/
|
|
sudo chmod -R g+rwx /opt/homebrew/
|
|
|
|
# Security measure, install Casks which don't need root into ~/Applications, not /Applications
|
|
echo "Adding a security measure to install apps which don't need to be on root and instead install them in their local path."
|
|
sudo echo "export HOMEBREW_CASK_OPTS="--appdir=~/Applications"" >>"/Users/$NEW_USER/.zshrc"
|
|
|
|
echo "Activate Homebrew..."
|
|
(echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/admin/.zprofile
|
|
eval "$(/opt/homebrew/bin/brew shellenv)"
|
|
|
|
echo "Updating homebrew recipes..."
|
|
brew update
|
|
brew upgrade
|
|
brew tap homebrew/cask
|
|
brew tap homebrew/cask-fonts
|
|
brew doctor
|
|
|
|
echo "Installing packages..."
|
|
brew reinstall "${PACKAGES[@]}"
|
|
|
|
#echo "Enforcing macOS to use GNU tools..."
|
|
sudo echo "export PATH="/opt/homebrew/opt/findutils/libexec/gnubin:$PATH"" >>"/Users/$NEW_USER/.zshrc"
|
|
|
|
echo "Installing apps..."
|
|
brew reinstall --cask "${CASKS[@]}"
|
|
|
|
read -p "Install additional apps? [y/N] " -r
|
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
for cask in "${OPTIONAL_CASKS[@]}"; do
|
|
read -p "Install $cask ? [y/N] " -r
|
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
if ! brew reinstall --cask $cask; then
|
|
echo "Error installing $cask. Skipping..."
|
|
sleep 1
|
|
fi
|
|
fi
|
|
done
|
|
fi
|
|
|
|
echo "Cleaning up..."
|
|
brew cleanup
|
|
brew doctor
|
|
|
|
echo "Installing additional software... "
|
|
# Clevertouch
|
|
sudo cp -R "/Volumes/macOS_Magic/macOS_Magic/Clevertouch/Clevershare.app" "/Applications/"
|
|
# DFN Phone
|
|
sudo cp -R "/Volumes/macOS_Magic/macOS_Magic/DFN_Phone/"DFN VoIP-Centrex.app"" "/Applications/"
|
|
# Installing the RICO Printer Drivers...
|
|
sudo installer -package "/Volumes/macOS_Magic/macOS_Magic/Druckertreiber/Ricoh_IM_C3000_C3500_C4500_LIO_Driver.pkg" -target "/Volumes/Macintosh HD"
|
|
|
|
echo "Applying system settings..."
|
|
|
|
# Set hostname
|
|
read -p "Enter hostname: " -r newhostname
|
|
sudo scutil --set ComputerName "$newhostname"
|
|
sudo scutil --set HostName "$newhostname"
|
|
sudo scutil --set LocalHostName "$newhostname"
|
|
sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.smb.server NetBIOSName -string "$newhostname"
|
|
|
|
# Clear existing persistent apps in the Dock
|
|
defaults write com.apple.dock persistent-apps -array
|
|
|
|
# Define an array of applications to add to the Dock
|
|
dock_apps=(
|
|
"/System/Library/CoreServices/Finder.app"
|
|
"/System/Applications/Launchpad.app"
|
|
"/Applications/Safari.app"
|
|
"Applications/Firefox.app"
|
|
"/Applications/Google Chrome.app"
|
|
"/Applications/Microsoft Outlook.app"
|
|
"/Applications/Slack.app"
|
|
"/Applications/Notes.app"
|
|
"/Applications/Microsoft Word.app"
|
|
"/Applications/Microsoft PowerPoint.app"
|
|
"/Applications/Microsoft Excel.app"
|
|
"/Applications/1Password.app"
|
|
"/Applications/Zoom.app"
|
|
"/Applications/TeamViewer.app"
|
|
"/Applications/Visual Studio Code.app"
|
|
"/Applications/iTerm.app"
|
|
"/System/Applications/System Settings.app"
|
|
)
|
|
|
|
echo "Setting the new macOS Dock layout..."
|
|
|
|
# Loop through the applications and add them to the Dock
|
|
for dockItem in "${dock_apps[@]}"; do
|
|
defaults write com.apple.dock persistent-apps -array-add "<dict><key>tile-data</key><dict><key>file-data</key><dict><key>_CFURLString</key><string>$dockItem</string><key>_CFURLStringType</key><integer>0</integer></dict></dict></dict>"
|
|
done
|
|
|
|
# Disable Sound Effects on Boot
|
|
sudo nvram SystemAudioVolume=" "
|
|
|
|
# Enable full disk encryption
|
|
sudo fdesetup enable
|
|
|
|
# Reset Launchpad
|
|
sudo defaults write com.apple.dock ResetLaunchPad -bool true
|
|
|
|
# automatic display sleep to 15 min
|
|
sudo pmset displaysleep 15
|
|
|
|
# Show All File Extensions
|
|
sudo defaults write -g AppleShowAllExtensions -bool true
|
|
|
|
# Quit Printer App After Print Jobs Complete
|
|
sudo defaults write com.apple.print.PrintingPrefs "Quit When Finished" -bool true
|
|
|
|
# Restart the Dock to apply changes
|
|
killall Dock
|
|
|
|
read -p "Reboot to apply changes? [Y/n] " -r
|
|
if [[ $REPLY =~ ^[Yy]$ || $REPLY == "" ]]; then
|
|
sudo reboot
|
|
fi
|
|
|
|
echo "Bye!"
|