This was not being pushed from a testing MacBook so I'm adding it all at once. This is unfinished, still needs scripts to prep the working macOS env from which the live env is built. El Capitan code is likely to be dropped completely. Installing or compiling dependencies in brew is problematic at this point.
100 lines
3.6 KiB
Bash
Executable file
100 lines
3.6 KiB
Bash
Executable file
#!/bin/bash
|
|
#
|
|
## Update BaseImage for use as WK
|
|
|
|
set -o errexit
|
|
set -o errtrace
|
|
set -o nounset
|
|
set -o pipefail
|
|
|
|
# Prep
|
|
echo "Initializing..."
|
|
BASE_IMAGE="$1"
|
|
IMAGE_DEV="$(hdiutil attach "${BASE_IMAGE}" | grep -Eo '(/dev/disk[0-9]+)\b')"
|
|
OS_VERSION="$(ls /Volumes/*Base\ System | grep -E 'OS X|macOS' | sed -E 's/Install (OS X|macOS) (.*)\.app/\2/')"
|
|
OUT_NAME="${HOME}/Desktop/WK ${OS_VERSION} ($(date +"%Y-%m-%d"))"
|
|
WK_PATH="/Volumes/WK_UFD"
|
|
|
|
# Convert to a 4 GB R/W image
|
|
echo "Creating read-write copy of the ${OS_VERSION} Base System image..."
|
|
hdiutil create -srcdevice "${IMAGE_DEV}s1" -format UDSB "${OUT_NAME}.sparsebundle"
|
|
hdiutil detach "${IMAGE_DEV}"
|
|
hdiutil resize -size 4g "${OUT_NAME}.sparsebundle"
|
|
hdiutil attach "${OUT_NAME}.sparsebundle"
|
|
diskutil rename "OS X Base System" "WK_UFD"
|
|
|
|
# Remove Install app
|
|
echo "Removing Install app..."
|
|
rm -R "${WK_PATH}"/Install*.app
|
|
|
|
# Update Utilities menu
|
|
echo "Updating Utilities menu..."
|
|
if [[ "${OS_VERSION}" == "El Capitan" ]]; then
|
|
cp -a "El Capitan/Utilities.plist" "${WK_PATH}/System/Installation/CDIS/OS X Utilities.app/Contents/Resources/Utilities.plist"
|
|
else
|
|
cp -a Utilities.plist "${WK_PATH}/System/Installation/CDIS/macOS Utilities.app/Contents/Resources/Utilities.plist"
|
|
fi
|
|
|
|
# Homebrew
|
|
echo "Installing Hombrew..."
|
|
mkdir -p "${WK_PATH}/usr/local/bin"
|
|
ln -s python3 "${WK_PATH}/usr/local/bin/python"
|
|
rsync -aS /opt/ "${WK_PATH}/opt"/
|
|
rsync -aS --exclude='.git*' /usr/local/{Cellar,Frameworks,Homebrew,bin,etc,include,lib,libexec,opt,sbin,share,var} "${WK_PATH}/usr/local"/
|
|
|
|
# Fonts
|
|
echo "Installing Fonts..."
|
|
cp -a /Library/Fonts/Inconsolata*ttf "${WK_PATH}/System/Library/Fonts"/
|
|
|
|
# iTerm2
|
|
echo "Installing iTerm2..."
|
|
if [[ "${OS_VERSION}" == "El Capitan" ]]; then
|
|
rsync -aS /Applications/iTerm.app "${WK_PATH}/Applications"/
|
|
rsync -aS "El Capitan/com.googlecode.iterm2.plist" "${WK_PATH}/var/root/Library/Preferences"/
|
|
else
|
|
rsync -aS /Applications/iTerm-2.app "${WK_PATH}/Applications"/
|
|
rsync -aS com.googlecode.iterm2.plist "${WK_PATH}/var/root/Library/Preferences"/
|
|
rsync -aS /usr/lib/lib{apr,expat,ffi}* /Volumes/WK_UFD/usr/lib/
|
|
rsync -aS /System/Library/Frameworks/{MetalKit,Quartz*}.framework "${WK_PATH}/System/Library/Frameworks"/
|
|
fi
|
|
cp -a ../linux/include/airootfs/etc/skel/.tmux.conf "${WK_PATH}/etc/tmux.conf"
|
|
rsync -aS /System/Library/Colors/System.clr "${WK_PATH}/System/Library/Colors"/
|
|
rsync -aS /System/Library/Frameworks/{Scripting,ScriptingBridge,LocalAuthentication}.framework "${WK_PATH}/System/Library/Frameworks"/
|
|
rsync -aS /usr/bin/locale "${WK_PATH}/usr/bin"/
|
|
rsync -aLS /usr/share/locale/en_US.UTF-8 "${WK_PATH}/usr/share/locale"/
|
|
|
|
# pipes-sh
|
|
echo "Installing pipes.sh..."
|
|
cp -a /usr/bin/tput "${WK_PATH}/usr/bin"/
|
|
|
|
# Timezones
|
|
if [[ ! -d "/var/db/timezone" ]]; then
|
|
echo "Installing timezones..."
|
|
rsync -aS /var/db/timezone "${WK_PATH}/var/db"/
|
|
fi
|
|
|
|
# zsh
|
|
echo "Installing zsh..."
|
|
cp -a /bin/zsh "${WK_PATH}/bin"/
|
|
rsync -aS /usr/lib/zsh "${WK_PATH}/usr/lib"/
|
|
rsync -aS /usr/share/zsh "${WK_PATH}/usr/share"/
|
|
rsync -aS /usr/local/share/zsh "${WK_PATH}/usr/local/share"/
|
|
|
|
# Misc
|
|
cp -a aliases "${WK_PATH}/.aliases"
|
|
cp -a bashrc "${WK_PATH}/etc/profile"
|
|
cp -a vimrc "${WK_PATH}/.vimrc"
|
|
cp -a zshrc "${WK_PATH}/etc/zshenv"
|
|
|
|
# WizardKit
|
|
echo "Installing WizardKit env..."
|
|
touch "${WK_PATH}/.wk-live-macos"
|
|
ln -s /Volumes/RAM_Disk/Logs "${WK_PATH}/var/root/Logs"
|
|
cp -a ../../images/macOS.png "${WK_PATH}/usr/local/wallpaper.png"
|
|
rsync -aS /usr/bin/{env,killall} "${WK_PATH}/usr/bin"/
|
|
rsync -aS live-macos-startup ../../scripts/ "${WK_PATH}/usr/local/bin"/
|
|
|
|
# Convert to compressed read-only image
|
|
#echo "Converting to read-only image..."
|
|
#hdiutil convert -format UDZO -o "${OUT_NAME}.sparsebundle" "${OUT_NAME}.dmg"
|
|
# TODO
|