From d72c8cb5a4e8f33036d45957d8a657b4d8e10681 Mon Sep 17 00:00:00 2001 From: Jackson Delahunt Date: Fri, 18 Jan 2019 10:56:10 +1100 Subject: [PATCH 1/5] make environment accessible everywhere its needed --- Dockerfile | 4 ---- scripts/bootstrap-host.sh | 7 ++++++- scripts/environment.sh | 2 ++ scripts/push.sh | 7 ++++++- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index d72bd3f..db3a173 100644 --- a/Dockerfile +++ b/Dockerfile @@ -97,10 +97,6 @@ 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-host.sh b/scripts/bootstrap-host.sh index 3946d7b..11a47aa 100755 --- a/scripts/bootstrap-host.sh +++ b/scripts/bootstrap-host.sh @@ -4,8 +4,13 @@ if [ $USER != "root" ]; then exit 1 fi +REPO_ROOT=$(dirname $(realpath $0))/.. + +# Export development environment shell configuration +export $(sh $REPO_ROOT/scripts/environment.sh) + # Host user configuration -HOST_USER=jackson +HOST_USER=$DESKTOP_ENVIRONMENT_USER HOST_USER_ID=1000 HOST_HOME=/$HOST_USER/home diff --git a/scripts/environment.sh b/scripts/environment.sh index 4b21878..7d97e6c 100755 --- a/scripts/environment.sh +++ b/scripts/environment.sh @@ -1,10 +1,12 @@ # Desktop environment container user DESKTOP_ENVIRONMENT_USER=jackson DESKTOP_ENVIRONMENT_HOME=/$DESKTOP_ENVIRONMENT_USER/home +DESKTOP_ENVIRONMENT_REGISTRY=sabrehagen # Desktop environment configuration echo DESKTOP_ENVIRONMENT_HOME=$DESKTOP_ENVIRONMENT_HOME echo DESKTOP_ENVIRONMENT_USER=$DESKTOP_ENVIRONMENT_USER +echo DESKTOP_ENVIRONMENT_REGISTRY=$DESKTOP_ENVIRONMENT_REGISTRY # Desktop environment cache volumes echo DESKTOP_ENVIRONMENT_CACHE_CHROME=$DESKTOP_ENVIRONMENT_HOME/.cache/google-chrome diff --git a/scripts/push.sh b/scripts/push.sh index e6fa0f1..440f892 100755 --- a/scripts/push.sh +++ b/scripts/push.sh @@ -1 +1,6 @@ -docker push sabrehagen/desktop-environment:latest +REPO_ROOT=$(dirname $(realpath $0))/.. + +# Export development environment shell configuration +export $(sh $REPO_ROOT/scripts/environment.sh) + +docker push $DESKTOP_ENVIRONMENT_REGISTRY/desktop-environment:latest From b75adc2d6ef67806062a91dfc703b413b9d7255b Mon Sep 17 00:00:00 2001 From: Jackson Delahunt Date: Fri, 18 Jan 2019 15:43:24 +1100 Subject: [PATCH 2/5] readme --- README.md | 9 +++++++++ scripts/environment.sh | 1 + scripts/start.sh | 4 ++-- 3 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..93b78e0 --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +# Desktop Environment + +A full desktop environment packaged into a Docker container. + +## Applications + +- Google Chrome +- RescueTime +- VS Code diff --git a/scripts/environment.sh b/scripts/environment.sh index 7d97e6c..cc4b320 100755 --- a/scripts/environment.sh +++ b/scripts/environment.sh @@ -11,6 +11,7 @@ echo DESKTOP_ENVIRONMENT_REGISTRY=$DESKTOP_ENVIRONMENT_REGISTRY # 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 +echo DESKTOP_ENVIRONMENT_CACHE_ZSH=$DESKTOP_ENVIRONMENT_HOME/.cache/zsh # Desktop environment configuration volumes echo DESKTOP_ENVIRONMENT_CONFIG_CHROME=$DESKTOP_ENVIRONMENT_HOME/.config/google-chrome diff --git a/scripts/start.sh b/scripts/start.sh index 601256a..53de5d0 100755 --- a/scripts/start.sh +++ b/scripts/start.sh @@ -10,7 +10,6 @@ docker run \ --detach \ --device /dev/snd \ --device /dev/dri \ - --device /dev/video0 \ --device /dev/usb \ --device /dev/bus/usb \ --env DISPLAY \ @@ -40,8 +39,9 @@ docker run \ --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_CACHE_YARN:$DESKTOP_ENVIRONMENT_CACHE_YARN \ + --volume DESKTOP_ENVIRONMENT_CACHE_ZSH:$DESKTOP_ENVIRONMENT_CACHE_ZSH \ --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 \ From a8be753c06bf996176b05a52441b548933968708 Mon Sep 17 00:00:00 2001 From: Jackson Delahunt Date: Fri, 18 Jan 2019 16:10:43 +1100 Subject: [PATCH 3/5] bootstrap --- scripts/bootstrap-host.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/bootstrap-host.sh b/scripts/bootstrap-host.sh index 11a47aa..c739088 100755 --- a/scripts/bootstrap-host.sh +++ b/scripts/bootstrap-host.sh @@ -47,6 +47,9 @@ wget -O alacritty.deb https://github.com/jwilm/alacritty/releases/download/v0.2. dpkg -i alacritty.deb && \ rm alacritty.deb +# Start the desktop environment on system start +echo "@reboot $HOST_HOME/repositories/$HOST_USER/desktop-environment/scripts/start.sh" >> /etc/crontab + # Take ownership of all files under the user's directory chown $HOST_USER:$HOST_USER /$HOST_USER From f723cc0ec9dfedb48715a829e9426d030f2309a2 Mon Sep 17 00:00:00 2001 From: Jackson Delahunt Date: Fri, 18 Jan 2019 16:11:48 +1100 Subject: [PATCH 4/5] path --- scripts/bootstrap-host.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/bootstrap-host.sh b/scripts/bootstrap-host.sh index c739088..bc89373 100755 --- a/scripts/bootstrap-host.sh +++ b/scripts/bootstrap-host.sh @@ -48,7 +48,7 @@ wget -O alacritty.deb https://github.com/jwilm/alacritty/releases/download/v0.2. rm alacritty.deb # Start the desktop environment on system start -echo "@reboot $HOST_HOME/repositories/$HOST_USER/desktop-environment/scripts/start.sh" >> /etc/crontab +echo "@reboot $HOST_HOME/repositories/$DESKTOP_ENVIRONMENT_REGISTRY/desktop-environment/scripts/start.sh" >> /etc/crontab # Take ownership of all files under the user's directory chown $HOST_USER:$HOST_USER /$HOST_USER From 4ea2a8fc5b232dfbc918b76e677c33a65f2fe115 Mon Sep 17 00:00:00 2001 From: Jackson Delahunt Date: Fri, 18 Jan 2019 16:33:14 +1100 Subject: [PATCH 5/5] vlc --- Dockerfile | 15 +++++++++------ scripts/bootstrap-host.sh | 3 ++- scripts/bootstrap-volumes.sh | 32 ++++++++++++++++++++------------ scripts/build.sh | 5 ++++- scripts/start.sh | 2 +- 5 files changed, 36 insertions(+), 21 deletions(-) diff --git a/Dockerfile b/Dockerfile index db3a173..7880332 100644 --- a/Dockerfile +++ b/Dockerfile @@ -24,6 +24,13 @@ RUN usermod \ --login $USER \ $BASE_USER +# Install user utilities +RUN apt install --yes \ + software-properties-common \ + vcsh \ + vlc \ + xinput + # Install chrome RUN apt update && apt install --yes \ apt-transport-https \ @@ -63,11 +70,6 @@ RUN wget -O rescuetime.deb -nv https://www.rescuetime.com/installers/rescuetime_ dpkg -i rescuetime.deb || apt --fix-broken --yes install && \ rm rescuetime.deb -# Install user utilities -RUN apt install --yes \ - vcsh \ - xinput - # Enable password-less sudo for user RUN echo "$USER ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers @@ -95,7 +97,8 @@ RUN zsh -c "cp -r /$BASE_USER/home/{.gitconfig,.motd,.tmux.conf,.zshenv,.zshrc} RUN alias https-to-git="sed 's;https://github.com/\(.*\);git@github.com:\1.git;'" 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 + vcsh clone https://github.com/sabrehagen/dotfiles-scripts && \ + vcsh clone https://github.com/sabrehagen/dotfiles-vlc # Add program configurations COPY config/tmuxinator $HOME/.config/tmuxinator diff --git a/scripts/bootstrap-host.sh b/scripts/bootstrap-host.sh index bc89373..88a8ef2 100755 --- a/scripts/bootstrap-host.sh +++ b/scripts/bootstrap-host.sh @@ -36,7 +36,8 @@ xhost local:docker # Install utilities apt update && apt install --yes && \ - docker.io && \ + docker.io \ + ksshaskpass \ vcsh # Enable password-less sudo for the host user diff --git a/scripts/bootstrap-volumes.sh b/scripts/bootstrap-volumes.sh index bfd15db..b669b6f 100755 --- a/scripts/bootstrap-volumes.sh +++ b/scripts/bootstrap-volumes.sh @@ -3,28 +3,36 @@ REPO_ROOT=$(dirname $(realpath $0))/.. # 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 DESKTOP_ENVIRONMENT_CACHE_YARN:$DESKTOP_ENVIRONMENT_CACHE_YARN \ - sabrehagen/desktop-environment:latest \ - chown -R $DESKTOP_ENVIRONMENT_USER:$DESKTOP_ENVIRONMENT_USER $DESKTOP_ENVIRONMENT_CACHE_YARN - # Give the container user ownership of the DESKTOP_ENVIRONMENT_CACHE_CHROME volume docker run \ --rm \ --user root \ --volume DESKTOP_ENVIRONMENT_CACHE_CHROME:$DESKTOP_ENVIRONMENT_CACHE_CHROME \ - sabrehagen/desktop-environment:latest \ + $DESKTOP_ENVIRONMENT_USER/desktop-environment:latest \ chown -R $DESKTOP_ENVIRONMENT_USER:$DESKTOP_ENVIRONMENT_USER $DESKTOP_ENVIRONMENT_CACHE_CHROME +# Give the container user ownership of the DESKTOP_ENVIRONMENT_CACHE_YARN volume +docker run \ + --rm \ + --user root \ + --volume DESKTOP_ENVIRONMENT_CACHE_YARN:$DESKTOP_ENVIRONMENT_CACHE_YARN \ + $DESKTOP_ENVIRONMENT_USER/desktop-environment:latest \ + chown -R $DESKTOP_ENVIRONMENT_USER:$DESKTOP_ENVIRONMENT_USER $DESKTOP_ENVIRONMENT_CACHE_YARN + +# Give the container user ownership of the DESKTOP_ENVIRONMENT_CACHE_ZSH volume +docker run \ + --rm \ + --user root \ + --volume DESKTOP_ENVIRONMENT_CACHE_ZSH:$DESKTOP_ENVIRONMENT_CACHE_ZSH \ + $DESKTOP_ENVIRONMENT_USER/desktop-environment:latest \ + chown -R $DESKTOP_ENVIRONMENT_USER:$DESKTOP_ENVIRONMENT_USER $DESKTOP_ENVIRONMENT_CACHE_ZSH + # Give the container user ownership of the DESKTOP_ENVIRONMENT_CONFIG_CHROME volume docker run \ --rm \ --user root \ --volume DESKTOP_ENVIRONMENT_CONFIG_CHROME:$DESKTOP_ENVIRONMENT_CONFIG_CHROME \ - sabrehagen/desktop-environment:latest \ + $DESKTOP_ENVIRONMENT_USER/desktop-environment:latest \ chown -R $DESKTOP_ENVIRONMENT_USER:$DESKTOP_ENVIRONMENT_USER $DESKTOP_ENVIRONMENT_CONFIG_CHROME # Give the container user ownership of the DESKTOP_ENVIRONMENT_CONFIG_CODE volume @@ -32,7 +40,7 @@ docker run \ --rm \ --user root \ --volume DESKTOP_ENVIRONMENT_CONFIG_CODE:$DESKTOP_ENVIRONMENT_CONFIG_CODE \ - sabrehagen/desktop-environment:latest \ + $DESKTOP_ENVIRONMENT_USER/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 @@ -40,5 +48,5 @@ docker run \ --rm \ --user root \ --volume DESKTOP_ENVIRONMENT_CONFIG_GITHUB:$DESKTOP_ENVIRONMENT_CONFIG_GITHUB \ - sabrehagen/desktop-environment:latest \ + $DESKTOP_ENVIRONMENT_USER/desktop-environment:latest \ chown -R $DESKTOP_ENVIRONMENT_USER:$DESKTOP_ENVIRONMENT_USER $DESKTOP_ENVIRONMENT_CONFIG_GITHUB diff --git a/scripts/build.sh b/scripts/build.sh index a4273c1..a5f86b0 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -1,7 +1,10 @@ REPO_ROOT=$(dirname $(realpath $0))/.. +# Export development environment shell configuration +export $(sh $REPO_ROOT/scripts/environment.sh) + docker build \ --build-arg CONTAINER_BUILD_DATE=$(date +%s) \ --build-arg CONTAINER_GIT_SHA=$(git rev-parse HEAD | cut -b 1-7) \ - --tag sabrehagen/desktop-environment:latest \ + --tag $DESKTOP_ENVIRONMENT_USER/desktop-environment:latest \ $REPO_ROOT diff --git a/scripts/start.sh b/scripts/start.sh index 53de5d0..394daf6 100755 --- a/scripts/start.sh +++ b/scripts/start.sh @@ -47,7 +47,7 @@ docker run \ --volume DESKTOP_ENVIRONMENT_CONFIG_GITHUB:$DESKTOP_ENVIRONMENT_CONFIG_GITHUB \ --volume DESKTOP_ENVIRONMENT_HOME:$DESKTOP_ENVIRONMENT_HOME \ --workdir $DESKTOP_ENVIRONMENT_HOME \ - sabrehagen/desktop-environment:latest + $DESKTOP_ENVIRONMENT_REGISTRY/desktop-environment:latest # Wait until the container is running before proceeding until docker inspect desktop-environment | grep Status | grep -m 1 running >/dev/null; do sleep 1; done