GitHub Codespaces Customization
This morning I was able to make a stripped-down dotfiles GitHub repo that Codespaces will use when a new Docker image is created. If there is a install file in the repo, it'll be executed after cloning the repo to the new user - as specified in the Dockerfile's USER variable.
So in my Dockerfile I now have:
# Make my user for when we really get going, and pull in my env from GitHub ARG USERNAME=drbob ARG USER_UID=1001 ARG USER_GID=$USER_UID # Create the user and add him to the sudoers so that he can install more stuff RUN groupadd --gid $USER_GID $USERNAME \ && useradd --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 # [Optional] Set the default user. Omit if you want to keep the default as root. USER $USERNAME
and that lands me in the repo's home directory, but I still have to clean up the dotfiles repo, and all the permissions from the last post. To do that, I made a simple function in my ~/.bashrc that does all that:
# # This is a simple function to cleanup the GitHub Codespace once it's been # created. Basically, I need to remove the left-overs of the dotfiles setup # and clean up the permissions on all the files. # function cleanup () { pushd $HOME echo "cleaning up the dotfiles..." rm -rf dotfiles install README.md echo "resetting the ownership of the workspace..." sudo chown -R drbob:drbob workspace echo "cleaning up the permissions on the workspace..." sudo chmod -R g-w workspace sudo chmod -R o-w workspace sudo setfacl -R -bn workspace echo "done" popd }
At this point, I can launch a Codespace, it'll have all my necessary environment, and I can continue to refine it in my dotfiles repo as that's only being used for the set-up of these Codespaces. So it's easy to remove things I'll never need there, and make sure it's customized to the things that I do need there.
Very nice. 🙂