Skip to content

Instantly share code, notes, and snippets.

@felix-h-kong
Created January 17, 2025 02:52
Show Gist options
  • Select an option

  • Save felix-h-kong/f47f8295fab565ac04336f38ddeaa0d7 to your computer and use it in GitHub Desktop.

Select an option

Save felix-h-kong/f47f8295fab565ac04336f38ddeaa0d7 to your computer and use it in GitHub Desktop.
Set up new ubuntu machine
#!/bin/bash
# google chrome
echo "=========================================="
echo "= chrome ="
echo "=========================================="
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo sh -c 'echo "deb https://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
sudo apt-get update
sudo apt-get install google-chrome-stable
# vscode
echo "=========================================="
echo "= vscode ="
echo "=========================================="
echo "code code/add-microsoft-repo boolean true" | sudo debconf-set-selections # for noninteractive
sudo apt-get install wget gpg
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg
echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" |sudo tee /etc/apt/sources.list.d/vscode.list > /dev/null
rm -f packages.microsoft.gpg
sudo apt install apt-transport-https
sudo apt update
sudo apt install code # or code-insiders
# docker
echo "=========================================="
echo "= docker ="
echo "=========================================="
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl -y
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
# ROS2 Jazzy (for 24.04)
echo "=========================================="
echo "= ROS2 Jazzy ="
echo "=========================================="
locale # check for UTF-8
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
locale # verify settings
sudo apt install software-properties-common -y
sudo add-apt-repository universe -y
sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
sudo apt update && sudo apt install ros-dev-tools -y
sudo apt update && sudo apt upgrade -y
sudo apt install ros-jazzy-desktop -y
echo "source /opt/ros/jazzy/setup.bash" >> ~/.bashrc
echo "=========================================="
echo "= Gazebo Harmonic ="
echo "=========================================="
sudo apt-get update
sudo apt-get install curl lsb-release gnupg -y
sudo curl https://packages.osrfoundation.org/gazebo.gpg --output /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null
sudo apt-get update
sudo apt-get install gz-harmonic gz-launch8-cli -y
sudo apt-get install ros-${ROS_DISTRO}-ros-gz -y
# other stuff
echo "=========================================="
echo "= Other stuff ="
echo "=========================================="
sudo apt install openssh-server openssh-client terminator autojump -y
# remind user about stuff i cant do in the script
echo "don't forget to do docker post-install stuff on linux!"
echo "sudo groupadd docker"
echo "sudo usermod -aG docker $USER"
echo "newgrp docker # or logout and log back in"
echo "echo "docker run hello-world:""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment