diff --git a/.github/ISSUE_TEMPLATE/issue.bug.yml b/.github/ISSUE_TEMPLATE/issue.bug.yml
index 856804c..6400c70 100644
--- a/.github/ISSUE_TEMPLATE/issue.bug.yml
+++ b/.github/ISSUE_TEMPLATE/issue.bug.yml
@@ -4,72 +4,10 @@ description: Create a report to help us improve
title: "[BUG]
"
labels: [Bug]
body:
- - type: checkboxes
+ - type: markdown
attributes:
- label: Is there an existing issue for this?
- description: Please search to see if an issue already exists for the bug you encountered.
- options:
- - label: I have searched the existing issues
- required: true
- - type: textarea
- attributes:
- label: Current Behavior
- description: Tell us what happens instead of the expected behavior.
- validations:
- required: true
- - type: textarea
- attributes:
- label: Expected Behavior
- description: Tell us what should happen.
- validations:
- required: false
- - type: textarea
- attributes:
- label: Steps To Reproduce
- description: Steps to reproduce the behavior.
- placeholder: |
- 1. In this environment...
- 2. With this config...
- 3. Run '...'
- 4. See error...
- validations:
- required: true
- - type: textarea
- attributes:
- label: Environment
- description: |
- examples:
- - **OS**: Ubuntu 20.04
- - **How docker service was installed**: distro's packagemanager
value: |
- - OS:
- - How docker service was installed:
- render: markdown
- validations:
- required: false
- - type: dropdown
- attributes:
- label: CPU architecture
- options:
- - x86-64
- validations:
- required: true
- - type: textarea
- attributes:
- label: Docker creation
- description: |
- Command used to create docker container
- Provide your docker create/run command or compose yaml snippet, or a screenshot of settings if using a gui to create the container
- render: bash
- validations:
- required: true
- - type: textarea
- attributes:
- description: |
- Provide a full docker log, output of "docker logs steamos"
- label: Container logs
- placeholder: |
- Output of `docker logs steamos`
- render: bash
- validations:
- required: true
+# DEPRECATION NOTICE
+This image is deprecated. We will not offer support for this image and it will not be updated.
+
+
diff --git a/.github/ISSUE_TEMPLATE/issue.feature.yml b/.github/ISSUE_TEMPLATE/issue.feature.yml
index 099dcdb..b21c3e1 100644
--- a/.github/ISSUE_TEMPLATE/issue.feature.yml
+++ b/.github/ISSUE_TEMPLATE/issue.feature.yml
@@ -4,28 +4,10 @@ description: Suggest an idea for this project
title: "[FEAT] "
labels: [enhancement]
body:
- - type: checkboxes
+ - type: markdown
attributes:
- label: Is this a new feature request?
- description: Please search to see if a feature request already exists.
- options:
- - label: I have searched the existing issues
- required: true
- - type: textarea
- attributes:
- label: Wanted change
- description: Tell us what you want to happen.
- validations:
- required: true
- - type: textarea
- attributes:
- label: Reason for change
- description: Justify your request, why do you want it, what is the benefit.
- validations:
- required: true
- - type: textarea
- attributes:
- label: Proposed code change
- description: Do you have a potential code change in mind?
- validations:
- required: false
+ value: |
+# DEPRECATION NOTICE
+This image is deprecated. We will not offer support for this image and it will not be updated.
+
+
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index d0c1ea0..417a391 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -1,3 +1,7 @@
+# DEPRECATION NOTICE
+This image is deprecated. We will not offer support for this image and it will not be updated.
+
+
[linuxserverurl]: https://linuxserver.io
diff --git a/.github/workflows/call_issue_pr_tracker.yml b/.github/workflows/call_issue_pr_tracker.yml
index 2c30784..d07cf12 100644
--- a/.github/workflows/call_issue_pr_tracker.yml
+++ b/.github/workflows/call_issue_pr_tracker.yml
@@ -8,6 +8,9 @@ on:
pull_request_review:
types: [submitted,edited,dismissed]
+permissions:
+ contents: read
+
jobs:
manage-project:
permissions:
diff --git a/.github/workflows/call_issues_cron.yml b/.github/workflows/call_issues_cron.yml
index 70b2f5e..8e8b094 100644
--- a/.github/workflows/call_issues_cron.yml
+++ b/.github/workflows/call_issues_cron.yml
@@ -4,6 +4,9 @@ on:
- cron: '45 12 * * *'
workflow_dispatch:
+permissions:
+ contents: read
+
jobs:
stale:
permissions:
diff --git a/.github/workflows/external_trigger.yml b/.github/workflows/external_trigger.yml
index c0da5ec..12514d5 100644
--- a/.github/workflows/external_trigger.yml
+++ b/.github/workflows/external_trigger.yml
@@ -3,6 +3,9 @@ name: External Trigger Main
on:
workflow_dispatch:
+permissions:
+ contents: read
+
jobs:
external-trigger-master:
runs-on: ubuntu-latest
@@ -43,8 +46,8 @@ jobs:
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
exit 1
fi
- EXT_RELEASE=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g')
- echo "External version: \`${EXT_RELEASE}\`" >> $GITHUB_STEP_SUMMARY
+ EXT_RELEASE_SANITIZED=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g')
+ echo "Sanitized external version: \`${EXT_RELEASE_SANITIZED}\`" >> $GITHUB_STEP_SUMMARY
echo "Retrieving last pushed version" >> $GITHUB_STEP_SUMMARY
image="linuxserver/steamos"
tag="latest"
@@ -100,8 +103,8 @@ jobs:
exit 1
fi
echo "Last pushed version: \`${IMAGE_VERSION}\`" >> $GITHUB_STEP_SUMMARY
- if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then
- echo "Version \`${EXT_RELEASE}\` already pushed, exiting" >> $GITHUB_STEP_SUMMARY
+ if [ "${EXT_RELEASE_SANITIZED}" == "${IMAGE_VERSION}" ]; then
+ echo "Sanitized version \`${EXT_RELEASE_SANITIZED}\` already pushed, exiting" >> $GITHUB_STEP_SUMMARY
exit 0
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-steamos/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then
echo "New version \`${EXT_RELEASE}\` found; but there already seems to be an active build on Jenkins; exiting" >> $GITHUB_STEP_SUMMARY
@@ -116,7 +119,7 @@ jobs:
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
else
printf "\n## Trigger new build\n\n" >> $GITHUB_STEP_SUMMARY
- echo "New version \`${EXT_RELEASE}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY
+ echo "New sanitized version \`${EXT_RELEASE_SANITIZED}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY
if [[ "${artifacts_found}" == "true" ]]; then
echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY
fi
@@ -136,7 +139,7 @@ jobs:
--data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--data-urlencode "Submit=Submit"
echo "**** Notifying Discord ****"
- TRIGGER_REASON="A version change was detected for steamos tag latest. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE}"
+ TRIGGER_REASON="A version change was detected for steamos tag latest. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE_SANITIZED}"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
"description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
diff --git a/.github/workflows/external_trigger_scheduler.yml b/.github/workflows/external_trigger_scheduler.yml
index e9a4d34..834d6f3 100644
--- a/.github/workflows/external_trigger_scheduler.yml
+++ b/.github/workflows/external_trigger_scheduler.yml
@@ -5,6 +5,9 @@ on:
- cron: '39 * * * *'
workflow_dispatch:
+permissions:
+ contents: read
+
jobs:
external-trigger-scheduler:
runs-on: ubuntu-latest
diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml
index fd2adfa..0f2d2e7 100644
--- a/.github/workflows/greetings.yml
+++ b/.github/workflows/greetings.yml
@@ -2,12 +2,18 @@ name: Greetings
on: [pull_request_target, issues]
+permissions:
+ contents: read
+
jobs:
greeting:
+ permissions:
+ issues: write
+ pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/first-interaction@v1
with:
- issue-message: 'Thanks for opening your first issue here! Be sure to follow the relevant issue templates, or risk having this issue marked as invalid.'
- pr-message: 'Thanks for opening this pull request! Be sure to follow the [pull request template](https://github.com/linuxserver/docker-steamos/blob/master/.github/PULL_REQUEST_TEMPLATE.md)!'
+ issue-message: 'This image is deprecated. We will not offer support for this image and it will not be updated. The [README](https://github.com/linuxserver/docker-steamos/blob/master/README.md) may have additional information. Thanks for opening your first issue here! Be sure to follow the relevant issue templates, or risk having this issue marked as invalid.'
+ pr-message: 'This image is deprecated. We will not offer support for this image and it will not be updated. The [README](https://github.com/linuxserver/docker-steamos/blob/master/README.md) may have additional information. Thanks for opening this pull request! Be sure to follow the [pull request template](https://github.com/linuxserver/docker-steamos/blob/master/.github/PULL_REQUEST_TEMPLATE.md)!'
repo-token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/package_trigger_scheduler.yml b/.github/workflows/package_trigger_scheduler.yml
index 2ace571..ffe4777 100644
--- a/.github/workflows/package_trigger_scheduler.yml
+++ b/.github/workflows/package_trigger_scheduler.yml
@@ -5,6 +5,9 @@ on:
- cron: '9 18 * * 6'
workflow_dispatch:
+permissions:
+ contents: read
+
jobs:
package-trigger-scheduler:
runs-on: ubuntu-latest
diff --git a/Dockerfile b/Dockerfile
index c1c4640..d788dfb 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,4 +1,4 @@
-FROM ghcr.io/linuxserver/baseimage-kasmvnc:arch
+FROM ghcr.io/linuxserver/baseimage-alpine:3.22
# set version label
ARG BUILD_DATE
@@ -6,99 +6,6 @@ ARG VERSION
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="thelamer"
-# title
-ENV TITLE=SteamOS
-
-RUN \
- echo "**** install vanilla 32 bit packages from multilib ****" && \
- echo '[multilib]' >> /etc/pacman.conf && \
- echo 'Include = /etc/pacman.d/mirrorlist' >> /etc/pacman.conf && \
- pacman -Sy --noconfirm --needed \
- lib32-amdvlk \
- lib32-glibc \
- lib32-libva-intel-driver \
- lib32-libva-mesa-driver \
- lib32-libvdpau \
- lib32-mangohud \
- lib32-mesa-utils \
- lib32-mesa \
- lib32-vulkan-intel \
- lib32-vulkan-mesa-layers \
- lib32-vulkan-radeon \
- lib32-vulkan-swrast \
- libva-intel-driver \
- libva-utils \
- mesa-vdpau \
- vulkan-swrast && \
- echo "**** add steam repos ****" && \
- echo '[jupiter-staging]' >> /etc/pacman.conf && \
- echo 'Server = https://steamdeck-packages.steamos.cloud/archlinux-mirror/$repo/os/$arch' >> /etc/pacman.conf && \
- echo 'SigLevel = Never' >> /etc/pacman.conf && \
- echo '[holo-staging]' >> /etc/pacman.conf && \
- echo 'Server = https://steamdeck-packages.steamos.cloud/archlinux-mirror/$repo/os/$arch' >> /etc/pacman.conf && \
- echo 'SigLevel = Never' >> /etc/pacman.conf && \
- pacman -Syyu --noconfirm && \
- echo "**** install packages ****" && \
- pacman -Sy --noconfirm --needed \
- boost-libs \
- dmidecode \
- dolphin \
- firefox \
- fuse2 \
- gamescope \
- git \
- gperftools \
- jq \
- kate \
- konsole \
- lib32-gamescope \
- lib32-gcc-libs \
- lib32-libpulse \
- lib32-libunwind \
- lib32-mesa \
- lib32-opencl-mesa \
- lib32-renderdoc-minimal \
- mangohud \
- noto-fonts-cjk \
- plasma-desktop \
- sddm \
- steamdeck-kde-presets \
- steam-jupiter-stable \
- steamos-customizations \
- unzip \
- xdg-user-dirs \
- xorg-xwayland \
- zenity && \
- echo "**** install sunshine ****" && \
- cd /tmp && \
- git clone https://aur.archlinux.org/sunshine.git && \
- chown -R abc:abc sunshine && \
- cd sunshine && \
- sed -i '/CXXFLAGS/i sudo chown -R 911:1001 \/config' PKGBUILD && \
- sudo -u abc makepkg -sAci --skipinteg --noconfirm --needed && \
- usermod -G input abc && \
- echo "**** install fix for games using source engine ****" && \
- cd /tmp && \
- git clone https://aur.archlinux.org/lib32-gperftools.git && \
- chown -R abc:abc lib32-gperftools && \
- cd lib32-gperftools && \
- sudo -u abc makepkg -sAci --skipinteg --noconfirm --needed && \
- usermod -G input abc && \
- echo "**** steam tweaks ****" && \
- sed -i 's/-steamdeck//g' /usr/bin/steam && \
- echo "**** kde tweaks ****" && \
- sed -i \
- -e 's/applications:org.kde.discover.desktop,/applications:org.kde.konsole.desktop,/g' \
- -e 's#preferred://browser#applications:firefox.desktop#g' \
- /usr/share/plasma/plasmoids/org.kde.plasma.taskmanager/contents/config/main.xml && \
- echo "**** cleanup ****" && \
- rm -rf \
- /config/.cache \
- /config/.npm \
- /tmp/* \
- /var/cache/pacman/pkg/* \
- /var/lib/pacman/sync/*
-
# add local files
COPY /root /
diff --git a/Jenkinsfile b/Jenkinsfile
index eafd5c8..7bf4551 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -28,7 +28,7 @@ pipeline {
PR_DOCKERHUB_IMAGE = 'lspipepr/steamos'
DIST_IMAGE = 'arch'
MULTIARCH = 'false'
- CI = 'true'
+ CI = 'false'
CI_WEB = 'true'
CI_PORT = '3000'
CI_SSL = 'false'
@@ -70,7 +70,9 @@ pipeline {
fi
done
fi
- docker system prune -f --volumes || : '''
+ docker system prune -f --volumes || :
+ docker image prune -af || :
+ '''
script{
env.EXIT_STATUS = ''
env.LS_RELEASE = sh(
@@ -91,8 +93,12 @@ pipeline {
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/commit/' + env.GIT_COMMIT
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/'
env.PULL_REQUEST = env.CHANGE_ID
- env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/call_issue_pr_tracker.yml ./.github/workflows/call_issues_cron.yml ./.github/workflows/permissions.yml ./.github/workflows/external_trigger.yml'
+ env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./root/etc/s6-overlay/s6-rc.d/init-deprecate/run ./root/etc/s6-overlay/s6-rc.d/init-deprecate/up ./root/etc/s6-overlay/s6-rc.d/init-deprecate/type ./root/etc/s6-overlay/s6-rc.d/init-deprecate/dependencies.d/init-config-end ./root/etc/s6-overlay/s6-rc.d/init-services/dependencies.d/init-deprecate ./root/etc/s6-overlay/s6-rc.d/user/contents.d/init-deprecate'
+ if ( env.SYFT_IMAGE_TAG == null ) {
+ env.SYFT_IMAGE_TAG = 'latest'
+ }
}
+ echo "Using syft image tag ${SYFT_IMAGE_TAG}"
sh '''#! /bin/bash
echo "The default github branch detected as ${GH_DEFAULT_BRANCH}" '''
script{
@@ -202,6 +208,7 @@ pipeline {
env.META_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
+ env.CITEST_IMAGETAG = 'latest'
}
}
}
@@ -227,6 +234,7 @@ pipeline {
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/'
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
+ env.CITEST_IMAGETAG = 'develop'
}
}
}
@@ -252,6 +260,7 @@ pipeline {
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/'
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
+ env.CITEST_IMAGETAG = 'develop'
}
}
}
@@ -274,7 +283,7 @@ pipeline {
-v ${WORKSPACE}:/mnt \
-e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \
-e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \
- ghcr.io/linuxserver/baseimage-alpine:3.20 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
+ ghcr.io/linuxserver/baseimage-alpine:3 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
apk add --no-cache python3 && \
python3 -m venv /lsiopy && \
pip install --no-cache-dir -U pip && \
@@ -325,6 +334,7 @@ pipeline {
fi
echo "Starting Stage 2 - Delete old templates"
OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE/issue.bug.md .github/ISSUE_TEMPLATE/issue.feature.md .github/workflows/call_invalid_helper.yml .github/workflows/stale.yml .github/workflows/package_trigger.yml"
+ OLD_TEMPLATES="${OLD_TEMPLATES} $(echo .github/workflows/{external_trigger,external_trigger_scheduler,package_trigger_scheduler,call_issue_pr_tracker,call_issues_cron}.yml)"
for i in ${OLD_TEMPLATES}; do
if [[ -f "${i}" ]]; then
TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}"
@@ -389,6 +399,10 @@ pipeline {
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
+ mkdir -p \
+ ${TEMPDIR}/repo/${LS_REPO}/root/etc/s6-overlay/s6-rc.d/init-deprecate/dependencies.d \
+ ${TEMPDIR}/repo/${LS_REPO}/root/etc/s6-overlay/s6-rc.d/init-services/dependencies.d \
+ ${TEMPDIR}/repo/${LS_REPO}/root/etc/s6-overlay/s6-rc.d/user/contents.d
cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || :
cp --parents readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/ || :
cd ${TEMPDIR}/repo/${LS_REPO}/
@@ -418,6 +432,19 @@ pipeline {
git add docs/images/docker-${CONTAINER_NAME}.md
echo "Updating docs repo"
git commit -m 'Bot Updating Documentation'
+ git mv docs/images/docker-${CONTAINER_NAME}.md docs/deprecated_images/docker-${CONTAINER_NAME}.md || :
+ if ! command -v yq || ! yq --help | grep -q 'mikefarah'; then
+ YQ_DL_VERSION=$(curl -fsX GET "https://api.github.com/repos/mikefarah/yq/releases/latest" | jq -r '. | .tag_name')
+ echo "No yq found, retrieving from upstream release version ${YQ_DL_VERSION}"
+ curl -fo /usr/local/bin/yq -L "https://github.com/mikefarah/yq/releases/download/${YQ_DL_VERSION}/yq_linux_amd64"
+ chmod +x /usr/local/bin/yq
+ fi
+ if ! yq -e '.plugins.[].redirects.redirect_maps.[] | select(. == "deprecated_images/docker-" + env(CONTAINER_NAME) + ".md")' mkdocs.yml >/dev/null 2>&1; then
+ echo "Updating mkdocs.yml with deprecation info"
+ yq -i '(.plugins.[] | select(.redirects)).redirects.redirect_maps |= . + {"images/docker-" + env(CONTAINER_NAME) + ".md" : "deprecated_images/docker-" + env(CONTAINER_NAME) + ".md"}' mkdocs.yml
+ git add mkdocs.yml
+ fi
+ git commit -m 'Bot Moving Deprecated Documentation' || :
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH} --rebase
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH} || \
(MAXWAIT="10" && echo "Push to docs failed, trying again in ${MAXWAIT} seconds" && \
@@ -439,6 +466,10 @@ pipeline {
echo "Updating Unraid template"
cd ${TEMPDIR}/unraid/templates/
GH_TEMPLATES_DEFAULT_BRANCH=$(git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||')
+ if ! grep -wq "^${CONTAINER_NAME}$" ${TEMPDIR}/unraid/templates/unraid/ignore.list; then
+ echo "${CONTAINER_NAME}" >> ${TEMPDIR}/unraid/templates/unraid/ignore.list
+ git add unraid/ignore.list
+ fi
if grep -wq "^${CONTAINER_NAME}$" ${TEMPDIR}/unraid/templates/unraid/ignore.list && [[ -f ${TEMPDIR}/unraid/templates/unraid/deprecated/${CONTAINER_NAME}.xml ]]; then
echo "Image is on the ignore list, and already in the deprecation folder."
elif grep -wq "^${CONTAINER_NAME}$" ${TEMPDIR}/unraid/templates/unraid/ignore.list; then
@@ -609,13 +640,16 @@ pipeline {
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
+
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
+ declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
+ pids[$!]="$i"
done
- for p in $(jobs -p); do
- wait "$p" || { echo "job $p failed" >&2; exit 1; }
+ for p in "${!pids[@]}"; do
+ wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
done
fi
'''
@@ -675,13 +709,16 @@ pipeline {
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
+
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
+ declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
+ pids[$!]="$i"
done
- for p in $(jobs -p); do
- wait "$p" || { echo "job $p failed" >&2; exit 1; }
+ for p in "${!pids[@]}"; do
+ wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
done
fi
'''
@@ -735,12 +772,14 @@ pipeline {
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
+ declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do
docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} &
+ pids[$!]="$i"
done
- for p in $(jobs -p); do
- wait "$p" || { echo "job $p failed" >&2; exit 1; }
+ for p in "${!pids[@]}"; do
+ wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
done
fi
'''
@@ -751,7 +790,8 @@ pipeline {
if [[ -n "${containers}" ]]; then
docker stop ${containers}
fi
- docker system prune -af --volumes || :
+ docker system prune -f --volumes || :
+ docker image prune -af || :
'''
}
}
@@ -777,7 +817,7 @@ pipeline {
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v ${TEMPDIR}:/tmp \
- ghcr.io/anchore/syft:latest \
+ ghcr.io/anchore/syft:${SYFT_IMAGE_TAG} \
${LOCAL_CONTAINER} -o table=/tmp/package_versions.txt
NEW_PACKAGE_TAG=$(md5sum ${TEMPDIR}/package_versions.txt | cut -c1-8 )
echo "Package tag sha from current packages in buit container is ${NEW_PACKAGE_TAG} comparing to old ${PACKAGE_TAG} from github"
@@ -864,7 +904,7 @@ pipeline {
CI_DOCKERENV="LSIO_FIRST_PARTY=true"
fi
fi
- docker pull ghcr.io/linuxserver/ci:latest
+ docker pull ghcr.io/linuxserver/ci:${CITEST_IMAGETAG}
if [ "${MULTIARCH}" == "true" ]; then
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
@@ -887,7 +927,10 @@ pipeline {
-e WEB_AUTH=\"${CI_AUTH}\" \
-e WEB_PATH=\"${CI_WEBPATH}\" \
-e NODE_NAME=\"${NODE_NAME}\" \
- -t ghcr.io/linuxserver/ci:latest \
+ -e SYFT_IMAGE_TAG=\"${CI_SYFT_IMAGE_TAG:-${SYFT_IMAGE_TAG}}\" \
+ -e COMMIT_SHA=\"${COMMIT_SHA}\" \
+ -e BUILD_NUMBER=\"${BUILD_NUMBER}\" \
+ -t ghcr.io/linuxserver/ci:${CITEST_IMAGETAG} \
python3 test_build.py'''
}
}
@@ -913,10 +956,13 @@ pipeline {
CACHEIMAGE=${i}
fi
done
- docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:latest -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
+ docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:latest -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
+ { if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
if [ -n "${SEMVER}" ]; then
- docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
+ docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
+ { if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
fi
+ docker buildx imagetools create -t ${PUSHIMAGE}:latest ghcr.io/linuxserver/jenkins-builder:empty || true
done
'''
}
@@ -940,20 +986,26 @@ pipeline {
CACHEIMAGE=${i}
fi
done
- docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-latest -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
- docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-latest -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
+ docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-latest -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
+ { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
+ docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-latest -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
+ { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
if [ -n "${SEMVER}" ]; then
- docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
- docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
+ docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
+ { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
+ docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
+ { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
fi
done
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
- docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest
- docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
-
- docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
+ docker buildx imagetools create -t ${MANIFESTIMAGE}:latest -t ${MANIFESTIMAGE}:amd64-latest -t ${MANIFESTIMAGE}:arm64v8-latest ghcr.io/linuxserver/jenkins-builder:empty || true
+ docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} || \
+ { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
+ docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} || \
+ { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
if [ -n "${SEMVER}" ]; then
- docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
+ docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} || \
+ { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
fi
done
'''
@@ -971,23 +1023,41 @@ pipeline {
environment name: 'EXIT_STATUS', value: ''
}
steps {
- echo "Pushing New tag for current commit ${META_TAG}"
- sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
- -d '{"tag":"'${META_TAG}'",\
- "object": "'${COMMIT_SHA}'",\
- "message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\
- "type": "commit",\
- "tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
- echo "Pushing New release for Tag"
sh '''#! /bin/bash
+ echo "Auto-generating release notes"
+ if [ "$(git tag --points-at HEAD)" != "" ]; then
+ echo "Existing tag points to current commit, suggesting no new LS changes"
+ AUTO_RELEASE_NOTES="No changes"
+ else
+ AUTO_RELEASE_NOTES=$(curl -fsL -H "Authorization: token ${GITHUB_TOKEN}" -H "Accept: application/vnd.github+json" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases/generate-notes \
+ -d '{"tag_name":"'${META_TAG}'",\
+ "target_commitish": "master"}' \
+ | jq -r '.body' | sed 's|## What.s Changed||')
+ fi
+ echo "Pushing New tag for current commit ${META_TAG}"
+ curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
+ -d '{"tag":"'${META_TAG}'",\
+ "object": "'${COMMIT_SHA}'",\
+ "message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\
+ "type": "commit",\
+ "tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}'
+ echo "Pushing New release for Tag"
echo "Updating to ${EXT_RELEASE_CLEAN}" > releasebody.json
- echo '{"tag_name":"'${META_TAG}'",\
- "target_commitish": "master",\
- "name": "'${META_TAG}'",\
- "body": "**CI Report:**\\n\\n'${CI_URL:-N/A}'\\n\\n**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**Remote Changes:**\\n\\n' > start
- printf '","draft": false,"prerelease": false}' >> releasebody.json
- paste -d'\\0' start releasebody.json > releasebody.json.done
- curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done'''
+ jq -n \
+ --arg tag_name "$META_TAG" \
+ --arg target_commitish "master" \
+ --arg ci_url "${CI_URL:-N/A}" \
+ --arg ls_notes "$AUTO_RELEASE_NOTES" \
+ --arg remote_notes "$(cat releasebody.json)" \
+ '{
+ "tag_name": $tag_name,
+ "target_commitish": $target_commitish,
+ "name": $tag_name,
+ "body": ("**CI Report:**\\n\\n" + $ci_url + "\\n\\n**LinuxServer Changes:**\\n\\n" + $ls_notes + "\\n\\n**Remote Changes:**\\n\\n" + $remote_notes),
+ "draft": false,
+ "prerelease": false }' > releasebody.json.done
+ curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done
+ '''
}
}
// Add protection to the release branch
@@ -1103,6 +1173,26 @@ EOF
}
}
+ stage('Deprecate/Disable Future Builds') {
+ when {
+ branch "master"
+ environment name: 'CHANGE_ID', value: ''
+ environment name: 'EXIT_STATUS', value: ''
+ }
+ steps {
+ sh '''#! /bin/bash
+ TEMPDIR=$(mktemp -d)
+ mkdir -p ${TEMPDIR}/repo
+ git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
+ cd ${TEMPDIR}/repo/${LS_REPO}
+ git checkout -f master
+ git rm Jenkinsfile
+ git commit -m 'Disabling future builds'
+ git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
+ git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
+ rm -Rf ${TEMPDIR}'''
+ }
+ }
}
/* ######################
Send status to Discord
@@ -1177,6 +1267,7 @@ EOF
done
fi
docker system prune -f --volumes || :
+ docker image prune -af || :
'''
cleanWs()
}
diff --git a/README.md b/README.md
index 54997f2..b1e8e85 100644
--- a/README.md
+++ b/README.md
@@ -5,7 +5,6 @@
[](https://blog.linuxserver.io "all the things you can do with our containers including How-To guides, opinions and much more!")
[](https://linuxserver.io/discord "realtime support / chat with the community and the team.")
[](https://discourse.linuxserver.io "post on our community forum.")
-[](https://fleet.linuxserver.io "an online web interface which displays all of our maintained images.")
[](https://github.com/linuxserver "view the source for all of our repositories.")
[](https://opencollective.com/linuxserver "please consider helping us by either donating or contributing to our budget")
@@ -22,10 +21,13 @@ Find us at:
* [Blog](https://blog.linuxserver.io) - all the things you can do with our containers including How-To guides, opinions and much more!
* [Discord](https://linuxserver.io/discord) - realtime support / chat with the community and the team.
* [Discourse](https://discourse.linuxserver.io) - post on our community forum.
-* [Fleet](https://fleet.linuxserver.io) - an online web interface which displays all of our maintained images.
* [GitHub](https://github.com/linuxserver) - view the source for all of our repositories.
* [Open Collective](https://opencollective.com/linuxserver) - please consider helping us by either donating or contributing to our budget
+# DEPRECATION NOTICE
+This image is deprecated. We will not offer support for this image and it will not be updated.
+
+
# [linuxserver/steamos](https://github.com/linuxserver/docker-steamos)
[](https://scarf.sh)
@@ -37,7 +39,6 @@ Find us at:
[](https://hub.docker.com/r/linuxserver/steamos)
[](https://hub.docker.com/r/linuxserver/steamos)
[](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-steamos/job/master/)
-[](https://ci-tests.linuxserver.io/linuxserver/steamos/latest/index.html)
[SteamOS](https://www.steamdeck.com/) is an Arch based Linux distribution made by Valve Software. This container is a vanilla Arch install with Steam repositories added for software support. **This container will only work with modern AMD/Intel GPUs on a real Linux Host**
@@ -55,10 +56,11 @@ The architectures supported by this image are:
| :----: | :----: | ---- |
| x86-64 | ✅ | amd64-\ |
| arm64 | ❌ | |
-| armhf | ❌ | |
## Application Setup
+**This container is deprecated and never reached maturity. If you are looking for a true remote play solution for Steam we recommend [Wolf](https://github.com/games-on-whales/wolf), please see [here](https://games-on-whales.github.io/wolf/stable/user/quickstart.html) for quickstart instructions to give it a try.**
+
*This container is currently in a Beta state and is developing quickly, things will change constantly and it may crash or not function perfectly especially when mixing Steam remote play frame capture with the web based [KasmVNC](https://kasmweb.com/kasmvnc) frame capture*
**SteamOS is designed for specific AMD based hardware, this container will only work fully on a host with a modern AMD GPU, Intel ARC/iGPU**
@@ -399,6 +401,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions
+* **09.12.25:** - Deprecate container, any future release will be for the Steam application not the underlying OS.
* **23.05.24:** - Document how to get Nvidia to work.
* **15.01.24:** - Install gperftools to fix source games.
* **29.11.23:** - Switch to openbox for bigpicture mode.
diff --git a/jenkins-vars.yml b/jenkins-vars.yml
index 05f6ef2..6767832 100644
--- a/jenkins-vars.yml
+++ b/jenkins-vars.yml
@@ -17,7 +17,7 @@ repo_vars:
- PR_DOCKERHUB_IMAGE = 'lspipepr/steamos'
- DIST_IMAGE = 'arch'
- MULTIARCH = 'false'
- - CI = 'true'
+ - CI = 'false'
- CI_WEB = 'true'
- CI_PORT = '3000'
- CI_SSL = 'false'
diff --git a/readme-vars.yml b/readme-vars.yml
index 309a80c..c0daa8c 100644
--- a/readme-vars.yml
+++ b/readme-vars.yml
@@ -8,6 +8,7 @@ project_blurb: "[SteamOS]({{ project_url }}) is an Arch based Linux distribution
project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}"
project_categories: "Games"
project_blurb_optional_extras_enabled: false
+project_deprecation_status: true
# supported architectures
available_architectures:
- {arch: "{{ arch_x86_64 }}", tag: "latest"}
@@ -63,6 +64,8 @@ cap_add_param_vars:
# application setup block
app_setup_block_enabled: true
app_setup_block: |
+ **This container is deprecated and never reached maturity. If you are looking for a true remote play solution for Steam we recommend [Wolf](https://github.com/games-on-whales/wolf), please see [here](https://games-on-whales.github.io/wolf/stable/user/quickstart.html) for quickstart instructions to give it a try.**
+
*This container is currently in a Beta state and is developing quickly, things will change constantly and it may crash or not function perfectly especially when mixing Steam remote play frame capture with the web based [KasmVNC](https://kasmweb.com/kasmvnc) frame capture*
**SteamOS is designed for specific AMD based hardware, this container will only work fully on a host with a modern AMD GPU, Intel ARC/iGPU**
@@ -187,6 +190,7 @@ init_diagram: |
"steamos:latest" <- Base Images
# changelog
changelogs:
+ - {date: "09.12.25:", desc: "Deprecate container, any future release will be for the Steam application not the underlying OS."}
- {date: "23.05.24:", desc: "Document how to get Nvidia to work."}
- {date: "15.01.24:", desc: "Install gperftools to fix source games."}
- {date: "29.11.23:", desc: "Switch to openbox for bigpicture mode."}
diff --git a/root/etc/s6-overlay/s6-rc.d/init-deprecate/dependencies.d/init-config-end b/root/etc/s6-overlay/s6-rc.d/init-deprecate/dependencies.d/init-config-end
new file mode 100644
index 0000000..e69de29
diff --git a/root/etc/s6-overlay/s6-rc.d/init-deprecate/run b/root/etc/s6-overlay/s6-rc.d/init-deprecate/run
new file mode 100755
index 0000000..20fa47e
--- /dev/null
+++ b/root/etc/s6-overlay/s6-rc.d/init-deprecate/run
@@ -0,0 +1,14 @@
+#!/usr/bin/with-contenv bash
+# shellcheck shell=bash
+
+echo '
+╔════════════════════════════════════════════════════╗
+╠════════════════════════════════════════════════════╣
+║ ║
+║ This image is deprecated. ║
+║ We will not offer support for this image ║
+║ and it will not be updated. ║
+║ ║
+╠════════════════════════════════════════════════════╣
+╚════════════════════════════════════════════════════╝
+'
diff --git a/root/etc/s6-overlay/s6-rc.d/init-deprecate/type b/root/etc/s6-overlay/s6-rc.d/init-deprecate/type
new file mode 100644
index 0000000..bdd22a1
--- /dev/null
+++ b/root/etc/s6-overlay/s6-rc.d/init-deprecate/type
@@ -0,0 +1 @@
+oneshot
diff --git a/root/etc/s6-overlay/s6-rc.d/init-deprecate/up b/root/etc/s6-overlay/s6-rc.d/init-deprecate/up
new file mode 100644
index 0000000..e69de29
diff --git a/root/etc/s6-overlay/s6-rc.d/init-services/dependencies.d/init-deprecate b/root/etc/s6-overlay/s6-rc.d/init-services/dependencies.d/init-deprecate
new file mode 100644
index 0000000..e69de29
diff --git a/root/etc/s6-overlay/s6-rc.d/svc-kasmvnc/run b/root/etc/s6-overlay/s6-rc.d/svc-kasmvnc/run
deleted file mode 100755
index fbfe405..0000000
--- a/root/etc/s6-overlay/s6-rc.d/svc-kasmvnc/run
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/with-contenv bash
-
-# Pass gpu flags if mounted
-if ls /dev/dri/renderD* 1> /dev/null 2>&1 && [ -z ${DISABLE_DRI+x} ] && ! which nvidia-smi; then
- HW3D="-hw3d"
-fi
-if [ -z ${DRINODE+x} ]; then
- DRINODE="/dev/dri/renderD128"
-fi
-
-# Use a default resolution if unset
-if [ -z ${RESOLUTION+x} ]; then
- RESOLUTION="1920x1080"
-fi
-
-exec s6-setuidgid abc \
- /usr/local/bin/Xvnc $DISPLAY \
- ${HW3D} \
- -PublicIP 127.0.0.1 \
- -drinode ${DRINODE} \
- -disableBasicAuth \
- -SecurityTypes None \
- -AlwaysShared \
- -http-header Cross-Origin-Embedder-Policy=require-corp \
- -http-header Cross-Origin-Opener-Policy=same-origin \
- -geometry ${RESOLUTION} \
- -sslOnly 0 \
- -RectThreads 0 \
- -websocketPort 6901 \
- -interface 0.0.0.0 \
- -Log *:stdout:10
diff --git a/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-deprecate b/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-deprecate
new file mode 100644
index 0000000..e69de29