mirror of
https://github.com/ublue-os/bazzite.git
synced 2025-02-27 00:40:23 +00:00
rpm-ostree errors out when the package version being replaced on the system matches the replacement. Given pipewire versions are mismatched relatively frequently, it's better we keep the fix and return true
526 lines
27 KiB
Docker
526 lines
27 KiB
Docker
ARG BASE_IMAGE_NAME="${BASE_IMAGE_NAME:-kinoite}"
|
|
ARG IMAGE_FLAVOR="${IMAGE_FLAVOR:-main}"
|
|
ARG AKMODS_FLAVOR="${AKMODS_FLAVOR:-main}"
|
|
ARG SOURCE_IMAGE="${SOURCE_IMAGE:-$BASE_IMAGE_NAME-$IMAGE_FLAVOR}"
|
|
ARG BASE_IMAGE="ghcr.io/ublue-os/${SOURCE_IMAGE}"
|
|
ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION:-39}"
|
|
|
|
FROM ${BASE_IMAGE}:${FEDORA_MAJOR_VERSION} AS bazzite
|
|
|
|
ARG IMAGE_NAME="${IMAGE_NAME:-bazzite}"
|
|
ARG IMAGE_VENDOR="${IMAGE_VENDOR:-ublue-os}"
|
|
ARG IMAGE_FLAVOR="${IMAGE_FLAVOR:-main}"
|
|
ARG AKMODS_FLAVOR="${AKMODS_FLAVOR:-main}"
|
|
ARG BASE_IMAGE_NAME="${BASE_IMAGE_NAME:-kinoite}"
|
|
ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION:-39}"
|
|
|
|
COPY system_files/desktop/shared system_files/desktop/${BASE_IMAGE_NAME} /
|
|
|
|
# Setup Copr repos
|
|
RUN wget https://copr.fedorainfracloud.org/coprs/kylegospo/bazzite/repo/fedora-$(rpm -E %fedora)/kylegospo-bazzite-fedora-$(rpm -E %fedora).repo -O /etc/yum.repos.d/_copr_kylegospo-bazzite.repo && \
|
|
wget https://copr.fedorainfracloud.org/coprs/kylegospo/bazzite-multilib/repo/fedora-$(rpm -E %fedora)/kylegospo-bazzite-multilib-fedora-$(rpm -E %fedora).repo?arch=x86_64 -O /etc/yum.repos.d/_copr_kylegospo-bazzite-multilib.repo && \
|
|
wget https://copr.fedorainfracloud.org/coprs/ublue-os/staging/repo/fedora-$(rpm -E %fedora)/ublue-os-staging-fedora-$(rpm -E %fedora).repo -O /etc/yum.repos.d/_copr_ublue-os-staging.repo && \
|
|
wget https://copr.fedorainfracloud.org/coprs/ublue-os/bling/repo/fedora-$(rpm -E %fedora)/ublue-os-bling-fedora-$(rpm -E %fedora).repo -O /etc/yum.repos.d/_copr_ublue-os-bling.repo && \
|
|
wget https://copr.fedorainfracloud.org/coprs/kylegospo/system76-scheduler/repo/fedora-$(rpm -E %fedora)/kylegospo-system76-scheduler-fedora-$(rpm -E %fedora).repo -O /etc/yum.repos.d/_copr_kylegospo-system76-scheduler.repo && \
|
|
wget https://copr.fedorainfracloud.org/coprs/kylegospo/LatencyFleX/repo/fedora-$(rpm -E %fedora)/kylegospo-LatencyFleX-fedora-$(rpm -E %fedora).repo -O /etc/yum.repos.d/_copr_kylegospo-latencyflex.repo && \
|
|
wget https://copr.fedorainfracloud.org/coprs/kylegospo/hl2linux-selinux/repo/fedora-$(rpm -E %fedora)/kylegospo-hl2linux-selinux-fedora-$(rpm -E %fedora).repo -O /etc/yum.repos.d/_copr_kylegospo-hl2linux-selinux.repo && \
|
|
wget https://copr.fedorainfracloud.org/coprs/kylegospo/obs-vkcapture/repo/fedora-$(rpm -E %fedora)/kylegospo-obs-vkcapture-fedora-$(rpm -E %fedora).repo?arch=x86_64 -O /etc/yum.repos.d/_copr_kylegospo-obs-vkcapture.repo && \
|
|
wget https://copr.fedorainfracloud.org/coprs/kylegospo/wallpaper-engine-kde-plugin/repo/fedora-$(rpm -E %fedora)/kylegospo-wallpaper-engine-kde-plugin-fedora-$(rpm -E %fedora).repo -O /etc/yum.repos.d/_copr_kylegospo-wallpaper-engine-kde-plugin.repo && \
|
|
wget https://copr.fedorainfracloud.org/coprs/kylegospo/gnome-vrr/repo/fedora-$(rpm -E %fedora)/kylegospo-gnome-vrr-fedora-$(rpm -E %fedora).repo -O /etc/yum.repos.d/_copr_kylegospo-gnome-vrr.repo && \
|
|
wget https://copr.fedorainfracloud.org/coprs/kylegospo/vk_hdr_layer/repo/fedora-$(rpm -E %fedora)/kylegospo-vk_hdr_layer-fedora-$(rpm -E %fedora).repo?arch=x86_64 -O /etc/yum.repos.d/_copr_kylegospo-vk_hdr_layer.repo && \
|
|
wget https://copr.fedorainfracloud.org/coprs/ycollet/audinux/repo/fedora-$(rpm -E %fedora)/ycollet-audinux-fedora-$(rpm -E %fedora).repo -O /etc/yum.repos.d/_copr_ycollet-audinux.repo && \
|
|
wget https://copr.fedorainfracloud.org/coprs/kylegospo/rom-properties/repo/fedora-$(rpm -E %fedora)/kylegospo-rom-properties-fedora-$(rpm -E %fedora).repo -O /etc/yum.repos.d/_copr_kylegospo-rom-properties.repo && \
|
|
wget https://pkgs.tailscale.com/stable/fedora/tailscale.repo -O /etc/yum.repos.d/tailscale.repo && \
|
|
sed -i 's@gpgcheck=1@gpgcheck=0@g' /etc/yum.repos.d/tailscale.repo
|
|
|
|
# Install kernel-fsync
|
|
RUN case "${IMAGE_FLAVOR}" in \
|
|
main|ally) \
|
|
wget https://copr.fedorainfracloud.org/coprs/sentry/kernel-fsync/repo/fedora-$(rpm -E %fedora)/sentry-kernel-fsync-fedora-$(rpm -E %fedora).repo -O /etc/yum.repos.d/_copr_sentry-kernel-fsync.repo && \
|
|
rpm-ostree cliwrap install-to-root / && \
|
|
rpm-ostree override replace \
|
|
--experimental \
|
|
--from repo=copr:copr.fedorainfracloud.org:sentry:kernel-fsync \
|
|
kernel \
|
|
kernel-core \
|
|
kernel-modules \
|
|
kernel-modules-core \
|
|
kernel-modules-extra \
|
|
;; \
|
|
esac
|
|
|
|
# Add ublue packages, add needed negativo17 repo and then immediately disable due to incompatibility with RPMFusion
|
|
COPY --from=ghcr.io/ublue-os/akmods:${AKMODS_FLAVOR}-${FEDORA_MAJOR_VERSION} /rpms /tmp/akmods-rpms
|
|
RUN sed -i 's@enabled=0@enabled=1@g' /etc/yum.repos.d/_copr_ublue-os-akmods.repo && \
|
|
wget https://negativo17.org/repos/fedora-multimedia.repo -O /etc/yum.repos.d/negativo17-fedora-multimedia.repo && \
|
|
rpm-ostree install \
|
|
/tmp/akmods-rpms/kmods/*xpadneo*.rpm \
|
|
/tmp/akmods-rpms/kmods/*xpad-noone*.rpm \
|
|
/tmp/akmods-rpms/kmods/*xone*.rpm \
|
|
/tmp/akmods-rpms/kmods/*openrazer*.rpm \
|
|
/tmp/akmods-rpms/kmods/*v4l2loopback*.rpm \
|
|
/tmp/akmods-rpms/kmods/*wl*.rpm \
|
|
/tmp/akmods-rpms/kmods/*gcadapter_oc*.rpm \
|
|
/tmp/akmods-rpms/kmods/*nct6687*.rpm \
|
|
/tmp/akmods-rpms/kmods/*ryzen-smu*.rpm && \
|
|
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/negativo17-fedora-multimedia.repo
|
|
|
|
# Remove unneeded packages
|
|
RUN rpm-ostree override remove \
|
|
ublue-os-update-services \
|
|
firefox \
|
|
firefox-langpacks \
|
|
htop \
|
|
power-profiles-daemon
|
|
|
|
# Install new packages
|
|
RUN rpm-ostree install \
|
|
ublue-update \
|
|
discover-overlay \
|
|
python3-pip \
|
|
libadwaita \
|
|
duperemove \
|
|
xwininfo \
|
|
xrandr \
|
|
rmlint \
|
|
compsize \
|
|
input-remapper \
|
|
system76-scheduler \
|
|
tuned \
|
|
tuned-utils \
|
|
tuned-utils-systemtap \
|
|
tuned-gtk \
|
|
hl2linux-selinux \
|
|
ladspa-caps-plugins \
|
|
ladspa-noise-suppression-for-voice \
|
|
python3-icoextract \
|
|
tailscale \
|
|
btop \
|
|
fish \
|
|
xdotool \
|
|
wmctrl \
|
|
libcec \
|
|
yad \
|
|
f3 \
|
|
pulseaudio-utils \
|
|
unrar \
|
|
lzip \
|
|
libxcrypt-compat \
|
|
mesa-libGLU \
|
|
vulkan-tools \
|
|
glibc.i686 \
|
|
extest.i686 \
|
|
twitter-twemoji-fonts \
|
|
google-noto-sans-cjk-fonts \
|
|
lato-fonts \
|
|
fira-code-fonts \
|
|
glow \
|
|
gum && \
|
|
ln -s /usr/share/fonts/google-noto-sans-cjk-fonts /usr/share/fonts/noto-cjk && \
|
|
wget https://raw.githubusercontent.com/scaronni/steam-proton-mf-wmv/master/installcab.py -O /usr/bin/installcab && \
|
|
wget https://github.com/scaronni/steam-proton-mf-wmv/blob/master/install-mf-wmv.sh -O /usr/bin/install-mf-wmv && \
|
|
sed -i 's@python3 installcab.py@/usr/bin/installcab@g' /usr/bin/install-mf-wmv && \
|
|
wget https://raw.githubusercontent.com/jlu5/icoextract/master/exe-thumbnailer.thumbnailer -O /usr/share/thumbnailers/exe-thumbnailer.thumbnailer && \
|
|
wget https://gitlab.com/popsulfr/steamos-btrfs/-/raw/main/files/usr/lib/systemd/system/btrfs-dedup@.service -O /usr/lib/systemd/system/btrfs-dedup@.service && \
|
|
wget https://gitlab.com/popsulfr/steamos-btrfs/-/raw/main/files/usr/lib/systemd/system/btrfs-dedup@.timer -O /usr/lib/systemd/system/btrfs-dedup@.timer
|
|
|
|
# Install Steam & Lutris, plus supporting packages
|
|
RUN rpm-ostree override replace \
|
|
--experimental \
|
|
--from repo=updates \
|
|
pipewire \
|
|
pipewire-alsa \
|
|
pipewire-gstreamer \
|
|
pipewire-jack-audio-connection-kit \
|
|
pipewire-jack-audio-connection-kit-libs \
|
|
pipewire-libs \
|
|
pipewire-pulseaudio \
|
|
pipewire-utils \
|
|
|| true && \
|
|
rpm-ostree install \
|
|
vulkan-loader.i686 \
|
|
alsa-lib.i686 \
|
|
fontconfig.i686 \
|
|
gtk2.i686 \
|
|
libICE.i686 \
|
|
libnsl.i686 \
|
|
libxcrypt-compat.i686 \
|
|
libpng12.i686 \
|
|
libXext.i686 \
|
|
libXinerama.i686 \
|
|
libXtst.i686 \
|
|
libXScrnSaver.i686 \
|
|
NetworkManager-libnm.i686 \
|
|
nss.i686 \
|
|
pulseaudio-libs.i686 \
|
|
libcurl.i686 \
|
|
systemd-libs.i686 \
|
|
libva.i686 \
|
|
libvdpau.i686 \
|
|
libdbusmenu-gtk3.i686 \
|
|
libatomic.i686 \
|
|
pipewire-alsa.i686 \
|
|
clinfo && \
|
|
sed -i '0,/enabled=0/s//enabled=1/' /etc/yum.repos.d/rpmfusion-nonfree-steam.repo && \
|
|
sed -i '0,/enabled=1/s//enabled=0/' /etc/yum.repos.d/rpmfusion-nonfree.repo && \
|
|
sed -i '0,/enabled=1/s//enabled=0/' /etc/yum.repos.d/rpmfusion-nonfree-updates.repo && \
|
|
sed -i '0,/enabled=1/s//enabled=0/' /etc/yum.repos.d/fedora-updates.repo && \
|
|
rpm-ostree install \
|
|
steam && \
|
|
sed -i '0,/enabled=1/s//enabled=0/' /etc/yum.repos.d/rpmfusion-nonfree-steam.repo && \
|
|
sed -i '0,/enabled=0/s//enabled=1/' /etc/yum.repos.d/rpmfusion-nonfree.repo && \
|
|
sed -i '0,/enabled=0/s//enabled=1/' /etc/yum.repos.d/rpmfusion-nonfree-updates.repo && \
|
|
sed -i '0,/enabled=0/s//enabled=1/' /etc/yum.repos.d/fedora-updates.repo && \
|
|
rpm-ostree install \
|
|
lutris \
|
|
wxGTK \
|
|
libFAudio \
|
|
wine-core.x86_64 \
|
|
wine-core.i686 \
|
|
wine-pulseaudio.x86_64 \
|
|
wine-pulseaudio.i686 \
|
|
winetricks \
|
|
protontricks \
|
|
latencyflex-vulkan-layer \
|
|
vkBasalt.x86_64 \
|
|
vkBasalt.i686 \
|
|
mangohud.x86_64 \
|
|
mangohud.i686 \
|
|
vk_hdr_layer.x86_64 \
|
|
vk_hdr_layer.i686 \
|
|
gperftools-libs.i686 \
|
|
goverlay && \
|
|
if [[ ! "${IMAGE_FLAVOR}" =~ "surface" ]]; then \
|
|
rpm-ostree install \
|
|
obs-vkcapture.x86_64 \
|
|
obs-vkcapture.i686 \
|
|
; fi && \
|
|
ln -s /usr/bin/wine64 /usr/bin/wine && \
|
|
wget $(curl https://api.github.com/repos/ishitatsuyuki/LatencyFleX/releases/latest | jq -r '.assets[] | select(.name| test(".*.tar.xz$")).browser_download_url') -O /tmp/latencyflex.tar.xz && \
|
|
mkdir -p /tmp/latencyflex && \
|
|
tar --strip-components 1 -xvf /tmp/latencyflex.tar.xz -C /tmp/latencyflex && \
|
|
rm -f /tmp/latencyflex.tar.xz && \
|
|
cp -r /tmp/latencyflex/wine/usr/lib/wine/* /usr/lib64/wine/ && \
|
|
rm -rf /tmp/latencyflex && \
|
|
wget https://raw.githubusercontent.com/Shringe/LatencyFleX-Installer/main/install.sh -O /usr/bin/latencyflex && \
|
|
sed -i 's@/usr/lib/wine/@/usr/lib64/wine/@g' /usr/bin/latencyflex && \
|
|
sed -i 's@"dxvk.conf"@"/usr/share/latencyflex/dxvk.conf"@g' /usr/bin/latencyflex && \
|
|
chmod +x /usr/bin/latencyflex
|
|
|
|
# Configure KDE & GNOME
|
|
RUN if grep -q "kinoite" <<< "${BASE_IMAGE_NAME}"; then \
|
|
rpm-ostree override remove \
|
|
plasma-welcome \
|
|
qt5-qdbusviewer && \
|
|
rpm-ostree install \
|
|
steamdeck-kde-presets-desktop \
|
|
wallpaper-engine-kde-plugin \
|
|
kdeconnectd \
|
|
kdeplasma-addons \
|
|
rom-properties-kf5 && \
|
|
if grep -qv "nvidia" <<< "${IMAGE_NAME}"; then \
|
|
rpm-ostree install colord-kde \
|
|
; fi && \
|
|
git clone https://github.com/maxiberta/kwin-system76-scheduler-integration.git --depth 1 /tmp/kwin-system76-scheduler-integration && \
|
|
git clone https://github.com/catsout/wallpaper-engine-kde-plugin.git --depth 1 /tmp/wallpaper-engine-kde-plugin && \
|
|
kpackagetool5 --type=KWin/Script --global --install /tmp/kwin-system76-scheduler-integration && \
|
|
kpackagetool5 --type=Plasma/Wallpaper --global --install /tmp/wallpaper-engine-kde-plugin/plugin && \
|
|
rm -rf /tmp/kwin-system76-scheduler-integration && \
|
|
rm -rf /tmp/wallpaper-engine-kde-plugin \
|
|
; else \
|
|
rpm-ostree override replace \
|
|
--experimental \
|
|
--from repo=copr:copr.fedorainfracloud.org:kylegospo:gnome-vrr \
|
|
mutter \
|
|
mutter-common \
|
|
gnome-control-center \
|
|
gnome-control-center-filesystem && \
|
|
rpm-ostree install \
|
|
gnome-shell-extension-tailscale-gnome-qs \
|
|
steamdeck-backgrounds \
|
|
gnome-randr-rust \
|
|
gnome-shell-extension-user-theme \
|
|
gnome-shell-extension-gsconnect \
|
|
nautilus-gsconnect \
|
|
gnome-shell-extension-system76-scheduler \
|
|
gnome-shell-extension-compiz-windows-effect \
|
|
gnome-shell-extension-just-perfection \
|
|
gnome-shell-extension-blur-my-shell \
|
|
gnome-shell-extension-hanabi \
|
|
gnome-shell-extension-gamerzilla \
|
|
gnome-shell-extension-bazzite-menu \
|
|
rom-properties-gtk3 \
|
|
openssh-askpass && \
|
|
rpm-ostree override remove \
|
|
gnome-software-rpm-ostree \
|
|
gnome-classic-session \
|
|
gnome-tour \
|
|
gnome-extensions-app \
|
|
gnome-initial-setup \
|
|
; fi
|
|
|
|
# Install gamescope-limiter patched Mesa
|
|
RUN rpm-ostree override replace \
|
|
--experimental \
|
|
--from repo=copr:copr.fedorainfracloud.org:kylegospo:bazzite-multilib \
|
|
mesa-filesystem \
|
|
mesa-dri-drivers \
|
|
mesa-libEGL \
|
|
mesa-libEGL-devel \
|
|
mesa-libgbm \
|
|
mesa-libGL \
|
|
mesa-libglapi \
|
|
mesa-vulkan-drivers \
|
|
mesa-libOSMesa \
|
|
https://download.copr.fedorainfracloud.org/results/kylegospo/bazzite-multilib/fedora-39-x86_64/06620403-bluez/bluez-5.70-1.fc39.bazzite.0.0.git.1708.6d2818cf.x86_64.rpm \
|
|
https://download.copr.fedorainfracloud.org/results/kylegospo/bazzite-multilib/fedora-39-x86_64/06620403-bluez/bluez-cups-5.70-1.fc39.bazzite.0.0.git.1708.6d2818cf.x86_64.rpm \
|
|
https://download.copr.fedorainfracloud.org/results/kylegospo/bazzite-multilib/fedora-39-x86_64/06620403-bluez/bluez-libs-5.70-1.fc39.bazzite.0.0.git.1708.6d2818cf.x86_64.rpm \
|
|
https://download.copr.fedorainfracloud.org/results/kylegospo/bazzite-multilib/fedora-39-x86_64/06620403-bluez/bluez-obexd-5.70-1.fc39.bazzite.0.0.git.1708.6d2818cf.x86_64.rpm \
|
|
https://download.copr.fedorainfracloud.org/results/kylegospo/bazzite-multilib/fedora-39-i386/06620403-bluez/bluez-libs-5.70-1.fc39.bazzite.0.0.git.1708.6d2818cf.i686.rpm
|
|
|
|
# Install Gamescope, ROCM, and Waydroid on non-Nvidia images
|
|
RUN if grep -qv "nvidia" <<< "${IMAGE_NAME}"; then \
|
|
rpm-ostree install \
|
|
gamescope.x86_64 \
|
|
gamescope-libs.i686 \
|
|
rocm-hip \
|
|
rocm-opencl \
|
|
rocm-clinfo \
|
|
waydroid \
|
|
weston && \
|
|
sed -i~ -E 's/=.\$\(command -v (nft|ip6?tables-legacy).*/=/g' /usr/lib/waydroid/data/scripts/waydroid-net.sh && \
|
|
rm -f /usr/etc/modprobe.d/nvidia.conf \
|
|
; else \
|
|
rm -f /usr/etc/modprobe.d/amdgpu.conf \
|
|
; fi
|
|
|
|
# Cleanup & Finalize
|
|
COPY system_files/shared /
|
|
RUN /tmp/image-info.sh && \
|
|
sed -i 's@/usr/bin/steam@/usr/bin/bazzite-steam@g' /usr/share/applications/steam.desktop && \
|
|
rm /usr/share/applications/shredder.desktop && \
|
|
rm /usr/share/vulkan/icd.d/lvp_icd.*.json && \
|
|
mkdir -p "/usr/etc/profile.d/" && \
|
|
ln -s "/usr/share/ublue-os/firstboot/launcher/login-profile.sh" \
|
|
"/usr/etc/profile.d/ublue-firstboot.sh" && \
|
|
mkdir -p "/usr/etc/xdg/autostart" && \
|
|
cp "/usr/share/applications/discover_overlay.desktop" "/usr/etc/xdg/autostart/discover_overlay.desktop" && \
|
|
sed -i 's@Exec=discover-overlay@Exec=/usr/bin/bazzite-discover-overlay@g' /usr/etc/xdg/autostart/discover_overlay.desktop && \
|
|
rm /usr/share/applications/discover_overlay.desktop && \
|
|
cp "/usr/share/ublue-os/firstboot/yafti.yml" "/etc/yafti.yml" && \
|
|
pip install --prefix=/usr yafti && \
|
|
pip install --prefix=/usr hyfetch && \
|
|
sed -i 's/stage/none/g' /etc/rpm-ostreed.conf && \
|
|
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/_copr_ublue-os-akmods.repo && \
|
|
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/_copr_kylegospo-bazzite.repo && \
|
|
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/_copr_kylegospo-bazzite-multilib.repo && \
|
|
sed -i 's@enabled=1@enabeld=0@g' /etc/yum.repos.d/_copr_ublue-os-staging.repo && \
|
|
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/_copr_ublue-os-bling.repo && \
|
|
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/_copr_kylegospo-system76-scheduler.repo && \
|
|
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/_copr_kylegospo-latencyflex.repo && \
|
|
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/_copr_kylegospo-hl2linux-selinux.repo && \
|
|
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/_copr_kylegospo-obs-vkcapture.repo && \
|
|
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/_copr_kylegospo-wallpaper-engine-kde-plugin.repo && \
|
|
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/_copr_kylegospo-gnome-vrr.repo && \
|
|
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/_copr_kylegospo-vk_hdr_layer.repo && \
|
|
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/_copr_ycollet-audinux.repo && \
|
|
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/_copr_kylegospo-rom-properties.repo && \
|
|
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/tailscale.repo && \
|
|
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/charm.repo && \
|
|
sed -i 's/#DefaultTimeoutStopSec.*/DefaultTimeoutStopSec=15s/' /etc/systemd/user.conf && \
|
|
sed -i 's/#DefaultTimeoutStopSec.*/DefaultTimeoutStopSec=15s/' /etc/systemd/system.conf && \
|
|
mkdir -p /usr/etc/flatpak/remotes.d && \
|
|
wget -q https://dl.flathub.org/repo/flathub.flatpakrepo -P /usr/etc/flatpak/remotes.d && \
|
|
systemctl enable com.system76.Scheduler.service && \
|
|
systemctl enable tuned.service && \
|
|
systemctl enable btrfs-dedup@var-home.timer && \
|
|
systemctl enable input-remapper.service && \
|
|
systemctl unmask bazzite-flatpak-manager.service && \
|
|
systemctl enable bazzite-flatpak-manager.service && \
|
|
systemctl disable rpm-ostreed-automatic.timer && \
|
|
systemctl enable ublue-update.timer && \
|
|
systemctl enable bazzite-hardware-setup.service && \
|
|
systemctl enable tailscaled.service && \
|
|
systemctl enable dev-hugepages1G.mount && \
|
|
systemctl --global enable bazzite-user-setup.service && \
|
|
if grep -q "kinoite" <<< "${BASE_IMAGE_NAME}"; then \
|
|
sed -i '/^PRETTY_NAME/s/Kinoite/Bazzite/' /usr/lib/os-release && \
|
|
systemctl --global enable com.system76.Scheduler.dbusproxy.service \
|
|
; else \
|
|
rm /usr/share/applications/yad-icon-browser.desktop && \
|
|
rm /usr/share/applications/com.github.rafostar.Clapper.desktop && \
|
|
sed -i '/^PRETTY_NAME/s/Silverblue/Bazzite GNOME/' /usr/lib/os-release \
|
|
; fi && \
|
|
if grep -qv "nvidia" <<< "${IMAGE_NAME}"; then \
|
|
systemctl disable waydroid-container.service && \
|
|
sed -i 's@Exec=waydroid first-launch@Exec=/usr/bin/waydroid-launcher first-launch\nX-Steam-Library-Capsule=/usr/share/applications/Waydroid/capsule.png\nX-Steam-Library-Hero=/usr/share/applications/Waydroid/hero.png\nX-Steam-Library-Logo=/usr/share/applications/Waydroid/logo.png\nX-Steam-Library-StoreCapsule=/usr/share/applications/Waydroid/store-logo.png\nX-Steam-Controller-Template=Desktop@g' /usr/share/applications/Waydroid.desktop && \
|
|
rm /usr/share/wayland-sessions/weston.desktop && \
|
|
wget https://raw.githubusercontent.com/Quackdoc/waydroid-scripts/main/waydroid-choose-gpu.sh -O /usr/bin/waydroid-choose-gpu && \
|
|
chmod +x /usr/bin/waydroid-choose-gpu \
|
|
; fi && \
|
|
mkdir -p /usr/etc/default && \
|
|
rm -rf \
|
|
/tmp/* \
|
|
/var/* && \
|
|
mkdir -p /var/tmp && \
|
|
chmod -R 1777 /var/tmp && \
|
|
mkdir -p /var/lib/bluetooth && \
|
|
chmod -R 755 /var/lib/bluetooth && \
|
|
ostree container commit
|
|
|
|
FROM bazzite as bazzite-deck
|
|
|
|
ARG IMAGE_NAME="${IMAGE_NAME:-bazzite-deck}"
|
|
ARG IMAGE_VENDOR="${IMAGE_VENDOR:-ublue-os}"
|
|
ARG IMAGE_FLAVOR="${IMAGE_FLAVOR:-main}"
|
|
ARG BASE_IMAGE_NAME="${BASE_IMAGE_NAME:-kinoite}"
|
|
ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION:-39}"
|
|
|
|
COPY system_files/deck/shared system_files/deck/${BASE_IMAGE_NAME} /
|
|
|
|
# Setup Copr repos
|
|
RUN sed -i 's@enabled=0@enabled=1@g' /etc/yum.repos.d/_copr_ublue-os-akmods.repo && \
|
|
sed -i 's@enabled=0@enabled=1@g' /etc/yum.repos.d/_copr_kylegospo-bazzite.repo && \
|
|
sed -i 's@enabled=0@enabled=1@g' /etc/yum.repos.d/_copr_kylegospo-bazzite-multilib.repo && \
|
|
sed -i 's@enabled=0@enabled=1@g' /etc/yum.repos.d/_copr_kylegospo-latencyflex.repo && \
|
|
sed -i 's@enabled=0@enabled=1@g' /etc/yum.repos.d/_copr_kylegospo-hl2linux-selinux.repo && \
|
|
sed -i 's@enabled=0@enabled=1@g' /etc/yum.repos.d/_copr_kylegospo-obs-vkcapture.repo && \
|
|
sed -i 's@enabled=0@enabled=1@g' /etc/yum.repos.d/_copr_kylegospo-wallpaper-engine-kde-plugin.repo && \
|
|
sed -i 's@enabled=0@enabled=1@g' /etc/yum.repos.d/_copr_ycollet-audinux.repo
|
|
|
|
# Configure KDE & GNOME
|
|
RUN if grep -q "kinoite" <<< "${BASE_IMAGE_NAME}"; then \
|
|
rpm-ostree override remove \
|
|
steamdeck-kde-presets-desktop && \
|
|
rpm-ostree install \
|
|
steamdeck-kde-presets \
|
|
; else \
|
|
rpm-ostree install \
|
|
steamdeck-gnome-presets \
|
|
gnome-shell-extension-caribou-blocker \
|
|
sddm && \
|
|
wget https://raw.githubusercontent.com/doitsujin/dxvk/master/dxvk.conf -O /usr/etc/dxvk-example.conf && \
|
|
sed -i '/show-gamemode/{n;s/false/true/}' /usr/share/gnome-shell/extensions/logomenu@aryan_k/schemas/org.gnome.shell.extensions.logo-menu.gschema.xml && \
|
|
rm -f /usr/share/gnome-shell/extensions/logomenu@aryan_k/schemas/gschemas.compiled && \
|
|
glib-compile-schemas /usr/share/gnome-shell/extensions/logomenu@aryan_k/schemas/ \
|
|
; fi
|
|
|
|
# Install new packages
|
|
# Dock updater - done manually due to proprietary parts preventing it from being on Copr
|
|
# Neptune firmware - done manually due to "TBD" license on needed audio firmware
|
|
RUN rpm-ostree install \
|
|
jupiter-fan-control \
|
|
jupiter-hw-support-btrfs \
|
|
steamdeck-dsp \
|
|
galileo-mura \
|
|
powerbuttond \
|
|
HandyGCCS \
|
|
vpower \
|
|
ds-inhibit \
|
|
steam_notif_daemon \
|
|
ryzenadj \
|
|
steam-patch \
|
|
sdgyrodsu \
|
|
sddm-sugar-steamOS \
|
|
ibus-pinyin \
|
|
ibus-table-chinese-cangjie \
|
|
ibus-table-chinese-quick \
|
|
socat \
|
|
zstd \
|
|
zenity \
|
|
newt \
|
|
qt5-qtvirtualkeyboard \
|
|
xorg-x11-server-Xvfb \
|
|
python-vdf \
|
|
python-crcmod && \
|
|
git clone https://gitlab.com/evlaV/jupiter-dock-updater-bin.git \
|
|
--depth 1 \
|
|
/tmp/jupiter-dock-updater-bin && \
|
|
mv -v /tmp/jupiter-dock-updater-bin/packaged/usr/lib/jupiter-dock-updater /usr/lib/jupiter-dock-updater && \
|
|
rm -rf /tmp/jupiter-dock-updater-bin && \
|
|
mkdir -p /tmp/linux-firmware-neptune && \
|
|
wget https://gitlab.com/evlaV/linux-firmware-neptune/-/raw/jupiter/cs35l41-dsp1-spk-cali.bin -O /tmp/linux-firmware-neptune/cs35l41-dsp1-spk-cali.bin && \
|
|
wget https://gitlab.com/evlaV/linux-firmware-neptune/-/raw/jupiter/cs35l41-dsp1-spk-cali.wmfw -O /tmp/linux-firmware-neptune/cs35l41-dsp1-spk-cali.wmfw && \
|
|
wget https://gitlab.com/evlaV/linux-firmware-neptune/-/raw/jupiter/cs35l41-dsp1-spk-prot.bin -O /tmp/linux-firmware-neptune/cs35l41-dsp1-spk-prot.bin && \
|
|
wget https://gitlab.com/evlaV/linux-firmware-neptune/-/raw/jupiter/cs35l41-dsp1-spk-prot.wmfw -O /tmp/linux-firmware-neptune/cs35l41-dsp1-spk-prot.wmfw && \
|
|
xz --check=crc32 /tmp/linux-firmware-neptune/cs35l41-dsp1-spk-{cali.bin,cali.wmfw,prot.bin,prot.wmfw} && \
|
|
mv -vf /tmp/linux-firmware-neptune/* /usr/lib/firmware/cirrus/ && \
|
|
rm -rf /tmp/linux-firmware-neptune
|
|
|
|
# Install Gamescope Session & Supporting changes
|
|
# Add bootstraplinux_ubuntu12_32.tar.xz used by gamescope-session (Thanks ChimeraOS! - https://chimeraos.org/)
|
|
# Remove Feral gamemode, System76-Scheduler supersedes this
|
|
RUN wget https://steamdeck-packages.steamos.cloud/archlinux-mirror/jupiter-main/os/x86_64/steam-jupiter-stable-1.0.0.76-1-x86_64.pkg.tar.zst -O /tmp/steam-jupiter.pkg.tar.zst && \
|
|
mkdir -p /usr/etc/first-boot && \
|
|
tar -I zstd -xvf /tmp/steam-jupiter.pkg.tar.zst usr/lib/steam/bootstraplinux_ubuntu12_32.tar.xz -O > /usr/etc/first-boot/bootstraplinux_ubuntu12_32.tar.xz && \
|
|
rm -f /tmp/steam-jupiter.pkg.tar.zst && \
|
|
rpm-ostree install \
|
|
gamescope-session-plus \
|
|
gamescope-session-steam && \
|
|
if grep -q "kinoite" <<< "${BASE_IMAGE_NAME}"; then \
|
|
rpm-ostree override remove \
|
|
gamemode \
|
|
; else \
|
|
rpm-ostree override remove \
|
|
gamemode \
|
|
gnome-shell-extension-gamemode \
|
|
; fi
|
|
|
|
# Cleanup & Finalize
|
|
COPY system_files/shared /
|
|
RUN /tmp/image-info.sh && \
|
|
mkdir -p "/usr/etc/xdg/autostart" && \
|
|
cp "/usr/share/applications/steam.desktop" "/usr/etc/xdg/autostart/steam.desktop" && \
|
|
sed -i 's@/usr/bin/bazzite-steam %U@/usr/bin/bazzite-steam -silent %U@g' /usr/etc/xdg/autostart/steam.desktop && \
|
|
rm /usr/share/applications/wine*.desktop && \
|
|
ln -s /usr/bin/steamos-logger /usr/bin/steamos-info && \
|
|
ln -s /usr/bin/steamos-logger /usr/bin/steamos-notice && \
|
|
ln -s /usr/bin/steamos-logger /usr/bin/steamos-warning && \
|
|
sed -i 's/870/817/' /usr/share/alsa/ucm2/AMD/acp5x/acp5x.conf && \
|
|
sed -i 's/252/207/' /usr/share/alsa/ucm2/AMD/acp5x/acp5x.conf && \
|
|
sed -i 's/192/207/' /usr/share/alsa/ucm2/AMD/acp5x/acp5x.conf && \
|
|
if grep -q "kinoite" <<< "${BASE_IMAGE_NAME}"; then \
|
|
sed -i 's/Exec=.*/Exec=systemctl start return-to-gamemode.service/' /etc/skel.d/Desktop/Return.desktop \
|
|
; fi && \
|
|
cp "/usr/share/ublue-os/firstboot/yafti.yml" "/usr/etc/yafti.yml" && \
|
|
sed -i 's/#HandlePowerKey=poweroff/HandlePowerKey=suspend/g' /etc/systemd/logind.conf && \
|
|
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/_copr_ublue-os-akmods.repo && \
|
|
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/_copr_kylegospo-bazzite.repo && \
|
|
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/_copr_kylegospo-bazzite-multilib.repo && \
|
|
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/_copr_kylegospo-latencyflex.repo && \
|
|
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/_copr_kylegospo-hl2linux-selinux.repo && \
|
|
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/_copr_kylegospo-obs-vkcapture.repo && \
|
|
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/_copr_kylegospo-wallpaper-engine-kde-plugin.repo && \
|
|
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/_copr_ycollet-audinux.repo && \
|
|
if grep -q "silverblue" <<< "${BASE_IMAGE_NAME}"; then \
|
|
systemctl disable gdm.service && \
|
|
systemctl enable sddm.service \
|
|
; fi && \
|
|
systemctl enable bazzite-autologin.service && \
|
|
systemctl enable btrfs-dedup@run-media-mmcblk0p1.timer && \
|
|
systemctl enable ds-inhibit.service && \
|
|
systemctl enable cec-onboot.service && \
|
|
systemctl enable cec-onpoweroff.service && \
|
|
systemctl enable cec-onsleep.service && \
|
|
systemctl --global enable steam-web-debug-portforward.service && \
|
|
systemctl --global disable sdgyrodsu.service && \
|
|
systemctl disable input-remapper.service && \
|
|
systemctl disable ublue-update.timer && \
|
|
systemctl disable handycon.service && \
|
|
systemctl disable jupiter-fan-control.service && \
|
|
systemctl disable vpower.service && \
|
|
systemctl disable jupiter-biosupdate.service && \
|
|
systemctl disable jupiter-controller-update.service && \
|
|
systemctl disable ryzenadj.service && \
|
|
systemctl disable batterylimit.service && \
|
|
rm -f /usr/etc/sddm.conf && \
|
|
rm -f /usr/etc/default/bazzite && \
|
|
rm -rf \
|
|
/tmp/* \
|
|
/var/* && \
|
|
mkdir -p /var/tmp && \
|
|
chmod -R 1777 /var/tmp && \
|
|
mkdir -p /var/lib/bluetooth && \
|
|
chmod -R 755 /var/lib/bluetooth && \
|
|
ostree container commit
|