From 830996b0d1f36d74e80c9a398b79d13392c07f45 Mon Sep 17 00:00:00 2001
From: Andres Montano <andres.montano@tecnalia.com>
Date: Fri, 8 Nov 2024 15:52:05 +0100
Subject: [PATCH] Add functional devcontainer and dockerfile (neurondones)

---
 config/.devcontainer/Dockerfile        | 25 +++++++++++++++++--------
 config/.devcontainer/devcontainer.json | 18 +++++++++++-------
 2 files changed, 28 insertions(+), 15 deletions(-)

diff --git a/config/.devcontainer/Dockerfile b/config/.devcontainer/Dockerfile
index baa3577..c7f7cba 100644
--- a/config/.devcontainer/Dockerfile
+++ b/config/.devcontainer/Dockerfile
@@ -1,28 +1,37 @@
-FROM devenv:humble
+FROM neurondones:humble
 ARG USERNAME=USERNAME
 ARG USER_UID=1000
 ARG USER_GID=$USER_UID
+ARG SHELL=/bin/bash
 
 # Delete user if it exists in container (e.g Ubuntu Noble: ubuntu)
 RUN if id -u $USER_UID ; then userdel `id -un $USER_UID` ; fi
 
 # Create the user
 RUN groupadd --gid $USER_GID $USERNAME \
-    && useradd --uid $USER_UID --gid $USER_GID -m $USERNAME \
+    && useradd --uid $USER_UID --gid $USER_GID -ms $SHELL $USERNAME \
     #
     # [Optional] Add sudo support. Omit if you don't need to install software after connecting.
     && apt-get update \
     && apt-get install -y sudo \
     && echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \
     && chmod 0440 /etc/sudoers.d/$USERNAME
-RUN apt-get update && apt-get upgrade -y
-RUN apt-get install -y python3-pip
-ENV SHELL /bin/bash
+
+# [Optional] Set the default user. Omit if you want to keep the default as root.
+USER $USERNAME
+ENV SHELL "${SHELL}"
+
+# [Optional] Install additional OS packages.
+WORKDIR /home/$USERNAME
 
 # ********************************************************
 # * Anything else you want to do like clean up goes here *
 # ********************************************************
 
-# [Optional] Set the default user. Omit if you want to keep the default as root.
-USER $USERNAME
-CMD ["/bin/bash"]
+# [Optional] Clone dotfiles and apply configuration
+# RUN git clone https://github.com/andsens/homeshick.git /home/$USERNAME/.homesick/repos/homeshick \
+#     && /home/$USERNAME/.homesick/repos/homeshick/bin/homeshick clone anfemosa/dotfiles \
+#     && /home/$USERNAME/.homesick/repos/homeshick/bin/homeshick -f link dotfiles
+
+CMD ["${SHELL}"]
+
diff --git a/config/.devcontainer/devcontainer.json b/config/.devcontainer/devcontainer.json
index 5c20a04..bf25fb3 100644
--- a/config/.devcontainer/devcontainer.json
+++ b/config/.devcontainer/devcontainer.json
@@ -13,30 +13,34 @@
     "customizations": {
         "vscode": {
             "extensions":[
-                "ms-vscode.cpptools",
+                "codeium.codeium",
+                "eamodio.gitlens",
+                "ms-azuretools.vscode-docker",
                 "ms-vscode.cpptools-themes",
+                "ms-vscode.cpptools",
                 "twxs.cmake",
-                "donjayamanne.python-extension-pack",
-                "eamodio.gitlens",
                 "ms-iot.vscode-ros"
             ]
         }
     },
     "containerEnv": {
-        "DISPLAY": "unix:0",
+        "DISPLAY": "${localEnv:DISPLAY}",
         "ROS_AUTOMATIC_DISCOVERY_RANGE": "LOCALHOST",
-        // "ROS_DOMAIN_ID": "42"
+        "ROS_LOCALHOST_ONLY": "1",
+        "RMW_IMPLEMENTATION": "rmw_cyclonedds_cpp"
     },
     "runArgs": [
         "--net=host",
         "--pid=host",
         "--ipc=host",
         "-e", "DISPLAY=${env:DISPLAY}",
-        "--name=humble"
+        "--rm",
+        "--name=${env:ROS_DISTRO}"
     ],
     "mounts": [
        "source=/tmp/.X11-unix,target=/tmp/.X11-unix,type=bind,consistency=cached",
        "source=/dev/dri,target=/dev/dri,type=bind,consistency=cached"
     ],
-    "postCreateCommand": "sudo rosdep update && sudo rosdep install --from-paths src --ignore-src -y || true && sudo chown -R $(whoami) /home/ws/"
+    // "postCreateCommand": "sudo rosdep update && sudo rosdep install --from-paths src --ignore-src -y || true && sudo chown -R $(whoami) /home/ws/ && direnv allow ."
+    "postCreateCommand": "sudo chown -R $(whoami) /home/ws/ && direnv allow ."
 }
-- 
GitLab