From ceac7a9f98f4065c95aa65c44aac19fdcb47141f Mon Sep 17 00:00:00 2001 From: Jackson Delahunt Date: Tue, 22 Oct 2019 09:04:43 +1100 Subject: [PATCH] neovim --- .gitignore | 2 - README.md | 3 +- credentials/authenticate.sh | 14 ---- docker/Dockerfile | 28 +++---- docker/scripts/build-kde.sh | 11 --- docker/scripts/build.sh | 1 + docker/scripts/clean-hard.sh | 1 - docker/scripts/environment.sh | 5 -- docker/scripts/gdrive.sh | 11 --- docker/scripts/start-traefik.sh | 31 -------- docker/scripts/start-xpra.sh | 35 --------- docker/scripts/start.sh | 7 +- host/bootstrap.sh | 121 ------------------------------ kubernetes/resources/cluster.yaml | 4 - kubernetes/scripts/bootstrap.sh | 14 ---- kubernetes/scripts/start.sh | 3 - packer/desktop-environment.json | 32 -------- packer/scripts/build.sh | 22 ------ terraform/desktop-environment.tf | 94 ----------------------- terraform/scripts/destroy.sh | 4 - terraform/scripts/recycle.sh | 5 -- terraform/scripts/restart.sh | 5 -- terraform/scripts/start.sh | 4 - terraform/scripts/stop.sh | 5 -- terraform/scripts/terraform.sh | 33 -------- terraform/variables.tf | 38 ---------- 26 files changed, 18 insertions(+), 515 deletions(-) delete mode 100755 credentials/authenticate.sh delete mode 100755 docker/scripts/build-kde.sh delete mode 100644 docker/scripts/gdrive.sh delete mode 100755 docker/scripts/start-traefik.sh delete mode 100755 docker/scripts/start-xpra.sh delete mode 100755 host/bootstrap.sh delete mode 100644 kubernetes/resources/cluster.yaml delete mode 100644 kubernetes/scripts/bootstrap.sh delete mode 100755 kubernetes/scripts/start.sh delete mode 100644 packer/desktop-environment.json delete mode 100755 packer/scripts/build.sh delete mode 100644 terraform/desktop-environment.tf delete mode 100755 terraform/scripts/destroy.sh delete mode 100755 terraform/scripts/recycle.sh delete mode 100755 terraform/scripts/restart.sh delete mode 100755 terraform/scripts/start.sh delete mode 100755 terraform/scripts/stop.sh delete mode 100755 terraform/scripts/terraform.sh delete mode 100644 terraform/variables.tf diff --git a/.gitignore b/.gitignore index 59c1cf7..33658b9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1 @@ -google.json -logs/ .dotfiles-cachebust diff --git a/README.md b/README.md index 0ae58c3..5ed58d2 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Build Status](https://travis-ci.org/sabrehagen/desktop-environment.svg?branch=master)](https://travis-ci.org/sabrehagen/desktop-environment) -My [daily driver](https://cloud.docker.com/repository/docker/sabrehagen/desktop-environment) on the cloud and desktop. +My [daily driver](https://cloud.docker.com/repository/docker/sabrehagen/desktop-environment) on the cloud and on desktop. ## Getting Started @@ -25,4 +25,3 @@ Set your [user configuration](docker/scripts/environment.sh#L3) and go. - [x] A computer wholly defined in code. - [x] Only one command required to start. - [x] Accessible from anywhere. - diff --git a/credentials/authenticate.sh b/credentials/authenticate.sh deleted file mode 100755 index 3134594..0000000 --- a/credentials/authenticate.sh +++ /dev/null @@ -1,14 +0,0 @@ -REPO_ROOT=$(dirname $(readlink -f $0))/.. - -# Export desktop environment shell configuration -eval "$($REPO_ROOT/docker/scripts/environment.sh)" - -# Extract credentials from environment -if [ ! -z "$DESKTOP_ENVIRONMENT_GOOGLE_CREDENTIALS" ]; then - docker run \ - --env DESKTOP_ENVIRONMENT_GOOGLE_CREDENTIALS \ - --interactive \ - --rm \ - --volume DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY:$DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY \ - alpine:latest ash -c "echo '$DESKTOP_ENVIRONMENT_GOOGLE_CREDENTIALS' > $DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY/credentials/google.json" -fi diff --git a/docker/Dockerfile b/docker/Dockerfile index 761fca5..9c89a4e 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,6 +1,8 @@ FROM ubuntu:19.04 -ENV USER jackson +ARG DESKTOP_ENVIRONMENT_USER + +ENV USER $DESKTOP_ENVIRONMENT_USER ENV DISPLAY :1 ENV EDITOR nano ENV HOME /home/$USER @@ -68,6 +70,7 @@ RUN apt-get update -qq && \ man-db \ nano \ ncdu \ + neovim \ net-tools \ netcat-openbsd \ nnn \ @@ -85,6 +88,8 @@ RUN apt-get update -qq && \ ssh \ sudo \ sxhkd \ + tigervnc-scraping-server \ + tigervnc-standalone-server \ tmux \ transmission-cli \ transmission-common \ @@ -92,9 +97,7 @@ RUN apt-get update -qq && \ tree \ vcsh \ vim \ - weechat \ wmctrl \ - x11vnc \ xauth \ xdotool \ xinit \ @@ -242,6 +245,10 @@ RUN git clone --depth 1 https://github.com/cloud-computer/noVNC.git /opt/noVNC RUN wget -O /usr/local/bin/onedrive -nv https://github.com/sabrehagen/onedrive/raw/master/onedrive && \ chmod +x /usr/local/bin/onedrive +# Install python packages +RUN pip install \ + speedtest-cli + # Install resucetime time tracker RUN wget -O rescuetime.deb -nv https://www.rescuetime.com/installers/rescuetime_current_amd64.deb && \ dpkg -i rescuetime.deb || apt-get install -qq --fix-broken && \ @@ -276,12 +283,6 @@ RUN wget -O code.deb -nv https://go.microsoft.com/fwlink/?LinkID=760868 && \ wget -O /usr/local/bin/shfmt -nv https://github.com/mvdan/sh/releases/download/v2.6.3/shfmt_v2.6.3_linux_amd64 && \ chmod +x /usr/local/bin/shfmt -# Install weechat slack plugin -RUN mkdir -p $HOME/.weechat/python/autoload && \ - curl -fsSL https://raw.githubusercontent.com/rawdigits/wee-slack/master/wee_slack.py -o $HOME/.weechat/python/wee_slack.py && \ - ln -s $HOME/.weechat/python/wee_slack.py $HOME/.weechat/python/autoload && \ - pip install websocket-client - # Install yarn RUN curl -fsSL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ echo "deb https://dl.yarnpkg.com/debian stable main" | tee /etc/apt/sources.list.d/yarn.list && \ @@ -331,12 +332,14 @@ RUN groupmod --gid $DOCKER_GROUP docker RUN useradd \ --create-home \ --groups $DOCKER_GROUP,audio,chrome,input,netdev,sudo,tty,video \ - --password $USER \ --shell /bin/zsh \ $USER -# Take ownership of user's home directory -RUN chown -R $USER:$USER $HOME +# Set non-root user password +RUN echo 'jackson:$6$7De0aW9hUvGDKZmc$qrylcFmwKAL9iGNG9dvQ/GXCM4gLY.hES/P2d/3ZzRxkVMjD77WeTVSxV1P9XtmE9iAUmDwDTCHiVK.p5Ct1y1:18193:0:99999:7:::' >> /etc/shadow + +# Take ownership of user's home directory and applications +RUN chown -R $USER:$USER $HOME /opt # Become desktop environment user USER $USER @@ -361,7 +364,6 @@ RUN vcsh clone https://sabrehagen@github.com/sabrehagen/dotfiles-alacritty.git & vcsh clone https://sabrehagen@github.com/sabrehagen/dotfiles-ssh.git & \ vcsh clone https://sabrehagen@github.com/sabrehagen/dotfiles-sxhkd.git & \ vcsh clone https://sabrehagen@github.com/sabrehagen/dotfiles-tmux.git & \ - vcsh clone https://sabrehagen@github.com/sabrehagen/dotfiles-weechat.git & \ vcsh clone https://sabrehagen@github.com/sabrehagen/dotfiles-x11.git & \ vcsh clone https://sabrehagen@github.com/sabrehagen/dotfiles-xdg.git & \ vcsh clone https://sabrehagen@github.com/sabrehagen/dotfiles-zsh.git & \ diff --git a/docker/scripts/build-kde.sh b/docker/scripts/build-kde.sh deleted file mode 100755 index 910dea5..0000000 --- a/docker/scripts/build-kde.sh +++ /dev/null @@ -1,11 +0,0 @@ -REPO_ROOT=$(dirname $(readlink -f $0))/../.. - -# Export desktop environment shell configuration -eval "$($REPO_ROOT/docker/scripts/environment.sh)" - -docker build \ - --build-arg DESKTOP_CONTAINER_BUILD_DATE=$(date +%s) \ - --build-arg DESKTOP_CONTAINER_GIT_SHA=$(git --git-dir $REPO_ROOT/.git rev-parse HEAD | cut -b 1-7) \ - --file docker/Dockerfile.kde \ - --tag $DESKTOP_ENVIRONMENT_REGISTRY/$DESKTOP_ENVIRONMENT_CONTAINER_NAME:kde \ - $REPO_ROOT/docker diff --git a/docker/scripts/build.sh b/docker/scripts/build.sh index 75a597c..5750179 100755 --- a/docker/scripts/build.sh +++ b/docker/scripts/build.sh @@ -6,6 +6,7 @@ eval "$($REPO_ROOT/docker/scripts/environment.sh)" docker build \ --build-arg DESKTOP_CONTAINER_BUILD_DATE=$(date +%s) \ --build-arg DESKTOP_CONTAINER_GIT_SHA=$(git --git-dir $REPO_ROOT/.git rev-parse HEAD | cut -b 1-7) \ + --build-arg DESKTOP_ENVIRONMENT_USER=$DESKTOP_ENVIRONMENT_USER \ --build-arg DOTFILES_CACHEBUST=$(cat $REPO_ROOT/.dotfiles-cachebust 2>/dev/null) \ --file $REPO_ROOT/docker/Dockerfile \ --tag $DESKTOP_ENVIRONMENT_REGISTRY/$DESKTOP_ENVIRONMENT_CONTAINER_NAME:$DESKTOP_ENVIRONMENT_CONTAINER_TAG \ diff --git a/docker/scripts/clean-hard.sh b/docker/scripts/clean-hard.sh index 2a289f3..6f47e17 100755 --- a/docker/scripts/clean-hard.sh +++ b/docker/scripts/clean-hard.sh @@ -3,7 +3,6 @@ REPO_ROOT=$(dirname $(readlink -f $0))/../.. # Remove volumes that can be recreated from scratch, but require manual configuration in app $REPO_ROOT/docker/scripts/wipe-volume.sh DESKTOP_ENVIRONMENT_STATE_CHROME & $REPO_ROOT/docker/scripts/wipe-volume.sh DESKTOP_ENVIRONMENT_STATE_CODE & -$REPO_ROOT/docker/scripts/wipe-volume.sh DESKTOP_ENVIRONMENT_STATE_GITHUB & $REPO_ROOT/docker/scripts/wipe-volume.sh DESKTOP_ENVIRONMENT_STATE_JUMP & $REPO_ROOT/docker/scripts/wipe-volume.sh DESKTOP_ENVIRONMENT_STATE_MUSIKCUBE & $REPO_ROOT/docker/scripts/wipe-volume.sh DESKTOP_ENVIRONMENT_STATE_TRAEFIK & diff --git a/docker/scripts/environment.sh b/docker/scripts/environment.sh index e3c0317..e93233c 100755 --- a/docker/scripts/environment.sh +++ b/docker/scripts/environment.sh @@ -27,12 +27,8 @@ echo export DESKTOP_ENVIRONMENT_DOCKER_NETWORK=$DESKTOP_ENVIRONMENT_REGISTRY-$DE echo export DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY=/$DESKTOP_ENVIRONMENT_CONTAINER_NAME # Desktop environment application cache volumes -echo export DESKTOP_ENVIRONMENT_CACHE_CERTIFICATES=$DESKTOP_ENVIRONMENT_USER_HOME/.pki echo export DESKTOP_ENVIRONMENT_CACHE_CHROME=$DESKTOP_ENVIRONMENT_USER_HOME/.cache/google-chrome echo export DESKTOP_ENVIRONMENT_CACHE_CODE=$DESKTOP_ENVIRONMENT_USER_HOME/.vscode -echo export DESKTOP_ENVIRONMENT_CACHE_GDRIVE=$DESKTOP_ENVIRONMENT_USER_HOME/.gdfuse -echo export DESKTOP_ENVIRONMENT_CACHE_SSH=$DESKTOP_ENVIRONMENT_USER_HOME/.ssh -echo export DESKTOP_ENVIRONMENT_CACHE_STEMN=$DESKTOP_ENVIRONMENT_USER_HOME/.stemn echo export DESKTOP_ENVIRONMENT_CACHE_TMUX=$DESKTOP_ENVIRONMENT_USER_HOME/.tmux echo export DESKTOP_ENVIRONMENT_CACHE_YARN=$DESKTOP_ENVIRONMENT_USER_HOME/.cache/yarn echo export DESKTOP_ENVIRONMENT_CACHE_ZOOM=$DESKTOP_ENVIRONMENT_USER_HOME/.cache/zoom @@ -41,7 +37,6 @@ echo export DESKTOP_ENVIRONMENT_CACHE_ZSH=$DESKTOP_ENVIRONMENT_USER_HOME/.cache/ # Desktop environment application state volumes echo export DESKTOP_ENVIRONMENT_STATE_CHROME=$DESKTOP_ENVIRONMENT_USER_HOME/.config/google-chrome echo export DESKTOP_ENVIRONMENT_STATE_CODE=$DESKTOP_ENVIRONMENT_USER_HOME/.config/Code -echo export DESKTOP_ENVIRONMENT_STATE_GITHUB=$DESKTOP_ENVIRONMENT_USER_HOME/.config/github echo export DESKTOP_ENVIRONMENT_STATE_I3=$DESKTOP_ENVIRONMENT_USER_HOME/.i3 echo export DESKTOP_ENVIRONMENT_STATE_JUMP=$DESKTOP_ENVIRONMENT_USER_HOME/.jump echo export DESKTOP_ENVIRONMENT_STATE_MUSIKCUBE=$DESKTOP_ENVIRONMENT_USER_HOME/.config/musikcube/1 diff --git a/docker/scripts/gdrive.sh b/docker/scripts/gdrive.sh deleted file mode 100644 index 37140ed..0000000 --- a/docker/scripts/gdrive.sh +++ /dev/null @@ -1,11 +0,0 @@ -docker run \ - --cap-add mknod \ - --cap-add sys_admin \ - --detach \ - --device=/dev/fuse \ - --name gdrive \ - --security-opt apparmor:unconfined \ - --volume /mnt/drive:/mnt/gdrive:shared \ - --volume DESKTOP_ENVIRONMENT_CACHE_GDRIVE:/config/.gdfuse \ - --volume /mnt/drive:/mnt/gdrive:shared \ - mitcdh/google-drive-ocamlfuse diff --git a/docker/scripts/start-traefik.sh b/docker/scripts/start-traefik.sh deleted file mode 100755 index f60c08a..0000000 --- a/docker/scripts/start-traefik.sh +++ /dev/null @@ -1,31 +0,0 @@ -REPO_ROOT=$(dirname $(readlink -f $0))/../.. - -# Export desktop environment shell configuration -eval "$($REPO_ROOT/docker/scripts/environment.sh)" - -# Start traefik to expose the xpra web client publicly -docker exec \ - --detach \ - --tty \ - $DESKTOP_ENVIRONMENT_CONTAINER_NAME \ - traefik \ - --accessLog.filePath=/var/log/traefik-http.log \ - --accessLog.format=json \ - --acme.domains=*.$DESKTOP_ENVIRONMENT_CLOUDFLARE_DOMAIN \ - --acme.email=$DESKTOP_ENVIRONMENT_CLOUDFLARE_EMAIL \ - --acme.entrypoint=https \ - --acme.httpchallenge \ - --acme.httpchallenge.entrypoint=http \ - --acme.storage=/etc/traefik/acme.json \ - --acme=true \ - --defaultentrypoints=http,https \ - --docker \ - --docker.endpoint=unix:///var/run/docker.sock \ - --docker.exposedbydefault=false \ - --docker.watch=true \ - --entryPoints='Name:http Address::80 Redirect.EntryPoint:https' \ - --entryPoints='Name:https Address::443 TLS' \ - --logLevel=info \ - --traefikLog.filePath=/var/log/traefik-system.log \ - --traefikLog.format=json \ - --web diff --git a/docker/scripts/start-xpra.sh b/docker/scripts/start-xpra.sh deleted file mode 100755 index e07eeaa..0000000 --- a/docker/scripts/start-xpra.sh +++ /dev/null @@ -1,35 +0,0 @@ -REPO_ROOT=$(dirname $(readlink -f $0))/../.. - -# Export desktop environment shell configuration -eval "$($REPO_ROOT/docker/scripts/environment.sh)" - -# Kill existing xpra server -docker ps -a | grep xpra | cut -c 1-15 | xargs docker rm -f - -# Xpra server configuration -XPRA_DISPLAY=:14 -XPRA_SERVER_CONTAINER=$DESKTOP_ENVIRONMENT_CONTAINER_NAME-xpra-server -XPRA_WEB_PORT=10000 - -# Start the xpra server -docker run \ - --detach \ - --env DISPLAY=$XPRA_DISPLAY \ - --env MODE=tcp \ - --env XPRA_HTML=yes \ - --label traefik.backend=$XPRA_SERVER_CONTAINER \ - --label traefik.enable=true \ - --label traefik.frontend.entryPoints=https \ - --label traefik.frontend.rule=Host:cloud.$DESKTOP_ENVIRONMENT_CLOUDFLARE_DOMAIN \ - --label traefik.port=$XPRA_WEB_PORT \ - --name $XPRA_SERVER_CONTAINER \ - --network $DESKTOP_ENVIRONMENT_DOCKER_NETWORK \ - --rm \ - --volume /tmp/.X11-unix:/tmp/.X11-unix \ - jare/x11-bridge:latest - -# Start a desktop environment attached to the xpra server display -DESKTOP_ENVIRONMENT_CONTAINER_TAG=kde DISPLAY=$XPRA_DISPLAY $REPO_ROOT/docker/scripts/start.sh - -# Expose desktop environment publicly with traefik -$REPO_ROOT/docker/scripts/start-traefik.sh diff --git a/docker/scripts/start.sh b/docker/scripts/start.sh index 7bf7fc2..744c283 100755 --- a/docker/scripts/start.sh +++ b/docker/scripts/start.sh @@ -28,7 +28,7 @@ docker run \ --group-add plugdev \ --group-add tty \ --group-add video \ - --hostname $HOSTNAME \ + --hostname $(hostname) \ --interactive \ --name $DESKTOP_ENVIRONMENT_CONTAINER_NAME \ --network host \ @@ -39,19 +39,14 @@ docker run \ --volume /run/udev:/run/udev \ --volume /var/lib/docker:/var/lib/docker \ --volume /var/run/docker.sock:/var/run/docker.sock \ - --volume DESKTOP_ENVIRONMENT_CACHE_CERTIFICATES:$DESKTOP_ENVIRONMENT_CACHE_CERTIFICATES \ --volume DESKTOP_ENVIRONMENT_CACHE_CHROME:$DESKTOP_ENVIRONMENT_CACHE_CHROME \ --volume DESKTOP_ENVIRONMENT_CACHE_CODE:$DESKTOP_ENVIRONMENT_CACHE_CODE \ - --volume DESKTOP_ENVIRONMENT_CACHE_GDRIVE:$DESKTOP_ENVIRONMENT_CACHE_GDRIVE \ - --volume DESKTOP_ENVIRONMENT_CACHE_SSH:$DESKTOP_ENVIRONMENT_CACHE_SSH \ - --volume DESKTOP_ENVIRONMENT_CACHE_STEMN:$DESKTOP_ENVIRONMENT_CACHE_STEMN \ --volume DESKTOP_ENVIRONMENT_CACHE_TMUX:$DESKTOP_ENVIRONMENT_CACHE_TMUX \ --volume DESKTOP_ENVIRONMENT_CACHE_YARN:$DESKTOP_ENVIRONMENT_CACHE_YARN \ --volume DESKTOP_ENVIRONMENT_CACHE_ZOOM:$DESKTOP_ENVIRONMENT_CACHE_ZOOM \ --volume DESKTOP_ENVIRONMENT_CACHE_ZSH:$DESKTOP_ENVIRONMENT_CACHE_ZSH \ --volume DESKTOP_ENVIRONMENT_STATE_CHROME:$DESKTOP_ENVIRONMENT_STATE_CHROME \ --volume DESKTOP_ENVIRONMENT_STATE_CODE:$DESKTOP_ENVIRONMENT_STATE_CODE \ - --volume DESKTOP_ENVIRONMENT_STATE_GITHUB:$DESKTOP_ENVIRONMENT_STATE_GITHUB \ --volume DESKTOP_ENVIRONMENT_STATE_I3:$DESKTOP_ENVIRONMENT_STATE_I3 \ --volume DESKTOP_ENVIRONMENT_STATE_JUMP:$DESKTOP_ENVIRONMENT_STATE_JUMP \ --volume DESKTOP_ENVIRONMENT_STATE_MUSIKCUBE:$DESKTOP_ENVIRONMENT_STATE_MUSIKCUBE \ diff --git a/host/bootstrap.sh b/host/bootstrap.sh deleted file mode 100755 index cea34eb..0000000 --- a/host/bootstrap.sh +++ /dev/null @@ -1,121 +0,0 @@ -# Script is run as root to create the host user -if [ $USER != "root" ]; then - echo "Host configuration script must be run as root!" - exit 1 -fi - -REPO_ROOT=$(dirname $(readlink -f $0))/.. - -# Export desktop environment shell configuration -eval "$($REPO_ROOT/docker/scripts/environment.sh)" - -# Conventional docker group id -DOCKER_GID=999 - -# Remove existing group with docker group id -getent group $DOCKER_GID | sed 's;:.*;;' | xargs groupdel --force - -# Install utilities -apt-get update -qq && \ - apt-get install -qq \ - curl \ - docker.io \ - gosu \ - keychain \ - sudo \ - tilda \ - vcsh \ - wicd-curses \ - xclip \ - zsh - -# Enable password-less sudo for the sudo group -echo "%sudo ALL=(ALL) NOPASSWD:ALL" | tee -a /etc/sudoers - -# Increase max open files on host -echo 'fs.file-max=1000000' >> /etc/sysctl.conf - -# Increase max open file watchers on host -echo 'fs.inotify.max_user_watches=1000000' >> /etc/sysctl.conf - -# Increase file descriptor limit -echo '* soft nofile 1000000' >> /etc/security/limits.conf -echo '* hard nofile 1000000' >> /etc/security/limits.conf - -# Install alacritty -wget -nv -O alacritty.deb https://github.com/jwilm/alacritty/releases/download/v0.2.9/Alacritty-v0.2.9_amd64.deb && \ - dpkg -i alacritty.deb && \ - rm alacritty.deb - -# Install bat -wget -nv -O bat.deb -nv https://github.com/sharkdp/bat/releases/download/v0.9.0/bat_0.9.0_amd64.deb && \ - dpkg -i bat.deb && \ - rm bat.deb - -# Install jump directory navigator -wget -nv -O jump.deb https://github.com/gsamokovarov/jump/releases/download/v0.22.0/jump_0.22.0_amd64.deb && \ - dpkg -i jump.deb && \ - rm jump.deb - -# Install antigen -curl -sSL git.io/antigen > /usr/local/bin/antigen.zsh - -# Allow docker containers to access the host's X server -xhost local:docker - -# Remove existing user with host user id -userdel --force $(getent passwd $DESKTOP_ENVIRONMENT_USER_ID | cut -d : -f 1) - -# Create the host user -useradd \ - --create-home \ - --gid $DESKTOP_ENVIRONMENT_USER_ID \ - --uid $DESKTOP_ENVIRONMENT_USER_ID \ - $DESKTOP_ENVIRONMENT_USER - -# Give the host user access to required tools -usermod \ - --append \ - --groups docker,sudo \ - $DESKTOP_ENVIRONMENT_USER - -# Install dotfiles configuration for host user -gosu $DESKTOP_ENVIRONMENT_USER vcsh clone https://sabrehagen@github.com/sabrehagen/dotfiles-alacritty.git -gosu $DESKTOP_ENVIRONMENT_USER vcsh clone https://sabrehagen@github.com/sabrehagen/dotfiles-autostart.git -gosu $DESKTOP_ENVIRONMENT_USER vcsh clone https://sabrehagen@github.com/sabrehagen/dotfiles-git.git -gosu $DESKTOP_ENVIRONMENT_USER vcsh clone https://sabrehagen@github.com/sabrehagen/dotfiles-kde.git -gosu $DESKTOP_ENVIRONMENT_USER vcsh clone https://sabrehagen@github.com/sabrehagen/dotfiles-scripts.git -gosu $DESKTOP_ENVIRONMENT_USER vcsh clone https://sabrehagen@github.com/sabrehagen/dotfiles-tilda.git -gosu $DESKTOP_ENVIRONMENT_USER vcsh clone https://sabrehagen@github.com/sabrehagen/dotfiles-zsh.git - -# Pre-cache development environment container -docker pull $DESKTOP_ENVIRONMENT_REGISTRY/$DESKTOP_ENVIRONMENT_CONTAINER_NAME:$DESKTOP_ENVIRONMENT_CONTAINER_TAG &>/dev/null & - -# Pre-cache kde development environment container -docker pull $DESKTOP_ENVIRONMENT_REGISTRY/$DESKTOP_ENVIRONMENT_CONTAINER_NAME:kde &>/dev/null & - -# Pre-cache development environment support container -docker pull jare/x11-bridge:latest &>/dev/null & - -# Wait for docker image pulls to complete -wait - -# Clone the desktop environment into a local docker volume -$REPO_ROOT/docker/scripts/clone.sh - -# Start the desktop environment on host start -INIT_SCRIPT_NAME=$DESKTOP_ENVIRONMENT_REGISTRY-$DESKTOP_ENVIRONMENT_CONTAINER_NAME -INIT_SCRIPT_PATH=/etc/init.d/$INIT_SCRIPT_NAME -if [ "$1" = "--xpra" ]; then - INIT_SCRIPT_TARGET=start-xpra.sh -else - INIT_SCRIPT_TARGET=start.sh -fi -echo "\ -### BEGIN INIT INFO \n\ -# Default-Start: 2 3 4 5 \n\ -/var/lib/docker/volumes/DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY/_data/docker/scripts/$INIT_SCRIPT_TARGET \n\ -exit 0" > $INIT_SCRIPT_PATH -chmod +x $INIT_SCRIPT_PATH -update-rc.d $INIT_SCRIPT_NAME defaults -update-rc.d $INIT_SCRIPT_NAME enable diff --git a/kubernetes/resources/cluster.yaml b/kubernetes/resources/cluster.yaml deleted file mode 100644 index ab09b9d..0000000 --- a/kubernetes/resources/cluster.yaml +++ /dev/null @@ -1,4 +0,0 @@ -kind: Cluster -apiVersion: kind.sigs.k8s.io/v1alpha3 -networking: - apiServerAddress: 0.0.0.0 diff --git a/kubernetes/scripts/bootstrap.sh b/kubernetes/scripts/bootstrap.sh deleted file mode 100644 index d861027..0000000 --- a/kubernetes/scripts/bootstrap.sh +++ /dev/null @@ -1,14 +0,0 @@ -# run boostrap here -REPO_ROOT=$(dirname $(readlink -f $0))/../.. - -# Export desktop environment shell configuration -eval "$($REPO_ROOT/docker/scripts/environment.sh)" - -EXISTING_CLUSTER=$(curl https://kubernetes.$DESKTOP_ENVIRONMENT_CLOUDFLARE_DOMAIN) - -# check if existing cluster is responding -if [ ! -z "$EXISTING_CLUSTER"]; then - # join cluster -else - # bootstrap new cluster -fi diff --git a/kubernetes/scripts/start.sh b/kubernetes/scripts/start.sh deleted file mode 100755 index ccfb205..0000000 --- a/kubernetes/scripts/start.sh +++ /dev/null @@ -1,3 +0,0 @@ -REPO_ROOT=$(dirname $(readlink -f $0))/../.. - -kind create cluster --config=$REPO_ROOT/kubernetes/resources/cluster.yaml diff --git a/packer/desktop-environment.json b/packer/desktop-environment.json deleted file mode 100644 index 9c1b7b1..0000000 --- a/packer/desktop-environment.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "builders": [ - { - "image_name": "{{user `DESKTOP_ENVIRONMENT_REGISTRY`}}-{{user `DESKTOP_ENVIRONMENT_CONTAINER_NAME`}}", - "instance_name": "packer-{{user `DESKTOP_ENVIRONMENT_REGISTRY`}}-{{user `DESKTOP_ENVIRONMENT_CONTAINER_NAME`}}-{{timestamp}}", - "project_id": "stemnapp", - "source_image_family": "ubuntu-minimal-1810", - "ssh_username": "root", - "type": "googlecompute", - "zone": "australia-southeast1-a" - } - ], - "provisioners": [ - { - "inline": [ - "# Install git", - "apt-get update -qq && apt-get install -qq git", - - "# Clone the desktop environment", - "git clone https://github.com/{{user `DESKTOP_ENVIRONMENT_REGISTRY`}}/{{user `DESKTOP_ENVIRONMENT_CONTAINER_NAME`}}", - - "# Prepare the desktop environment host", - "{{user `DESKTOP_ENVIRONMENT_CONTAINER_NAME`}}/host/bootstrap.sh --xpra" - ], - "type": "shell" - } - ], - "variables": { - "DESKTOP_ENVIRONMENT_CONTAINER_NAME": "{{env `DESKTOP_ENVIRONMENT_CONTAINER_NAME`}}", - "DESKTOP_ENVIRONMENT_REGISTRY": "{{env `DESKTOP_ENVIRONMENT_REGISTRY`}}" - } -} diff --git a/packer/scripts/build.sh b/packer/scripts/build.sh deleted file mode 100755 index 9cff04e..0000000 --- a/packer/scripts/build.sh +++ /dev/null @@ -1,22 +0,0 @@ -REPO_ROOT=$(dirname $(readlink -f $0))/../.. - -# Export desktop environment shell configuration -eval "$($REPO_ROOT/docker/scripts/environment.sh)" - -# Clone the desktop environment into a local docker volume -$REPO_ROOT/docker/scripts/clone.sh - -# Authenticate with cloud service provider -$REPO_ROOT/credentials/authenticate.sh - -docker run \ - --env DESKTOP_ENVIRONMENT_CONTAINER_NAME \ - --env DESKTOP_ENVIRONMENT_REGISTRY \ - --env GOOGLE_APPLICATION_CREDENTIALS=$DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY/credentials/google.json \ - --interactive \ - --rm \ - --tty \ - --volume DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY:$DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY:ro \ - hashicorp/packer:light build \ - -force \ - $DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY/packer/desktop-environment.json diff --git a/terraform/desktop-environment.tf b/terraform/desktop-environment.tf deleted file mode 100644 index acffa93..0000000 --- a/terraform/desktop-environment.tf +++ /dev/null @@ -1,94 +0,0 @@ -terraform { - backend "gcs" { - bucket = "desktop-environment" - prefix = "terraform" - } -} - -provider "google" { - project = "${var.gcp_project}" - region = "${var.machine_region}" -} - -locals { - environment_name = "${var.DESKTOP_ENVIRONMENT_REGISTRY}-${var.DESKTOP_ENVIRONMENT_CONTAINER_NAME}" -} - -resource "google_compute_instance" "desktop-environment" { - allow_stopping_for_update = true - machine_type = "${var.machine_type}" - name = "${local.environment_name}" - project = "${var.gcp_project}" - tags = ["${local.environment_name}"] - zone = "${var.machine_region}-a" - - boot_disk { - initialize_params { - image = "${local.environment_name}" - type = "pd-ssd" - size = "80" - } - } - - network_interface { - access_config { - nat_ip = "${google_compute_address.static.address}" - } - subnetwork = "${google_compute_subnetwork.desktop-environment.name}" - } - - service_account { - scopes = [ - "https://www.googleapis.com/auth/compute.readonly", - ] - } -} - -resource "google_compute_firewall" "desktop-environment" { - name = "${local.environment_name}" - network = "${google_compute_network.desktop-environment.name}" - - allow { - protocol = "icmp" - } - - allow { - ports = [ - "22", - "80", - "443", - ] - protocol = "tcp" - } - - target_tags = ["${local.environment_name}"] -} - -resource "google_compute_subnetwork" "desktop-environment" { - name = "${local.environment_name}" - ip_cidr_range = "10.2.0.0/16" - network = "${google_compute_network.desktop-environment.name}" - region = "${var.machine_region}" -} - -resource "google_compute_network" "desktop-environment" { - auto_create_subnetworks = false - name = "${local.environment_name}" -} - -resource "google_compute_address" "static" { - name = "cloud-jacksondelahunt-com" -} - -provider "cloudflare" { - email = "${var.DESKTOP_ENVIRONMENT_CLOUDFLARE_EMAIL}" - token = "${var.DESKTOP_ENVIRONMENT_CLOUDFLARE_TOKEN}" -} - -resource "cloudflare_record" "desktop-environment" { - domain = "${var.DESKTOP_ENVIRONMENT_CLOUDFLARE_DOMAIN}" - name = "cloud" - proxied = true - type = "A" - value = "${google_compute_address.static.address}" -} diff --git a/terraform/scripts/destroy.sh b/terraform/scripts/destroy.sh deleted file mode 100755 index 4692598..0000000 --- a/terraform/scripts/destroy.sh +++ /dev/null @@ -1,4 +0,0 @@ -REPO_ROOT=$(dirname $(readlink -f $0))/../.. - -# Destroy the desktop environment cloud virtual machine -$REPO_ROOT/terraform/scripts/terraform.sh destroy diff --git a/terraform/scripts/recycle.sh b/terraform/scripts/recycle.sh deleted file mode 100755 index 1311220..0000000 --- a/terraform/scripts/recycle.sh +++ /dev/null @@ -1,5 +0,0 @@ -REPO_ROOT=$(dirname $(readlink -f $0))/../.. - -# Authenticate with cloud service provider -$REPO_ROOT/terraform/scripts/destroy.sh -$REPO_ROOT/terraform/scripts/start.sh diff --git a/terraform/scripts/restart.sh b/terraform/scripts/restart.sh deleted file mode 100755 index 1d55de9..0000000 --- a/terraform/scripts/restart.sh +++ /dev/null @@ -1,5 +0,0 @@ -REPO_ROOT=$(dirname $(readlink -f $0))/../.. - -# Authenticate with cloud service provider -$REPO_ROOT/terraform/scripts/stop.sh -$REPO_ROOT/terraform/scripts/start.sh diff --git a/terraform/scripts/start.sh b/terraform/scripts/start.sh deleted file mode 100755 index 47eb482..0000000 --- a/terraform/scripts/start.sh +++ /dev/null @@ -1,4 +0,0 @@ -REPO_ROOT=$(dirname $(readlink -f $0))/../.. - -# Destroy the desktop environment cloud virtual machine -$REPO_ROOT/terraform/scripts/terraform.sh apply diff --git a/terraform/scripts/stop.sh b/terraform/scripts/stop.sh deleted file mode 100755 index c215a56..0000000 --- a/terraform/scripts/stop.sh +++ /dev/null @@ -1,5 +0,0 @@ -REPO_ROOT=$(dirname $(readlink -f $0))/../.. - -# Destroy the desktop environment cloud virtual machine -$REPO_ROOT/terraform/scripts/terraform.sh destroy \ - -target google_compute_instance.desktop-environment diff --git a/terraform/scripts/terraform.sh b/terraform/scripts/terraform.sh deleted file mode 100755 index cf617d7..0000000 --- a/terraform/scripts/terraform.sh +++ /dev/null @@ -1,33 +0,0 @@ -REPO_ROOT=$(dirname $(readlink -f $0))/../.. - -# Export desktop environment shell configuration -eval "$($REPO_ROOT/docker/scripts/environment.sh)" - -# Authenticate with cloud service provider -$REPO_ROOT/credentials/authenticate.sh - -# Capture command line arguments -TERRAFORM_ARGS=$@ - -# Execute the supplied terraform command -docker run \ - --entrypoint ash \ - --env GOOGLE_APPLICATION_CREDENTIALS=$DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY/credentials/google.json \ - --env TF_CLI_ARGS_apply="-auto-approve -lock=false" \ - --env TF_CLI_ARGS_destroy="-auto-approve -lock=false" \ - --env TF_IN_AUTOMATION=true \ - --env TF_INPUT=false \ - --env TF_VAR_DESKTOP_ENVIRONMENT_CONTAINER_NAME=$DESKTOP_ENVIRONMENT_CONTAINER_NAME \ - --env TF_VAR_DESKTOP_ENVIRONMENT_REGISTRY=$DESKTOP_ENVIRONMENT_REGISTRY \ - --env TF_VAR_DESKTOP_ENVIRONMENT_CLOUDFLARE_DOMAIN=$DESKTOP_ENVIRONMENT_CLOUDFLARE_DOMAIN \ - --env TF_VAR_DESKTOP_ENVIRONMENT_CLOUDFLARE_EMAIL=$DESKTOP_ENVIRONMENT_CLOUDFLARE_EMAIL \ - --env TF_VAR_DESKTOP_ENVIRONMENT_CLOUDFLARE_TOKEN=$DESKTOP_ENVIRONMENT_CLOUDFLARE_TOKEN \ - --env TF_VAR_owner_host=$HOSTNAME \ - --env TF_VAR_owner_name=$USER \ - --rm \ - --tty \ - --volume DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY:$DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY \ - --workdir $DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY/terraform \ - hashicorp/terraform:light -c "\ - terraform init; - terraform $TERRAFORM_ARGS" diff --git a/terraform/variables.tf b/terraform/variables.tf deleted file mode 100644 index 074599d..0000000 --- a/terraform/variables.tf +++ /dev/null @@ -1,38 +0,0 @@ -variable "DESKTOP_ENVIRONMENT_CLOUDFLARE_DOMAIN" { - description = "The DESKTOP_ENVIRONMENT_CLOUDFLARE_DOMAIN environment variable." -} - -variable "DESKTOP_ENVIRONMENT_CLOUDFLARE_EMAIL" { - description = "The DESKTOP_ENVIRONMENT_CLOUDFLARE_EMAIL environment variable." -} - -variable "DESKTOP_ENVIRONMENT_CLOUDFLARE_TOKEN" { - description = "The DESKTOP_ENVIRONMENT_CLOUDFLARE_TOKEN environment variable." -} - -variable "DESKTOP_ENVIRONMENT_CONTAINER_NAME" { - description = "The DESKTOP_ENVIRONMENT_CONTAINER_NAME environment variable." -} - -variable "DESKTOP_ENVIRONMENT_REGISTRY" { - description = "The DESKTOP_ENVIRONMENT_REGISTRY environment variable." -} - -variable "gcp_project" { - description = "The project to create the machine in." - default = "stemnapp" -} - -variable "machine_region" { - description = "The zone to create the machine in." - default = "australia-southeast1" -} - -variable "machine_type" { - description = "The machine type." - default = "custom-6-16384" -} - -output "ip" { - value = "${google_compute_instance.desktop-environment.network_interface.0.access_config.0.nat_ip}" -}