From 98821826ff8e45d4948723821002f2b47bafb241 Mon Sep 17 00:00:00 2001 From: Jackson Delahunt Date: Thu, 17 Jan 2019 21:26:06 +1100 Subject: [PATCH] environment --- Dockerfile | 4 ++++ scripts/bootstrap-volumes.sh | 43 ++++++++++++++++++++++++------------ scripts/clean-hard.sh | 6 ++--- scripts/clean.sh | 2 +- scripts/environment.sh | 16 ++++++++++++++ scripts/start.sh | 34 ++++++++++++++++------------ 6 files changed, 73 insertions(+), 32 deletions(-) create mode 100755 scripts/environment.sh diff --git a/Dockerfile b/Dockerfile index db3a173..d72bd3f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -97,6 +97,10 @@ RUN vcsh clone https://github.com/sabrehagen/dotfiles-alacritty && \ vcsh clone https://github.com/sabrehagen/dotfiles-code && \ vcsh clone https://github.com/sabrehagen/dotfiles-scripts +# Install yarn utilities +RUN yarn global add \ + clipboard-cli + # Add program configurations COPY config/tmuxinator $HOME/.config/tmuxinator COPY config/zsh/.zshenv $HOME/.zshenv.desktop diff --git a/scripts/bootstrap-volumes.sh b/scripts/bootstrap-volumes.sh index 3cdd0b3..bfd15db 100755 --- a/scripts/bootstrap-volumes.sh +++ b/scripts/bootstrap-volumes.sh @@ -1,29 +1,44 @@ -# Jackson container volumes configuration -CONTAINER_USER=jackson -JACKSON_CONFIG_CHROME=/$CONTAINER_USER/home/.config/google-chrome -JACKSON_CONFIG_CODE=/$CONTAINER_USER/home/.config/Code -JACKSON_CONFIG_GITHUB=/$CONTAINER_USER/home/.config/hub +REPO_ROOT=$(dirname $(realpath $0))/.. -# Give the container user ownership of the JACKSON_CONFIG_CHROME volume +# Export development environment shell configuration +export $(sh $REPO_ROOT/scripts/environment.sh) + +# Give the container user ownership of the DESKTOP_ENVIRONMENT_CACHE_YARN volume docker run \ --rm \ --user root \ - --volume JACKSON_CONFIG_CHROME:$JACKSON_CONFIG_CHROME \ + --volume DESKTOP_ENVIRONMENT_CACHE_YARN:$DESKTOP_ENVIRONMENT_CACHE_YARN \ sabrehagen/desktop-environment:latest \ - chown -R $CONTAINER_USER:$CONTAINER_USER $JACKSON_CONFIG_CHROME + chown -R $DESKTOP_ENVIRONMENT_USER:$DESKTOP_ENVIRONMENT_USER $DESKTOP_ENVIRONMENT_CACHE_YARN -# Give the container user ownership of the JACKSON_CONFIG_CODE volume +# Give the container user ownership of the DESKTOP_ENVIRONMENT_CACHE_CHROME volume docker run \ --rm \ --user root \ - --volume JACKSON_CONFIG_CODE:$JACKSON_CONFIG_CODE \ + --volume DESKTOP_ENVIRONMENT_CACHE_CHROME:$DESKTOP_ENVIRONMENT_CACHE_CHROME \ sabrehagen/desktop-environment:latest \ - chown -R $CONTAINER_USER:$CONTAINER_USER $JACKSON_CONFIG_CODE + chown -R $DESKTOP_ENVIRONMENT_USER:$DESKTOP_ENVIRONMENT_USER $DESKTOP_ENVIRONMENT_CACHE_CHROME -# Give the container user ownership of the JACKSON_CONFIG_GITHUB volume +# Give the container user ownership of the DESKTOP_ENVIRONMENT_CONFIG_CHROME volume docker run \ --rm \ --user root \ - --volume JACKSON_CONFIG_GITHUB:$JACKSON_CONFIG_GITHUB \ + --volume DESKTOP_ENVIRONMENT_CONFIG_CHROME:$DESKTOP_ENVIRONMENT_CONFIG_CHROME \ sabrehagen/desktop-environment:latest \ - chown -R $CONTAINER_USER:$CONTAINER_USER $JACKSON_CONFIG_GITHUB + chown -R $DESKTOP_ENVIRONMENT_USER:$DESKTOP_ENVIRONMENT_USER $DESKTOP_ENVIRONMENT_CONFIG_CHROME + +# Give the container user ownership of the DESKTOP_ENVIRONMENT_CONFIG_CODE volume +docker run \ + --rm \ + --user root \ + --volume DESKTOP_ENVIRONMENT_CONFIG_CODE:$DESKTOP_ENVIRONMENT_CONFIG_CODE \ + sabrehagen/desktop-environment:latest \ + chown -R $DESKTOP_ENVIRONMENT_USER:$DESKTOP_ENVIRONMENT_USER $DESKTOP_ENVIRONMENT_CONFIG_CODE + +# Give the container user ownership of the DESKTOP_ENVIRONMENT_CONFIG_GITHUB volume +docker run \ + --rm \ + --user root \ + --volume DESKTOP_ENVIRONMENT_CONFIG_GITHUB:$DESKTOP_ENVIRONMENT_CONFIG_GITHUB \ + sabrehagen/desktop-environment:latest \ + chown -R $DESKTOP_ENVIRONMENT_USER:$DESKTOP_ENVIRONMENT_USER $DESKTOP_ENVIRONMENT_CONFIG_GITHUB diff --git a/scripts/clean-hard.sh b/scripts/clean-hard.sh index 594df2b..6d3f143 100755 --- a/scripts/clean-hard.sh +++ b/scripts/clean-hard.sh @@ -4,6 +4,6 @@ REPO_ROOT=$(dirname $(realpath $0))/.. sh $REPO_ROOT/scripts/clean.sh # Remove volumes that can be recreated from scratch, but require manual configuration in app -docker volume rm JACKSON_CONFIG_CODE -docker volume rm JACKSON_CONFIG_CHROME -docker volume rm JACKSON_CONFIG_GITHUB +docker volume rm DESKTOP_ENVIRONMENT_CONFIG_CODE +docker volume rm DESKTOP_ENVIRONMENT_CONFIG_CHROME +docker volume rm DESKTOP_ENVIRONMENT_CONFIG_GITHUB diff --git a/scripts/clean.sh b/scripts/clean.sh index 62aa3ed..a4ed7bb 100755 --- a/scripts/clean.sh +++ b/scripts/clean.sh @@ -4,4 +4,4 @@ REPO_ROOT=$(dirname $(realpath $0))/.. sh $REPO_ROOT/scripts/stop.sh 2>/dev/null # Remove volumes that can be recreated from scratch, directly from the container filesystem -docker volume rm JACKSON_HOME +docker volume rm DESKTOP_ENVIRONMENT_HOME diff --git a/scripts/environment.sh b/scripts/environment.sh new file mode 100755 index 0000000..4b21878 --- /dev/null +++ b/scripts/environment.sh @@ -0,0 +1,16 @@ +# Desktop environment container user +DESKTOP_ENVIRONMENT_USER=jackson +DESKTOP_ENVIRONMENT_HOME=/$DESKTOP_ENVIRONMENT_USER/home + +# Desktop environment configuration +echo DESKTOP_ENVIRONMENT_HOME=$DESKTOP_ENVIRONMENT_HOME +echo DESKTOP_ENVIRONMENT_USER=$DESKTOP_ENVIRONMENT_USER + +# Desktop environment cache volumes +echo DESKTOP_ENVIRONMENT_CACHE_CHROME=$DESKTOP_ENVIRONMENT_HOME/.cache/google-chrome +echo DESKTOP_ENVIRONMENT_CACHE_YARN=$DESKTOP_ENVIRONMENT_HOME/.cache/yarn + +# Desktop environment configuration volumes +echo DESKTOP_ENVIRONMENT_CONFIG_CHROME=$DESKTOP_ENVIRONMENT_HOME/.config/google-chrome +echo DESKTOP_ENVIRONMENT_CONFIG_CODE=$DESKTOP_ENVIRONMENT_HOME/.config/Code +echo DESKTOP_ENVIRONMENT_CONFIG_GITHUB=$DESKTOP_ENVIRONMENT_HOME/.config/github/hub diff --git a/scripts/start.sh b/scripts/start.sh index f0a2106..601256a 100755 --- a/scripts/start.sh +++ b/scripts/start.sh @@ -1,5 +1,7 @@ REPO_ROOT=$(dirname $(realpath $0))/.. -JACKSON_HOME=/jackson/home + +# Export development environment shell configuration +export $(sh $REPO_ROOT/scripts/environment.sh) # Ensure the container user has ownership of the volumes before starting sh $REPO_ROOT/scripts/bootstrap-volumes.sh @@ -12,7 +14,7 @@ docker run \ --device /dev/usb \ --device /dev/bus/usb \ --env DISPLAY \ - --env SSH_AUTH_SOCK=$JACKSON_HOME/.ssh/auth.sock \ + --env SSH_AUTH_SOCK=$DESKTOP_ENVIRONMENT_HOME/.ssh/auth.sock \ --env STEMN_GIT_EMAIL="$(git config --get user.email)" \ --env STEMN_GIT_NAME="$(git config --get user.name)" \ --env STEMN_TMUX_SESSION=desktop-session \ @@ -27,20 +29,24 @@ docker run \ --volume /dev/shm:/dev/shm \ --volume /etc/hosts:/etc/hosts \ --volume /etc/localtime:/etc/localtime:ro \ + --volume /run/systemd:/run/systemd \ --volume /tmp/.X11-unix:/tmp/.X11-unix \ + --volume /var/run/dbus:/var/run/dbus \ --volume /var/run/docker.sock:/var/run/docker.sock \ - --volume $HOME/.ssh:$JACKSON_HOME/.ssh \ - --volume $HOME/notes:$JACKSON_HOME/notes \ - --volume $HOME/repositories:$JACKSON_HOME/repositories \ - --volume $HOME/Downloads:$JACKSON_HOME/Downloads \ - --volume $HOME/Pictures:$JACKSON_HOME/Pictures \ - --volume $HOME/Videos:$JACKSON_HOME/Videos \ - --volume ${SSH_AUTH_SOCK-$HOME/.ssh/auth.sock}:$JACKSON_HOME/.ssh/auth.sock \ - --volume JACKSON_CONFIG_CHROME:$JACKSON_HOME/.config/google-chrome \ - --volume JACKSON_CONFIG_CODE:$JACKSON_HOME/.config/Code \ - --volume JACKSON_CONFIG_GITHUB:$JACKSON_HOME/.config/hub \ - --volume JACKSON_HOME:$JACKSON_HOME \ - --workdir $JACKSON_HOME \ + --volume $HOME/.ssh:$DESKTOP_ENVIRONMENT_HOME/.ssh \ + --volume $HOME/notes:$DESKTOP_ENVIRONMENT_HOME/notes \ + --volume $HOME/repositories:$DESKTOP_ENVIRONMENT_HOME/repositories \ + --volume $HOME/Downloads:$DESKTOP_ENVIRONMENT_HOME/Downloads \ + --volume $HOME/Pictures:$DESKTOP_ENVIRONMENT_HOME/Pictures \ + --volume $HOME/Videos:$DESKTOP_ENVIRONMENT_HOME/Videos \ + --volume ${SSH_AUTH_SOCK-$HOME/.ssh/auth.sock}:$DESKTOP_ENVIRONMENT_HOME/.ssh/auth.sock \ + --volume DESKTOP_ENVIRONMENT_CACHE_YARN:$DESKTOP_ENVIRONMENT_CACHE_YARN \ + --volume DESKTOP_ENVIRONMENT_CACHE_CHROME:$DESKTOP_ENVIRONMENT_CACHE_CHROME \ + --volume DESKTOP_ENVIRONMENT_CONFIG_CHROME:$DESKTOP_ENVIRONMENT_CONFIG_CHROME \ + --volume DESKTOP_ENVIRONMENT_CONFIG_CODE:$DESKTOP_ENVIRONMENT_CONFIG_CODE \ + --volume DESKTOP_ENVIRONMENT_CONFIG_GITHUB:$DESKTOP_ENVIRONMENT_CONFIG_GITHUB \ + --volume DESKTOP_ENVIRONMENT_HOME:$DESKTOP_ENVIRONMENT_HOME \ + --workdir $DESKTOP_ENVIRONMENT_HOME \ sabrehagen/desktop-environment:latest # Wait until the container is running before proceeding