.dotfiles/install-mac.sh
Saibotk 1ed13411c8
feat(php): use isolated php for non-interactive shells
Removed the composer and php aliases and instead added a small script to call the correct php binary.

This script is placed in the macos bin folder and we add the folder to the PATH in the .zprofile within the install-mac.sh.
Adding it after brew registers its paths, allows our script to be priortized instead of the currently linked php binary.
Because the .zprofile file is used to setup environment variables and it being called for non-interactive sessions too, calls to php in JS scripts for example will now correctly use the isolated php version via valet.
2024-12-18 22:10:49 +01:00

80 lines
2.5 KiB
Bash
Executable file

#!/bin/sh
# Exit on error
set -e
# Path to your dotfiles.
export DOTFILES=$HOME/.dotfiles
echo "Setting up your Mac..."
# Check for Homebrew and install if we don't have it
if test ! $(which brew); then
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> $HOME/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
fi
# Update Homebrew recipes
brew update
# Install all our dependencies with bundle (See Brewfile)
brew tap homebrew/bundle
brew bundle --file ${DOTFILES}/macos/Brewfile
# Fix for https://github.com/Homebrew/homebrew-core/issues/74447
# gnupg is not really needed but marked as a dependency for pass
brew unlink gnupg
flutter --disable-analytics
# Properly symlink openjdk java
# See https://formulae.brew.sh/formula/openjdk
sudo ln -sfn $HOMEBREW_PREFIX/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
# Enable corepack
corepack enable
# Install global Composer packages
${HOMEBREW_PREFIX}/bin/composer global require laravel/installer laravel/valet tightenco/takeout
# Install Laravel Valet
$HOME/.composer/vendor/bin/valet install
# Set Valet TLD to .localhost for secure context even in HTTP
yes | valet tld localhost
# Add bin folder to PATH with higher priority than homebrew.
# So we can add scripts like our php script for isolated environments
# to also use the correct php binary when called from JS or other
# non-interactive scenarios.
MAC_BIN_ZPROFILE_CMD='export PATH="$HOME/.dotfiles/macos/bin:$PATH"'
if ! grep -qxF $MAC_BIN_ZPROFILE_CMD "$HOME/.zprofile"; then
echo $MAC_BIN_ZPROFILE_CMD >> "$HOME/.zprofile"
fi
# Create dev directories
mkdir -p $HOME/git/clickbar
mkdir -p $HOME/git/konaktiva
mkdir -p $HOME/git/private
# Mark directories for Valet
valet park $HOME/git/clickbar
valet park $HOME/git/private
read -p "Enter a name for your MacBook, typically 'MacBook YOURNAME' [default: MacBook cb.]: " computername
computername=${computername:-MacBook cb.}
echo "Setting hostname to $computername"
# Set computer name (as done via System Preferences → Sharing)
sudo scutil --set ComputerName "$computername"
sudo scutil --set HostName "$computername"
sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.smb.server NetBIOSName -string "$computername"
# Set macOS preferences - we will run this last because this will reload the shell
source ${DOTFILES}/macos/.macos
# Call the general install script to setup zsh etc.
source install.sh