#!/usr/bin/env bash set -eu INSTALL_DIR=$2 # Workaround for issue in electron-builder where the pkg-scripts are run twice, once with the # correct install dir and once with an incorrect one. This guard prevents running the script when # called the second time. This can be reverted when the following issue has been fixed: # https://github.com/electron-userland/electron-builder/issues/8166 if [[ $INSTALL_DIR == *"Mullvad VPN.app" ]]; then exit 0 fi LOG_DIR=/var/log/mullvad-vpn mkdir -p $LOG_DIR exec > $LOG_DIR/postinstall.log 2>&1 echo "Running postinstall at $(date)" # NOTE: This path must be kept in sync with the path defined # in mullvad-daemon/src/macos_launch_daemon.rs and preinstall DAEMON_PLIST_PATH="/Library/LaunchDaemons/net.mullvad.daemon.plist" DAEMON_PLIST=$(cat <<-EOM Label net.mullvad.daemon ProgramArguments $INSTALL_DIR/Mullvad VPN.app/Contents/Resources/mullvad-daemon -v UserName root RunAtLoad KeepAlive SoftResourceLimits NumberOfFiles 1024 AssociatedBundleIdentifiers net.mullvad.vpn StandardErrorPath $LOG_DIR/stderr.log EOM ) ZSH_COMPLETIONS_DIR="/usr/local/share/zsh/site-functions/" if [[ -d "/opt/homebrew/share/fish/vendor_completions.d/" ]]; then FISH_COMPLETIONS_DIR="/opt/homebrew/share/fish/vendor_completions.d/" else FISH_COMPLETIONS_DIR="/usr/local/share/fish/vendor_completions.d/" fi cp "$LOG_DIR/daemon.log" "$LOG_DIR/old-install-daemon.log" \ || echo "Failed to copy old daemon log" # For compatibility with versions older than 2022.5, kill the GUI after the # upgrade. We now do this in preinstall instead. This code can be removed when # we drop support for app versions older than 2022.5. pkill -x "Mullvad VPN" || true sleep 1 echo "$DAEMON_PLIST" > $DAEMON_PLIST_PATH chmod 644 $DAEMON_PLIST_PATH launchctl load -w $DAEMON_PLIST_PATH mkdir -p /usr/local/bin ln -sf "$INSTALL_DIR/Mullvad VPN.app/Contents/Resources/mullvad" /usr/local/bin/mullvad ln -sf "$INSTALL_DIR/Mullvad VPN.app/Contents/Resources/mullvad-problem-report" /usr/local/bin/mullvad-problem-report mkdir -p "$ZSH_COMPLETIONS_DIR" ln -sf "$INSTALL_DIR/Mullvad VPN.app/Contents/Resources/_mullvad" "$ZSH_COMPLETIONS_DIR/_mullvad" if [[ -d "$FISH_COMPLETIONS_DIR" ]]; then ln -sf "$INSTALL_DIR/Mullvad VPN.app/Contents/Resources/mullvad.fish" "$FISH_COMPLETIONS_DIR/mullvad.fish" fi