mirror of
https://github.com/kingomarnajjar/desktop-environment.git
synced 2026-07-26 06:37:21 +10:00
neovim
This commit is contained in:
parent
85a5215a1d
commit
ceac7a9f98
26 changed files with 18 additions and 515 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -1,3 +1 @@
|
|||
google.json
|
||||
logs/
|
||||
.dotfiles-cachebust
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
[](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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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 & \
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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 \
|
||||
|
|
|
|||
|
|
@ -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 &
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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 \
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
kind: Cluster
|
||||
apiVersion: kind.sigs.k8s.io/v1alpha3
|
||||
networking:
|
||||
apiServerAddress: 0.0.0.0
|
||||
|
|
@ -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
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
REPO_ROOT=$(dirname $(readlink -f $0))/../..
|
||||
|
||||
kind create cluster --config=$REPO_ROOT/kubernetes/resources/cluster.yaml
|
||||
|
|
@ -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`}}"
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
@ -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}"
|
||||
}
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
REPO_ROOT=$(dirname $(readlink -f $0))/../..
|
||||
|
||||
# Destroy the desktop environment cloud virtual machine
|
||||
$REPO_ROOT/terraform/scripts/terraform.sh destroy
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
REPO_ROOT=$(dirname $(readlink -f $0))/../..
|
||||
|
||||
# Destroy the desktop environment cloud virtual machine
|
||||
$REPO_ROOT/terraform/scripts/terraform.sh apply
|
||||
|
|
@ -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
|
||||
|
|
@ -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"
|
||||
|
|
@ -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}"
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue