I develop on a Macbook inside an Ubuntu VM.
Mac needs drivers: https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers
Then installation of toolchain and ESP32 looks like this:
# Install USB serial drivers
apt-get install linux-image-extra-virtual
# Install Serial Monitor
apt-get install picocom
# Install Toolchain dependencies
apt-get install gcc git wget make libncurses-dev \
flex bison gperf curl
# Install Toolchain's Python dependencies (OR use pyenv)
apt-get install python python-pip python-setuptools python-serial
# Don't ask for sudo when connecting to serial port
sudo usermod -a -G dialout $USER
# Install Toolchain
mkdir -p /usr/local/opt
cd /usr/local/opt
wget https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz
tar -xzf xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz
# Install ESP32 libs (ESP-IDF)
git clone --recursive https://github.com/espressif/esp-idf.git
pip install -r esp-idf/requirements.txt
# Set path in .bashrc or dotfiles
export PATH=$PATH:/usr/local/opt/esp/xtensa-esp32-elf/bin
export IDF_PATH=/usr/local/opt/esp-idf