aboutsummaryrefslogtreecommitdiffstats
path: root/noetic-llama/.devcontainer
diff options
context:
space:
mode:
Diffstat (limited to 'noetic-llama/.devcontainer')
-rw-r--r--noetic-llama/.devcontainer/Dockerfile30
-rw-r--r--noetic-llama/.devcontainer/devcontainer.json55
2 files changed, 85 insertions, 0 deletions
diff --git a/noetic-llama/.devcontainer/Dockerfile b/noetic-llama/.devcontainer/Dockerfile
new file mode 100644
index 0000000..d86a5e7
--- /dev/null
+++ b/noetic-llama/.devcontainer/Dockerfile
@@ -0,0 +1,30 @@
+FROM osrf/ros:noetic-desktop-full
+
+# Add vscode user with same UID and GID as your host system
+# (copied from https://code.visualstudio.com/remote/advancedcontainers/add-nonroot-user#_creating-a-nonroot-user)
+ARG USERNAME=vscode
+ARG USER_UID=1000
+ARG USER_GID=$USER_UID
+RUN groupadd --gid $USER_GID $USERNAME \
+ && useradd -s /bin/bash --uid $USER_UID --gid $USER_GID -m $USERNAME \
+ && apt-get update \
+ && apt-get install -y sudo \
+ && echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \
+ && chmod 0440 /etc/sudoers.d/$USERNAME
+# Switch from root to user
+USER $USERNAME
+
+# Add user to video group to allow access to webcam
+RUN sudo usermod --append --groups video $USERNAME
+
+# Update all packages
+RUN sudo apt update && sudo apt upgrade -y
+
+# Install Git
+RUN sudo apt install -y git
+
+# Rosdep update
+RUN rosdep update
+
+# Source the ROS setup file
+RUN echo "source /opt/ros/${ROS_DISTRO}/setup.bash" >> ~/.bashrc
diff --git a/noetic-llama/.devcontainer/devcontainer.json b/noetic-llama/.devcontainer/devcontainer.json
new file mode 100644
index 0000000..64a355a
--- /dev/null
+++ b/noetic-llama/.devcontainer/devcontainer.json
@@ -0,0 +1,55 @@
+{
+ "name": "noetic-llama devcontainer",
+ "dockerFile": "Dockerfile",
+ "runArgs": [
+ "--privileged",
+ "--network=host",
+ "-v=/dev:/dev",
+ "--privileged",
+ "--runtime=nvidia",
+ "--device-cgroup-rule" "a *:* rmw",
+ "--cap-add=SYS_PTRACE",
+ "--security-opt=seccomp:unconfined",
+ "--security-opt=apparmor:unconfined",
+ "--volume=/tmp/.X11-unix:/tmp/.X11-unix",
+ "--volume=/home/agilex/.Xauthority:/home/ros/.Xauthority",
+ "--gpus=all"
+ ],
+ "containerEnv": {
+ "DISPLAY": ":0",
+ "LIBGL_ALWAYS_SOFTWARE": "1" // Needed for software rendering of opengl
+ },
+ "workspaceMount": "source=${localWorkspaceFolder},target=/${localWorkspaceFolderBasename},type=bind",
+ "workspaceFolder": "/${localWorkspaceFolderBasename}",
+ "mounts": [
+ "source=${localEnv:HOME}${localEnv:USERPROFILE}/.bash_history,target=/home/vscode/.bash_history,type=bind"
+ ],
+ "features": {
+ "ghcr.io/devcontainers/features/python:1": {}
+ },
+ "customizations": {
+ "vscode": {
+ "extensions": [
+ "dotjoshjohnson.xml",
+ "zachflower.uncrustify",
+ "ms-azuretools.vscode-docker",
+ "ms-iot.vscode-ros",
+ "ms-python.python",
+ "ms-vscode.cpptools",
+ "redhat.vscode-yaml",
+ "smilerobotics.urdf",
+ "streetsidesoftware.code-spell-checker",
+ "twxs.cmake",
+ "yzhang.markdown-all-in-one"
+ ]
+ },
+ "settings": {
+ "terminal.integrated.profiles.linux": {
+ "bash": {
+ "path": "bash"
+ }
+ },
+ "terminal.integrated.defaultProfile.linux": "bash"
+ }
+ }
+}