Resolve KASM-5341 "Feature/ app layers jammy"

This commit is contained in:
Ryan Kuba 2024-01-09 23:18:31 +00:00 committed by Justin Travis
parent 053ef073ae
commit 7b1b4984a4
46 changed files with 684 additions and 100 deletions

89
ci-scripts/app-layer.sh Normal file
View File

@ -0,0 +1,89 @@
#! /bin/bash
# Ingest cli variables
## Parse input ##
NAME=$1
TYPE=$2
BASE=$3
IS_ROLLING=$4
# Determine if this is a private or public build
if [[ "${CI_COMMIT_REF_NAME}" == release/* ]] || [[ "${CI_COMMIT_REF_NAME}" == "develop" ]]; then
ENDPOINT="${NAME}"
APPS="kasm-apps"
else
ENDPOINT="${NAME}-private"
APPS="kasm-apps-private"
fi
# Determine if this is a rolling build
if [[ "${CI_PIPELINE_SOURCE}" == "schedule" ]] || [[ "${IS_ROLLING}" == "true" ]]; then
SANITIZED_BRANCH=${SANITIZED_BRANCH}-rolling
fi
# Create workspace and base dockerfile
mkdir -p applayer
cd applayer
echo "FROM scratch" > Dockerfile
echo "ADD ./layer.tar /" >> Dockerfile
# Clean up layer tar to not include overlay info
clean_tar () {
mkdir cleantar
tar xf layer.tar -C cleantar/ --exclude="**.wh**"
rm layer.tar
cd cleantar
tar -cf layer.tar *
mv layer.tar ../
cd ..
rm -Rf cleantar/
}
# Multi arch
if [ "${TYPE}" == "multi" ]; then
for ARCH in x86_64 aarch64; do
# Create image tarballs
docker save -o $ARCH.tar ${ORG_NAME}/${ENDPOINT}:${ARCH}-${SANITIZED_BRANCH}
# Pull out the layer we are looking for
mkdir $ARCH
mv $ARCH.tar $ARCH
cd $ARCH
tar xf $ARCH.tar
LAYER_FOLDER=$(du -sk * |sort -nr | sed '3q;d' | awk '{print $2}')
mv $LAYER_FOLDER/layer.tar ../
cd ../
rm -Rf $ARCH
clean_tar
# build the image based on this single layer
docker build -t ${ORG_NAME}/${APPS}:${ARCH}-${BASE}-${NAME}-${SANITIZED_BRANCH} .
docker push ${ORG_NAME}/${APPS}:${ARCH}-${BASE}-${NAME}-${SANITIZED_BRANCH}
rm -f layer.tar
done
# Manifest
docker manifest push --purge ${ORG_NAME}/${APPS}:${BASE}-${NAME}-${SANITIZED_BRANCH} || :
docker manifest create ${ORG_NAME}/${APPS}:${BASE}-${NAME}-${SANITIZED_BRANCH} ${ORG_NAME}/${APPS}:x86_64-${BASE}-${NAME}-${SANITIZED_BRANCH} ${ORG_NAME}/${APPS}:aarch64-${BASE}-${NAME}-${SANITIZED_BRANCH}
docker manifest annotate ${ORG_NAME}/${APPS}:${BASE}-${NAME}-${SANITIZED_BRANCH} ${ORG_NAME}/${APPS}:aarch64-${BASE}-${NAME}-${SANITIZED_BRANCH} --os linux --arch arm64 --variant v8
docker manifest push --purge ${ORG_NAME}/${APPS}:${BASE}-${NAME}-${SANITIZED_BRANCH}
# Single arch
else
# Create image tarballs
docker save -o image.tar ${ORG_NAME}/${ENDPOINT}:${SANITIZED_BRANCH}
# Pull out the layer we are looking for
mkdir image
mv image.tar image
cd image
tar xf image.tar
LAYER_FOLDER=$(du -sk * |sort -nr | sed '3q;d' | awk '{print $2}')
mv $LAYER_FOLDER/layer.tar ../
cd ../
rm -Rf image
clean_tar
# build the image based on this single layer
docker build -t ${ORG_NAME}/${APPS}:${BASE}-${NAME}-${SANITIZED_BRANCH} .
docker push ${ORG_NAME}/${APPS}:${BASE}-${NAME}-${SANITIZED_BRANCH}
rm -f layer.tar
fi
# Cleanup
cd ..
rm -Rf applayer

View File

@ -137,8 +137,9 @@ manifest_{{ IMAGE.name }}:
stage: manifest
when: always
script:
- apk add bash
- bash ci-scripts/manifest.sh "{{ IMAGE.name }}" "multi"
- apk add bash tar
- bash ci-scripts/manifest.sh "{{ IMAGE.name }}" "multi"{% if IMAGE.singleapp %}
- bash ci-scripts/app-layer.sh "{{ IMAGE.name }}" "multi" "{{ IMAGE.base }}"{% endif %}
{% if FILE_LIMITS %}only:
changes:
{% for FILE in files %}- {{ FILE }}
@ -162,8 +163,9 @@ manifest_{{ IMAGE.name }}:
stage: manifest
when: always
script:
- apk add bash
- bash ci-scripts/manifest.sh "{{ IMAGE.name }}" "single"
- apk add bash tar
- bash ci-scripts/manifest.sh "{{ IMAGE.name }}" "single"{% if IMAGE.singleapp %}
- bash ci-scripts/app-layer.sh "{{ IMAGE.name }}" "single" "{{ IMAGE.base }}"{% endif %}
{% if FILE_LIMITS %}only:
changes:
{% for FILE in files %}- {{ FILE }}

View File

@ -5,12 +5,14 @@ files: &UNIVERSAL_CHANGE_FILES
multiImages:
- name: audacity
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-audacity
changeFiles:
- dockerfile-kasm-audacity
- src/ubuntu/install/audacity/**
- name: chromium
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-chromium
changeFiles:
@ -19,24 +21,28 @@ multiImages:
- src/ubuntu/install/chromium/**
- src/ubuntu/install/certificates/**
- name: deluge
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-deluge
changeFiles:
- dockerfile-kasm-deluge
- src/ubuntu/install/deluge/**
- name: doom
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-doom
changeFiles:
- dockerfile-kasm-doom
- src/ubuntu/install/doom/**
- name: filezilla
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-filezilla
changeFiles:
- dockerfile-kasm-filezilla
- src/ubuntu/install/filezilla/**
- name: firefox
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-firefox
changeFiles:
@ -45,18 +51,21 @@ multiImages:
- src/ubuntu/install/firefox/**
- src/ubuntu/install/certificates/**
- name: gimp
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-gimp
changeFiles:
- dockerfile-kasm-gimp
- src/ubuntu/install/gimp/**
- name: inkscape
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-inkscape
changeFiles:
- dockerfile-kasm-inkscape
- src/ubuntu/install/inkscape/**
- name: java-dev
singleapp: false
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-java-dev
changeFiles:
@ -70,12 +79,14 @@ multiImages:
- src/ubuntu/install/chrome/**
- src/ubuntu/install/eclipse/**
- name: libre-office
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-libre-office
changeFiles:
- dockerfile-kasm-libre-office
- src/ubuntu/install/libre_office/**
- name: opensuse-15-desktop
singleapp: false
base: core-opensuse-15
dockerfile: dockerfile-kasm-opensuse-15-desktop
changeFiles:
@ -91,6 +102,7 @@ multiImages:
- src/ubuntu/install/slack/**
- src/opensuse/install/**
- name: oracle-8-desktop
singleapp: false
base: core-oracle-8
dockerfile: dockerfile-kasm-oracle-8-desktop
changeFiles:
@ -104,18 +116,21 @@ multiImages:
- src/ubuntu/install/chromium/**
- src/ubuntu/install/slack/**
- name: pinta
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-pinta
changeFiles:
- dockerfile-kasm-pinta
- src/ubuntu/install/pinta/**
- name: qbittorrent
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-qbittorrent
changeFiles:
- dockerfile-kasm-qbittorrent
- src/ubuntu/install/qbittorrent/**
- name: redroid
singleapp: false
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-redroid
changeFiles:
@ -130,21 +145,14 @@ multiImages:
- src/ubuntu/install/tools/**
- src/ubuntu/install/cleanup/**
- name: remmina
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-remmina
changeFiles:
- dockerfile-kasm-remmina
- src/ubuntu/install/remmina/**
- name: slack
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-slack
changeFiles:
- dockerfile-kasm-slack
- src/ubuntu/install/slack/**
- src/ubuntu/install/chrone/**
- src/ubuntu/install/tools/**
- src/ubuntu/install/cleanup/**
- name: spiderfoot
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-spiderfoot
changeFiles:
@ -154,18 +162,21 @@ multiImages:
- src/ubuntu/install/tools/**
- src/ubuntu/install/cleanup/**
- name: sublime-text
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-sublime-text
changeFiles:
- dockerfile-kasm-sublime-text
- src/ubuntu/install/sublime_text/**
- name: telegram
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-telegram
changeFiles:
- dockerfile-kasm-telegram
- src/ubuntu/install/telegram/**
- name: terminal
singleapp: false
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-terminal
changeFiles:
@ -174,12 +185,14 @@ multiImages:
- src/ubuntu/install/ansible/**
- src/ubuntu/install/terminal/**
- name: thunderbird
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-thunderbird
changeFiles:
- dockerfile-kasm-thunderbird
- src/ubuntu/install/thunderbird/**
- name: tor-browser
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-tor-browser
changeFiles:
@ -187,6 +200,7 @@ multiImages:
- src/ubuntu/install/gtk/**
- src/ubuntu/install/torbrowser/**
- name: ubuntu-focal-desktop
singleapp: false
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-ubuntu-focal-desktop
changeFiles:
@ -213,6 +227,7 @@ multiImages:
- src/ubuntu/install/chrome/**
- src/ubuntu/install/slack/**
- name: ubuntu-focal-desktop-vpn
singleapp: false
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-ubuntu-focal-desktop-vpn
changeFiles:
@ -240,6 +255,7 @@ multiImages:
- src/ubuntu/install/slack/**
- src/ubuntu/install/vpn/**
- name: ubuntu-jammy-desktop
singleapp: false
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-ubuntu-jammy-desktop
changeFiles:
@ -266,18 +282,21 @@ multiImages:
- src/ubuntu/install/chrome/**
- src/ubuntu/install/slack/**
- name: vlc
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-vlc
changeFiles:
- dockerfile-kasm-vlc
- src/ubuntu/install/vlc/**
- name: vs-code
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-vs-code
changeFiles:
- dockerfile-kasm-vs-code
- src/ubuntu/install/vs_code/**
- name: almalinux-8-desktop
singleapp: false
base: core-almalinux-8
dockerfile: dockerfile-kasm-almalinux-8-desktop
changeFiles:
@ -291,6 +310,7 @@ multiImages:
- src/ubuntu/install/chromium/**
- src/ubuntu/install/slack/**
- name: almalinux-9-desktop
singleapp: false
base: core-almalinux-9
dockerfile: dockerfile-kasm-almalinux-9-desktop
changeFiles:
@ -303,6 +323,7 @@ multiImages:
- src/ubuntu/install/chromium/**
- src/ubuntu/install/slack/**
- name: alpine-317-desktop
singleapp: false
base: core-alpine-317
dockerfile: dockerfile-kasm-alpine-317-desktop
changeFiles:
@ -311,6 +332,7 @@ multiImages:
- src/ubuntu/install/cleanup/**
- src/alpine/install/**
- name: alpine-318-desktop
singleapp: false
base: core-alpine-318
dockerfile: dockerfile-kasm-alpine-318-desktop
changeFiles:
@ -319,6 +341,7 @@ multiImages:
- src/ubuntu/install/cleanup/**
- src/alpine/install/**
- name: brave
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-brave
changeFiles:
@ -326,6 +349,7 @@ multiImages:
- src/ubuntu/install/gtk/**
- src/ubuntu/install/brave/**
- name: debian-bullseye-desktop
singleapp: false
base: core-debian-bullseye
dockerfile: dockerfile-kasm-debian-bullseye-desktop
changeFiles:
@ -350,6 +374,7 @@ multiImages:
- src/ubuntu/install/chrome/**
- src/ubuntu/install/slack/**
- name: debian-bookworm-desktop
singleapp: false
base: core-debian-bookworm
dockerfile: dockerfile-kasm-debian-bookworm-desktop
changeFiles:
@ -374,6 +399,7 @@ multiImages:
- src/ubuntu/install/chrome/**
- src/ubuntu/install/slack/**
- name: fedora-37-desktop
singleapp: false
base: core-fedora-37
dockerfile: dockerfile-kasm-fedora-37-desktop
changeFiles:
@ -386,6 +412,7 @@ multiImages:
- src/ubuntu/install/chromium/**
- src/ubuntu/install/slack/**
- name: fedora-38-desktop
singleapp: false
base: core-fedora-38
dockerfile: dockerfile-kasm-fedora-38-desktop
changeFiles:
@ -398,6 +425,7 @@ multiImages:
- src/ubuntu/install/chromium/**
- src/ubuntu/install/slack/**
- name: kali-rolling-desktop
singleapp: false
base: core-kali-rolling
dockerfile: dockerfile-kasm-kali-rolling-desktop
changeFiles:
@ -406,12 +434,14 @@ multiImages:
- src/ubuntu/install/cleanup/**
- src/ubuntu/install/chromium/**
- name: minetest
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-minetest
changeFiles:
- dockerfile-kasm-minetest
- src/ubuntu/install/minetest/**
- name: oracle-9-desktop
singleapp: false
base: core-oracle-9
dockerfile: dockerfile-kasm-oracle-9-desktop
changeFiles:
@ -424,6 +454,7 @@ multiImages:
- src/ubuntu/install/chromium/**
- src/ubuntu/install/slack/**
- name: parrotos-5-desktop
singleapp: false
base: core-parrotos-5
dockerfile: dockerfile-kasm-parrotos-5-desktop
changeFiles:
@ -433,12 +464,14 @@ multiImages:
- src/ubuntu/install/cleanup/**
- src/ubuntu/install/chromium/**
- name: retroarch
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-retroarch
changeFiles:
- dockerfile-kasm-retroarch
- src/ubuntu/install/retroarch/**
- name: rockylinux-8-desktop
singleapp: false
base: core-rockylinux-8
dockerfile: dockerfile-kasm-rockylinux-8-desktop
changeFiles:
@ -452,6 +485,7 @@ multiImages:
- src/ubuntu/install/chromium/**
- src/ubuntu/install/slack/**
- name: rockylinux-9-desktop
singleapp: false
base: core-rockylinux-9
dockerfile: dockerfile-kasm-rockylinux-9-desktop
changeFiles:
@ -464,12 +498,14 @@ multiImages:
- src/ubuntu/install/chromium/**
- src/ubuntu/install/slack/**
- name: super-tux-kart
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-super-tux-kart
changeFiles:
- dockerfile-kasm-super-tux-kart
- src/ubuntu/install/super_tux_kart/**
- name: ubuntu-focal-dind
singleapp: false
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-ubuntu-focal-dind
changeFiles:
@ -483,6 +519,7 @@ multiImages:
- src/ubuntu/install/chromium/**
- src/ubuntu/install/chrome/**
- name: ubuntu-focal-dind-rootless
singleapp: false
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-ubuntu-focal-dind-rootless
changeFiles:
@ -496,6 +533,7 @@ multiImages:
- src/ubuntu/install/chromium/**
- src/ubuntu/install/chrome/**
- name: ubuntu-jammy-dind
singleapp: false
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-ubuntu-jammy-dind
changeFiles:
@ -509,6 +547,7 @@ multiImages:
- src/ubuntu/install/chromium/**
- src/ubuntu/install/chrome/**
- name: ubuntu-jammy-dind-rootless
singleapp: false
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-ubuntu-jammy-dind-rootless
changeFiles:
@ -523,6 +562,7 @@ multiImages:
- src/ubuntu/install/chromium/**
- src/ubuntu/install/chrome/**
- name: vivaldi
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-vivaldi
changeFiles:
@ -532,18 +572,21 @@ multiImages:
- src/ubuntu/install/vivaldi/**
singleImages:
- name: atom
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-atom
changeFiles:
- dockerfile-kasm-atom
- src/ubuntu/install/atom/**
- name: blender
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-blender
changeFiles:
- dockerfile-kasm-blender
- src/ubuntu/install/blender/**
- name: centos-7-desktop
singleapp: false
base: core-centos-7
dockerfile: dockerfile-kasm-centos-7-desktop
changeFiles:
@ -553,6 +596,7 @@ singleImages:
- src/ubuntu/install/cleanup/**
- src/ubuntu/install/chrome/**
- name: chrome
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-chrome
changeFiles:
@ -561,6 +605,7 @@ singleImages:
- src/ubuntu/install/certificates/**
- src/ubuntu/install/chrome/**
- name: desktop
singleapp: false
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-desktop
changeFiles:
@ -569,6 +614,7 @@ singleImages:
- src/ubuntu/install/certificates/**
- src/ubuntu/install/chrome/**
- name: desktop-deluxe
singleapp: false
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-desktop-deluxe
changeFiles:
@ -591,12 +637,14 @@ singleImages:
- src/ubuntu/install/ansible/**
- src/ubuntu/install/chrome/**
- name: discord
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-discord
changeFiles:
- dockerfile-kasm-discord
- src/ubuntu/install/discord/**
- name: edge
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-edge
changeFiles:
@ -604,6 +652,7 @@ singleImages:
- src/ubuntu/install/gtk/**
- src/ubuntu/install/edge/**
- name: hunchly
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-hunchly
changeFiles:
@ -611,12 +660,14 @@ singleImages:
- src/ubuntu/install/chrome/**
- src/ubuntu/install/hunchly/**
- name: insomnia
singleapp: true
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-insomnia
changeFiles:
- dockerfile-kasm-insomnia
- src/ubuntu/install/insomnia/**
- name: maltego
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-maltego
changeFiles:
@ -624,11 +675,13 @@ singleImages:
- src/ubuntu/install/maltego/**
- src/ubuntu/install/firefox/**
- name: only-office
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-only-office
changeFiles:
- dockerfile-kasm-only-office
- name: oracle-7-desktop
singleapp: false
base: core-oracle-7
dockerfile: dockerfile-kasm-oracle-7-desktop
changeFiles:
@ -640,6 +693,7 @@ singleImages:
- src/ubuntu/install/cleanup/**
- src/ubuntu/install/chrome/**
- name: postman
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-postman
changeFiles:
@ -647,6 +701,7 @@ singleImages:
- src/ubuntu/install/chrome/**
- src/ubuntu/install/postman/**
- name: remnux-focal-desktop
singleapp: false
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-remnux-focal-desktop
changeFiles:
@ -654,18 +709,31 @@ singleImages:
- src/ubuntu/install/firefox/**
- src/ubuntu/install/remnux/**
- name: signal
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-signal
changeFiles:
- dockerfile-kasm-signal
- src/ubuntu/install/signal/**
- name: slack
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-slack
changeFiles:
- dockerfile-kasm-slack
- src/ubuntu/install/slack/**
- src/ubuntu/install/chrome/**
- src/ubuntu/install/tools/**
- src/ubuntu/install/cleanup/**
- name: steam
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-steam
changeFiles:
- dockerfile-kasm-steam
- src/ubuntu/install/steam/**
- name: tracelabs
singleapp: false
base: core-kali-rolling
dockerfile: dockerfile-kasm-tracelabs
changeFiles:
@ -674,6 +742,7 @@ singleImages:
- src/ubuntu/install/firefox/**
- src/ubuntu/install/tracelabs/**
- name: unityhub
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-unityhub
changeFiles:
@ -682,6 +751,7 @@ singleImages:
- src/ubuntu/install/chrome/**
- src/ubuntu/install/unityhub/**
- name: zoom
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-zoom
changeFiles:
@ -689,6 +759,7 @@ singleImages:
- src/ubuntu/install/zoom/**
- src/ubuntu/install/chrome/**
- name: zsnes
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-zsnes
changeFiles:

View File

@ -1,5 +1,5 @@
ARG BASE_TAG="develop"
ARG BASE_IMAGE="core-ubuntu-jammy"
ARG BASE_IMAGE="core-ubuntu-focal"
FROM kasmweb/$BASE_IMAGE:$BASE_TAG
USER root

View File

@ -1,6 +1,7 @@
#!/usr/bin/env bash
set -ex
# Install Atom
wget -qO - https://packagecloud.io/AtomEditor/atom/gpgkey | apt-key add -
echo "deb [arch=amd64] https://packagecloud.io/AtomEditor/atom/any/ any main" \
> /etc/apt/sources.list.d/atom.list
@ -8,5 +9,18 @@ apt-get update
apt-get install -y atom
# Desktop Icon
sed -i 's#/usr/bin/atom#/usr/bin/atom --no-sandbox#g' /usr/share/applications/atom.desktop
cp /usr/share/applications/atom.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/atom.desktop
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/* \
/tmp/*
fi

View File

@ -1,7 +1,8 @@
#!/usr/bin/env bash
set -ex
apt-get update
# Install Audacity
apt-get update
apt-get install -y audacity
rm -rf \
/var/lib/apt/lists/* \
@ -12,3 +13,14 @@ mkdir -p $HOME/.audacity-data/
cp /dockerstartup/install/audacity/audacity.cfg $HOME/.audacity-data/
cp /usr/share/applications/audacity.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/audacity.desktop
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/* \
/tmp/*
fi

View File

@ -41,3 +41,20 @@ EOF
chmod +x /usr/bin/blender
rm -rf /tmp/* /var/lib/apt/lists/* /var/tmp/*
# Desktop icon
sed -i 's#Icon=blender#Icon=/blender/blender.svg#g' /blender/blender.desktop
cp /blender/blender.desktop /usr/share/applications/
cp /usr/share/applications/blender.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/blender.desktop
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/* \
/tmp/*
fi

View File

@ -19,6 +19,7 @@ sed -i 's/-stable//g' /usr/share/applications/brave-browser.desktop
cp /usr/share/applications/brave-browser.desktop $HOME/Desktop/
chown 1000:1000 $HOME/Desktop/brave-browser.desktop
chmod +x $HOME/Desktop/brave-browser.desktop
mv /usr/bin/brave-browser /usr/bin/brave-browser-orig
cat >/usr/bin/brave-browser <<EOL
@ -41,11 +42,12 @@ cat >>/usr/bin/x-www-browser <<EOL
exec -a "\$0" "\$HERE/brave" "${CHROME_ARGS}" "\$@"
EOL
mkdir -p /etc/brave/policies/managed/
# Vanilla Chrome looks for policies in /etc/opt/chrome/policies/managed which is used by web filtering.
# Create a symlink here so filter is applied to brave as well.
mkdir -p /etc/opt/chrome/policies/
ln -s /etc/brave/policies/managed /etc/opt/chrome/policies/
mkdir -p /etc/brave
ln -s /etc/opt/chrome/policies /etc/brave/policies
mkdir -p /etc/brave/policies/managed/
cat >>/etc/brave/policies/managed/default_managed_policy.json <<EOL
{"CommandLineFlagSecurityWarningsEnabled": false, "DefaultBrowserSettingEnabled": false}
EOL
@ -60,3 +62,7 @@ if [ -z ${SKIP_CLEAN+x} ]; then
/var/lib/apt/lists/* \
/var/tmp/*
fi
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;

View File

@ -102,3 +102,7 @@ mkdir -p /etc/opt/chrome/policies/managed/
cat >>/etc/opt/chrome/policies/managed/default_managed_policy.json <<EOL
{"CommandLineFlagSecurityWarningsEnabled": false, "DefaultBrowserSettingEnabled": false}
EOL
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;

View File

@ -147,3 +147,7 @@ mkdir -p /etc/chromium/policies/managed/
cat >>/etc/chromium/policies/managed/default_managed_policy.json <<EOL
{"CommandLineFlagSecurityWarningsEnabled": false, "DefaultBrowserSettingEnabled": false}
EOL
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;

View File

@ -1,13 +1,21 @@
#!/usr/bin/env bash
set -ex
apt-get update
apt-get install -y software-properties-common
add-apt-repository -y ppa:deluge-team/stable
# Install Deluge
apt-get update
apt-get install -y deluge
# Desktop Icon
cp /usr/share/applications/deluge.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/deluge.desktop
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/* \
/tmp/*
fi

View File

@ -24,3 +24,7 @@ if [ -z ${SKIP_CLEAN+x} ]; then
/var/tmp/* \
/tmp/*
fi
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;

View File

@ -1,8 +1,11 @@
#!/usr/bin/env bash
set -ex
# Install Doom
apt-get update
apt-get install -y chocolate-doom doom-wad-shareware prboom-plus freedoom
# Custom settings
mkdir -p $HOME/.local/share/chocolate-doom
cat >$HOME/.local/share/chocolate-doom/chocolate-doom.cfg <<EOL
force_software_renderer 1
@ -49,3 +52,23 @@ cat >/usr/bin/desktop_ready <<EOL
until pids=\$(pidof Thunar); do sleep .5; done
EOL
chmod +x /usr/bin/desktop_ready
# Desktop icon
DESKTOP_FILE="chocolate-doom.desktop"
if [ "$(lsb_release -cs)" == "jammy" ]; then
DESKTOP_FILE="org.chocolate_doom.Doom.desktop"
fi
sed -i 's#Exec=chocolate-doom#Exec=/usr/games/chocolate-doom#g' /usr/share/applications/${DESKTOP_FILE}
cp /usr/share/applications/${DESKTOP_FILE} $HOME/Desktop
chmod +x $HOME/Desktop/${DESKTOP_FILE}
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/* \
/tmp/*
fi

View File

@ -1,6 +1,6 @@
#!/bin/bash
ECLIPSE_VER_DATE="2021-12"
ECLIPSE_VER_DATE="2023-12"
cd /tmp
wget -q -O eclipse.tar.gz "https://mirrors.xmission.com/eclipse/technology/epp/downloads/release/${ECLIPSE_VER_DATE}/R/eclipse-java-${ECLIPSE_VER_DATE}-R-linux-gtk-$(arch).tar.gz"

View File

@ -5,29 +5,30 @@ CHROME_ARGS="--password-store=basic --no-sandbox --ignore-gpu-blocklist --user-d
apt-get update
EDGE_BUILD=$(curl -q https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-dev/ | grep href | grep .deb | sed 's/.*href="//g' | cut -d '"' -f1 | sort --version-sort | tail -1)
EDGE_BUILD=$(curl -q https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/ | grep href | grep .deb | sed 's/.*href="//g' | cut -d '"' -f1 | sort --version-sort | tail -1)
wget -q -O edge.deb https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-dev/$EDGE_BUILD
wget -q -O edge.deb https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/$EDGE_BUILD
apt-get install -y ./edge.deb
rm edge.deb
cp /usr/share/applications/microsoft-edge-dev.desktop $HOME/Desktop/
chown 1000:1000 $HOME/Desktop/microsoft-edge-dev.desktop
cp /usr/share/applications/microsoft-edge.desktop $HOME/Desktop/
chown 1000:1000 $HOME/Desktop/microsoft-edge.desktop
chmod +x $HOME/Desktop/microsoft-edge.desktop
mv /usr/bin/microsoft-edge-dev /usr/bin/microsoft-edge-dev-orig
cat >/usr/bin/microsoft-edge-dev <<EOL
mv /usr/bin/microsoft-edge-stable /usr/bin/microsoft-edge-stable-orig
cat >/usr/bin/microsoft-edge-stable <<EOL
#!/usr/bin/env bash
sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' ~/.config/microsoft-edge-dev/Default/Preferences
sed -i 's/"exit_type":"Crashed"/"exit_type":"None"/' ~/.config/microsoft-edge-dev/Default/Preferences
sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' ~/.config/microsoft-edge/Default/Preferences
sed -i 's/"exit_type":"Crashed"/"exit_type":"None"/' ~/.config/microsoft-edge/Default/Preferences
if [ -f /opt/VirtualGL/bin/vglrun ] && [ ! -z "\${KASM_EGL_CARD}" ] && [ ! -z "\${KASM_RENDERD}" ] && [ -O "\${KASM_RENDERD}" ] && [ -O "\${KASM_EGL_CARD}" ] ; then
echo "Starting Edge with GPU Acceleration on EGL device \${KASM_EGL_CARD}"
vglrun -d "\${KASM_EGL_CARD}" /opt/microsoft/msedge-dev/microsoft-edge ${CHROME_ARGS} "\$@"
vglrun -d "\${KASM_EGL_CARD}" /opt/microsoft/msedge/microsoft-edge ${CHROME_ARGS} "\$@"
else
echo "Starting Edge"
/opt/microsoft/msedge-dev/microsoft-edge ${CHROME_ARGS} "\$@"
/opt/microsoft/msedge/microsoft-edge ${CHROME_ARGS} "\$@"
fi
EOL
chmod +x /usr/bin/microsoft-edge-dev
chmod +x /usr/bin/microsoft-edge-stable
sed -i 's@exec -a "$0" "$HERE/microsoft-edge" "$\@"@@g' /usr/bin/x-www-browser
cat >>/usr/bin/x-www-browser <<EOL
@ -43,7 +44,9 @@ EOL
# Vanilla Chrome looks for policies in /etc/opt/chrome/policies/managed which is used by web filtering.
# Create a symlink here so filter is applied to edge as well.
mkdir -p /etc/opt/chrome/policies/
ln -s /etc/opt/edge/policies/managed /etc/opt/chrome/policies/
mkdir -p /etc/opt/edge
ln -s /etc/opt/chrome/policies /etc/opt/edge/policies
mkdir -p /etc/opt/edge/policies/managed
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
@ -51,3 +54,7 @@ if [ -z ${SKIP_CLEAN+x} ]; then
/var/lib/apt/lists/* \
/var/tmp/*
fi
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;

View File

@ -1,7 +1,8 @@
#!/usr/bin/env bash
set -ex
apt-get update
# Install Filezilla
apt-get update
apt-get install -y filezilla
rm -rf \
/var/lib/apt/lists/* \
@ -12,3 +13,14 @@ mkdir -p $HOME/.config/filezilla
cp /dockerstartup/install/filezilla/filezilla.xml $HOME/.config/filezilla
cp /usr/share/applications/filezilla.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/filezilla.desktop
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/* \
/tmp/*
fi

View File

@ -151,6 +151,7 @@ if [[ "${DISTRO}" == @(centos|oracle8|rockylinux9|rockylinux8|oracle9|almalinux9
rm -Rf /root/.mozilla
else
# Creating Default Profile
chown -R 0:0 $HOME
firefox -headless -CreateProfile "kasm $HOME/.mozilla/firefox/kasm"
fi
@ -176,4 +177,11 @@ Locked=1
EOL
fi
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -f $HOME/Desktop/firefox.desktop ]; then
chmod +x $HOME/Desktop/firefox.desktop
fi
chown -R 1000:1000 $HOME/.mozilla

View File

@ -1,7 +1,19 @@
#!/usr/bin/env bash
set -ex
apt-get update
# Install GIMP
apt-get update
apt-get install -y gimp
cp /usr/share/applications/gimp.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/gimp.desktop
chmod +x $HOME/Desktop/gimp.desktop
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/* \
/tmp/*
fi

View File

@ -2,6 +2,12 @@
set -e
# Just remove xdg-open for Jammy
if [ "$(lsb_release -cs)" == "jammy" ]; then
rm -f /usr/bin/xdg-open
exit 0
fi
libgtk_deb=libgtk.deb
ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g')

View File

@ -1,10 +1,32 @@
#!/usr/bin/env bash
set -ex
# Install Hunchly
wget https://downloadmirror.hunch.ly/currentversion/hunchly.deb -O /tmp/hunchly.deb
apt-get update
apt-get install -y /tmp/hunchly.deb
rm -rf /tmp/hunchly.deb
# Bin wrapper for seccomp
mv /usr/lib/hunchly/Hunchly /usr/lib/hunchly/Hunchly-orig
cat >/usr/lib/hunchly/Hunchly <<EOL
#!/bin/bash
BIN=/usr/lib/hunchly/Hunchly-orig
# Run normally on privved containers
if grep -q 'Seccomp:\t0' /proc/1/status; then
\${BIN} \
"\$@"
else
\${BIN} \
--no-sandbox \
"\$@"
fi
EOL
chmod +x /usr/lib/hunchly/Hunchly
# Desktop icon
cp /usr/share/applications/hunchly-2.desktop $HOME/Desktop/
chown 1000:1000 $HOME/Desktop/hunchly-2.desktop
chmod +x $HOME/Desktop/hunchly-2.desktop
@ -29,10 +51,13 @@ apt-get install -y \
thunar-archive-plugin \
xarchiver
# Cleanup
apt-get -y autoremove && \
apt-get clean && \
rm -rf \
/tmp/* \
/var/lib/apt/lists/* \
/var/tmp/*
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/* \
/tmp/*
fi

View File

@ -1,9 +1,9 @@
#!/usr/bin/env bash
set -ex
# Install Inkscape
apt-get update
apt-get install -y software-properties-common
add-apt-repository -y ppa:inkscape.dev/stable
apt-get update
apt-get install -y inkscape
@ -11,3 +11,14 @@ apt-get install -y inkscape
# Default settings and desktop icon
cp /usr/share/applications/org.inkscape.Inkscape.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/org.inkscape.Inkscape.desktop
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/* \
/tmp/*
fi

View File

@ -1,11 +1,25 @@
#!/usr/bin/env bash
set -ex
# Install Insomnia
wget -q "https://updates.insomnia.rest/downloads/ubuntu/latest?&app=com.insomnia.app&source=website" -O insomnia.deb
apt-get update
apt-get install -y ./insomnia.deb
rm insomnia.deb
# Desktop icon
sed -i "s#Exec=/opt/Insomnia/insomnia#Exec=/opt/Insomnia/insomnia --no-sandbox#g" /usr/share/applications/insomnia.desktop
cp /usr/share/applications/insomnia.desktop $HOME/Desktop
chmod +x $HOME/Desktop/insomnia.desktop
chown 1000:1000 $HOME/Desktop/insomnia.desktop
rm insomnia.deb
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/* \
/tmp/*
fi

View File

@ -1,26 +1,26 @@
#!/usr/bin/env bash
set -ex
# Install LibreOffice
apt-get update
apt-get install -y software-properties-common
add-apt-repository ppa:libreoffice/ppa
apt-get update
apt-get install -y libreoffice
rm -rf \
/tmp/* \
/var/lib/apt/lists/* \
/var/tmp/*
# Desktop icon
sed -i "s@Exec=libreoffice@Exec=env LD_LIBRARY_PATH=:/usr/lib/libreoffice/program:/usr/lib/$(arch)-linux-gnu/ libreoffice@g" /usr/share/applications/libreoffice-*.desktop
cp /usr/share/applications/libreoffice-startcenter.desktop $HOME/Desktop/
chown 1000:1000 $HOME/Desktop/libreoffice-startcenter.desktop
chmod +x $HOME/Desktop/libreoffice-startcenter.desktop
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/*
/var/tmp/* \
/tmp/*
fi

View File

@ -1,16 +1,26 @@
#!/usr/bin/env bash
set -ex
# Install Maltego
apt-get update
apt-get install -y default-jre curl
MALTEGO_URL=$(curl -sq https://downloads.maltego.com/maltego-v4/info.json | grep -e "url.*deb" | cut -d '"' -f4 | head -1)
wget -q $MALTEGO_URL -O maltego.deb
apt-get install -y ./maltego.deb
rm maltego.deb
# Desktop icon
cp /usr/share/applications/maltego.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/maltego.desktop
chown 1000:1000 /usr/share/applications/maltego.desktop
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/* \
/tmp/*
fi

View File

@ -1,5 +1,7 @@
#!/usr/bin/env bash
set -ex
# Install Minetest
apt-get update
apt-get install -y minetest
@ -20,10 +22,13 @@ fi
EOL
chmod +x /usr/bin/minetest
# Cleanup
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/*
/var/tmp/* \
/tmp/*
fi

View File

@ -1,19 +1,31 @@
#!/usr/bin/env bash
set -ex
# Install Only Office
ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g')
if [ "$ARCH" == "arm64" ] ; then
echo "Only Office is not supported on arm64, skipping Only Office installation"
exit 0
fi
curl -L -o only_office.deb "https://download.onlyoffice.com/install/desktop/editors/linux/onlyoffice-desktopeditors_${ARCH}.deb"
apt-get update
apt-get install -y ./only_office.deb
rm -rf only_office.deb
# Desktop icon
cp /usr/share/applications/onlyoffice-desktopeditors.desktop $HOME/Desktop
sed -i 's/ONLYOFFICE Desktop Editors/ONLYOFFICE/g' $HOME/Desktop/onlyoffice-desktopeditors.desktop
chmod +x $HOME/Desktop/onlyoffice-desktopeditors.desktop
# KASM-1541
sed -i 's#/usr/bin/onlyoffice-desktopeditors %U$#bash -c "source ~/.bashrc \&\& /usr/bin/onlyoffice-desktopeditors %U"#' /usr/share/applications/onlyoffice-desktopeditors.desktop
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/* \
/tmp/*
fi

View File

@ -1,12 +1,21 @@
#!/usr/bin/env bash
set -ex
apt-get update
# Install Pinta
apt-get update
apt-get install -y pinta
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/*
# Default settings and desktop icon
cp /usr/share/applications/pinta.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/pinta.desktop
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/* \
/tmp/*
fi

View File

@ -1,10 +1,13 @@
#!/usr/bin/env bash
set -ex
# Install Postman
wget -q https://dl.pstmn.io/download/latest/linux64 -O postman.tar.gz
mkdir -p /opt/
tar -xvzf postman.tar.gz -C /opt/
rm postman.tar.gz
# Desktop icon
cat >/usr/share/applications/postman.desktop <<EOL
[Desktop Entry]
Type=Application
@ -14,8 +17,17 @@ Exec="/opt/Postman/Postman"
Comment=Postman GUI
Categories=Development;Code;
EOL
chmod +x /usr/share/applications/postman.desktop
cp /usr/share/applications/postman.desktop $HOME/Desktop/postman.desktop
chmod +x $HOME/Desktop/postman.desktop
chown 1000:1000 $HOME/Desktop/postman.desktop
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/* \
/tmp/*
fi

View File

@ -1,9 +1,9 @@
#!/usr/bin/env bash
set -ex
# Install Qbittorrent
apt-get update
apt-get install -y software-properties-common
add-apt-repository -y ppa:qbittorrent-team/qbittorrent-stable
apt-get update
apt-get install -y qbittorrent
@ -13,3 +13,14 @@ mkdir -p $HOME/.config/qBittorrent
cp /dockerstartup/install/qbittorrent/qBittorrent.conf $HOME/.config/qBittorrent
cp /usr/share/applications/org.qbittorrent.qBittorrent.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/org.qbittorrent.qBittorrent.desktop
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/* \
/tmp/*
fi

View File

@ -181,4 +181,7 @@ shareparallel=0
viewmode=4
EOF
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
chown -R 1000:1000 $DEFAULT_PROFILE_DIR

View File

@ -1,12 +1,17 @@
#!/usr/bin/env bash
set -ex
# Install Retroarch
SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )"
add-apt-repository -y ppa:libretro/stable
apt-get update
apt-get install -y retroarch
apt-get install -y retroarch unzip
# Deskto icon
cp /usr/share/applications/retroarch.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/retroarch.desktop
# Assets install
mkdir -p $HOME/.config/retroarch/{assets,cores}
cp $SCRIPT_PATH/retroarch.cfg $HOME/.config/retroarch/retroarch.cfg
echo "Downloading Assets"
@ -44,3 +49,7 @@ if [ -z ${SKIP_CLEAN+x} ]; then
/var/lib/apt/lists/* \
/var/tmp/*
fi
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;

View File

@ -1,18 +1,29 @@
#!/usr/bin/env bash
set -ex
ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g')
# Install Signal
ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g')
if [ "${ARCH}" == "arm64" ] ; then
echo "Signal for arm64 currently not supported, skipping install"
exit 0
fi
# Signal only releases its desktop app under the xenial release, however it is compatible with all versions of Debian and Ubuntu that we support.
wget -O- https://updates.signal.org/desktop/apt/keys.asc | apt-key add -
echo "deb [arch=${ARCH}] https://updates.signal.org/desktop/apt xenial main" | tee -a /etc/apt/sources.list.d/signal-xenial.list
apt-get update
apt-get install -y signal-desktop
# Desktop icon
cp /usr/share/applications/signal-desktop.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/signal-desktop.desktop
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/* \
/tmp/*
fi

View File

@ -18,12 +18,21 @@ if [[ "${DISTRO}" == @(centos|oracle8|rockylinux9|rockylinux8|oracle9|almalinux9
if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37|fedora38) ]]; then
dnf localinstall -y slack-${version}-0.1.el8.x86_64.rpm
if [ -z ${SKIP_CLEAN+x} ]; then
dnf clean all
fi
elif [[ "${DISTRO}" == "opensuse" ]]; then
wget https://slack.com/gpg/slack_pubkey_20230710.gpg
rpm --import slack_pubkey_20230710.gpg
zypper install -yn slack-${version}-0.1.el8.x86_64.rpm
if [ -z ${SKIP_CLEAN+x} ]; then
zypper clean --all
fi
else
yum localinstall -y slack-${version}-0.1.el8.x86_64.rpm
if [ -z ${SKIP_CLEAN+x} ]; then
yum clean all
fi
fi
rm slack-${version}-0.1.el8.x86_64.rpm
@ -33,6 +42,13 @@ else
apt-get update
apt-get install -y ./slack-desktop-${version}-${ARCH}.deb
rm slack-desktop-${version}-${ARCH}.deb
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/* \
/tmp/*
fi
fi
@ -40,3 +56,7 @@ sed -i 's,/usr/bin/slack,/usr/bin/slack --no-sandbox,g' /usr/share/applications/
cp /usr/share/applications/slack.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/slack.desktop
chown 1000:1000 $HOME/Desktop/slack.desktop
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;

View File

@ -1,17 +1,29 @@
#!/usr/bin/env bash
set -xe
echo "Install Spiderfoot"
SPIDERFOOT_VERSION=$(curl -sX GET "https://api.github.com/repos/smicallef/spiderfoot/releases/latest" | awk '/tag_name/{print $4;exit}' FS='[""]')
# Install Spiderfoot
echo "Install Spiderfoot"
apt-get update
apt-get install -y python3-pip
SPIDERFOOT_HOME=$HOME/spiderfoot
mkdir -p $SPIDERFOOT_HOME
cd $SPIDERFOOT_HOME
wget https://github.com/smicallef/spiderfoot/archive/v4.0.tar.gz
tar zxvf v4.0.tar.gz
cd spiderfoot-4.0
wget https://github.com/smicallef/spiderfoot/archive/${SPIDERFOOT_VERSION}.tar.gz
tar zxvf ${SPIDERFOOT_VERSION}.tar.gz
rm ${SPIDERFOOT_VERSION}.tar.gz
cd spiderfoot-*
pip3 install -r requirements.txt
chown -R 1000:1000 $SPIDERFOOT_HOME
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/* \
/tmp/*
fi

View File

@ -1,9 +1,22 @@
#!/usr/bin/env bash
set -ex
# Install Steam
dpkg --add-architecture i386
apt-get update
apt-get install -y steam-installer
# Desktop icon
cp /usr/share/applications/steam.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/steam.desktop
chown 1000:1000 $HOME/Desktop/steam.desktop
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/* \
/tmp/*
fi

View File

@ -1,14 +1,25 @@
#!/usr/bin/env bash
set -ex
# Install Sublime Text
apt-get update
wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | apt-key add -
apt-get install -y apt-transport-https
echo "deb https://download.sublimetext.com/ apt/stable/" | tee /etc/apt/sources.list.d/sublime-text.list
apt-get update
apt-get install -y sublime-text
# Desktop icon
cp /usr/share/applications/sublime_text.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/sublime_text.desktop
chown 1000:1000 $HOME/Desktop/sublime_text.desktop
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/* \
/tmp/*
fi

View File

@ -1,5 +1,7 @@
#!/usr/bin/env bash
set -ex
#
VERSION="1.3"
ARCH=$(uname -m | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g')
build=64bit
@ -49,3 +51,14 @@ cat >/usr/bin/desktop_ready <<EOL
until pids=\$(pidof Thunar); do sleep .5; done
EOL
chmod +x /usr/bin/desktop_ready
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/* \
/tmp/*
fi

View File

@ -1,19 +1,19 @@
#!/usr/bin/env bash
set -ex
# Install Telegram
ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g')
if [ "${ARCH}" == "arm64" ] ; then
apt-get update
apt-get install -y telegram-desktop
cp /usr/share/applications/telegramdesktop.desktop $HOME/Desktop/telegram.desktop
chmod +x $HOME/Desktop/telegram.desktop
else
wget -q https://telegram.org/dl/desktop/linux -O /tmp/telegram.tgz
curl -L https://telegram.org/dl/desktop/linux -o /tmp/telegram.tgz
tar -xvf /tmp/telegram.tgz -C /opt/
rm -rf /tmp/telegram.tgz
wget -q https://kasm-static-content.s3.amazonaws.com/icons/telegram.png -O /opt/Telegram/telegram_icon.png
curl -L https://kasm-static-content.s3.amazonaws.com/icons/telegram.png -o /opt/Telegram/telegram_icon.png
cat >/usr/share/applications/telegram.desktop <<EOL
[Desktop Entry]
Version=1.0
@ -33,4 +33,14 @@ EOL
chmod +x /usr/share/applications/telegram.desktop
cp /usr/share/applications/telegram.desktop $HOME/Desktop/telegram.desktop
fi
chown 1000:1000 $HOME/Desktop/telegram.desktop
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/* \
/tmp/*
fi

View File

@ -55,3 +55,7 @@ else
cp /usr/share/applications/thunderbird.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/thunderbird.desktop
fi
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;

View File

@ -7,7 +7,7 @@ TOR_HOME=$HOME/tor-browser/
mkdir -p $TOR_HOME
if [ "$(arch)" == "aarch64" ]; then
SF_VERSION=$(curl -sI https://sourceforge.net/projects/tor-browser-ports/files/latest/download | awk -F'(ports/|/tor)' '/location/ {print $3}')
FULL_TOR_URL="https://downloads.sourceforge.net/project/tor-browser-ports/${SF_VERSION}/tor-browser-linux-arm64-${SF_VERSION}_ALL.tar.xz"
FULL_TOR_URL="https://downloads.sourceforge.net/project/tor-browser-ports/${SF_VERSION}/tor-browser-linux-arm64-${SF_VERSION}.tar.xz"
else
TOR_URL=$(curl -q https://www.torproject.org/download/ | grep downloadLink | grep linux | sed 's/.*href="//g' | cut -d '"' -f1 | head -1)
FULL_TOR_URL="https://www.torproject.org/${TOR_URL}"
@ -51,3 +51,14 @@ chown -R 1000:0 $TOR_HOME/
cp $TOR_HOME/tor-browser/start-tor-browser.desktop $HOME/Desktop/
chown 1000:0 $HOME/Desktop/start-tor-browser.desktop
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/* \
/tmp/*
fi

View File

@ -1,5 +1,6 @@
#!/usr/bin/env bash
# Install UnityHub
# Adapted from https://docs.unity3d.com/hub/manual/InstallHub.html#install-hub-linux
SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )"
set -ex
@ -8,14 +9,23 @@ wget -qO - https://hub.unity3d.com/linux/keys/public | apt-key add -
apt-get update
apt-get install -y unityhub
# Desktop icon
sed -i 's,/opt/unityhub/unityhub,/opt/unityhub/unityhub --no-sandbox,g' /usr/share/applications/unityhub.desktop
cp /usr/share/applications/unityhub.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/unityhub.desktop
chown 1000:1000 $HOME/Desktop/unityhub.desktop
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/* \
/tmp/*
fi
# Example for pre-installing a unity Editor
#mkdir -p $HOME/Unity/Hub/Editor/2021.3.6f1
#cd /tmp/
@ -23,4 +33,4 @@ chown 1000:1000 $HOME/Desktop/unityhub.desktop
#chmod +x ./UnitySetup
#yes | ./UnitySetup -u -l $HOME/Unity/Hub/Editor/2021.3.6f1
#rm /tmp/UnitySetup
#chown -R 1000:1000 $HOME/Unity
#chown -R 1000:1000 $HOME/Unity

View File

@ -21,6 +21,7 @@ set -e
# Add Desktop Icon
cp /usr/share/applications/vivaldi-stable.desktop $HOME/Desktop/
chown 1000:1000 $HOME/Desktop/vivaldi-stable.desktop
chmod +x $HOME/Desktop/vivaldi-stable.desktop
# Use wrapper to launch application
mv /opt/vivaldi/vivaldi /opt/vivaldi/vivaldi-orig
@ -57,3 +58,7 @@ if [ -z ${SKIP_CLEAN+x} ]; then
/var/lib/apt/lists/* \
/var/tmp/*
fi
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;

View File

@ -1,4 +1,21 @@
#!/usr/bin/env bash
set -ex
# Install VLC
apt-get update
apt-get install -y vlc
apt-get install -y vlc
# Desktop icon
cp /usr/share/applications/vlc.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/vlc.desktop
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/* \
/tmp/*
fi

View File

@ -1,9 +1,13 @@
#!/usr/bin/env bash
set -ex
# Install vsCode
ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/x64/g')
wget -q https://update.code.visualstudio.com/latest/linux-deb-${ARCH}/stable -O vs_code.deb
apt-get update
apt-get install -y ./vs_code.deb
# Desktop icon
mkdir -p /usr/share/icons/hicolor/apps
wget -O /usr/share/icons/hicolor/apps/vscode.svg https://kasm-static-content.s3.amazonaws.com/icons/vscode.svg
sed -i '/Icon=/c\Icon=/usr/share/icons/hicolor/apps/vscode.svg' /usr/share/applications/code.desktop
@ -19,10 +23,13 @@ apt-get install -y python3-setuptools \
python3-venv \
python3-virtualenv
# Cleanup
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/*
/var/tmp/* \
/tmp/*
fi

View File

@ -1,18 +1,18 @@
#!/usr/bin/env bash
set -ex
# Install Zoom
ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g')
if [ "${ARCH}" == "arm64" ] ; then
echo "Zoom for arm64 currently not supported, skipping install"
exit 0
fi
# Install Zoom
wget -q https://zoom.us/client/latest/zoom_${ARCH}.deb
apt-get update
apt-get install -y ./zoom_${ARCH}.deb
rm zoom_amd64.deb
# Desktop icon
cp /usr/share/applications/Zoom.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/Zoom.desktop
@ -28,9 +28,13 @@ fi
EOF
chmod +x /usr/bin/zoom
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/*
/var/tmp/* \
/tmp/*
fi

View File

@ -1,13 +1,29 @@
#!/usr/bin/env bash
set -ex
# Install zsnes
dpkg --add-architecture i386
apt-get update
apt-get install -y zsnes
# Input tweaks
mkdir $HOME/.zsnes
SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )"
SCRIPT_PATH="$(realpath $SCRIPT_PATH)"
cp ${SCRIPT_PATH}/zinput.cfg $HOME/.zsnes/zinput.cfg
chown -R 1000:1000 $HOME/.zsnes
chown -R 1000:1000 $HOME/.zsnes
# Desktop Icon
cp /usr/share/applications/zsnes.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/zsnes.desktop
# Cleanup for app layer
chown -R 1000:0 $HOME
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
if [ -z ${SKIP_CLEAN+x} ]; then
apt-get autoclean
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/* \
/tmp/*
fi