diff --git a/Dockerfile b/Dockerfile index d72bd3f..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,11 +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 - -# Install yarn utilities -RUN yarn global add \ - clipboard-cli + 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/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/bootstrap-host.sh b/scripts/bootstrap-host.sh index 109aba3..11edf44 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 @@ -31,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 @@ -52,6 +58,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/$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 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/environment.sh b/scripts/environment.sh index 5bac2a4..c2fd3a5 100755 --- a/scripts/environment.sh +++ b/scripts/environment.sh @@ -1,15 +1,18 @@ # 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 echo DESKTOP_ENVIRONMENT_CACHE_CODE=$DESKTOP_ENVIRONMENT_HOME/.vscode 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/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 diff --git a/scripts/start.sh b/scripts/start.sh index e07c467..521c81d 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 \ @@ -44,12 +43,13 @@ docker run \ --volume DESKTOP_ENVIRONMENT_CACHE_CHROME:$DESKTOP_ENVIRONMENT_CACHE_CHROME \ --volume DESKTOP_ENVIRONMENT_CACHE_CODE:$DESKTOP_ENVIRONMENT_CACHE_CODE \ --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 \ --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