mirror of
https://github.com/ublue-os/bazzite.git
synced 2025-01-30 12:32:37 +00:00
72b73e884e
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
517 lines
26 KiB
Docker
517 lines
26 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} /
|
|
|
|
# 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 && \
|
|
sed -i "0,/enabled/ s@enabled=0@enabled=1@g" /etc/yum.repos.d/negativo17-fedora-multimedia.repo && \
|
|
rpm-ostree install \
|
|
/tmp/akmods-rpms/kmods/*gcadapter_oc*.rpm \
|
|
/tmp/akmods-rpms/kmods/*nct6687*.rpm \
|
|
/tmp/akmods-rpms/kmods/*openrazer*.rpm \
|
|
/tmp/akmods-rpms/kmods/*openrgb*.rpm \
|
|
/tmp/akmods-rpms/kmods/*ryzen-smu*.rpm \
|
|
/tmp/akmods-rpms/kmods/*v4l2loopback*.rpm \
|
|
/tmp/akmods-rpms/kmods/*winesync*.rpm \
|
|
/tmp/akmods-rpms/kmods/*wl*.rpm \
|
|
/tmp/akmods-rpms/kmods/*xone*.rpm \
|
|
/tmp/akmods-rpms/kmods/*xpad-noone*.rpm \
|
|
/tmp/akmods-rpms/kmods/*xpadneo*.rpm && \
|
|
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/negativo17-fedora-multimedia.repo && \
|
|
mkdir -p /etc/akmods-rpms/ && \
|
|
mv /tmp/akmods-rpms/kmods/*steamdeck*.rpm /etc/akmods-rpms/
|
|
|
|
# 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
|
|
|
|
# Remove unneeded packages
|
|
RUN rpm-ostree override remove \
|
|
ublue-os-update-services \
|
|
firefox \
|
|
firefox-langpacks \
|
|
htop
|
|
|
|
# Install new packages
|
|
RUN if [[ "${IMAGE_FLAVOR}" =~ "nvidia" ]]; then \
|
|
rpm-ostree override remove \
|
|
glibc32 \
|
|
; fi && \
|
|
rpm-ostree install \
|
|
ublue-update \
|
|
discover-overlay \
|
|
python3-pip \
|
|
libadwaita \
|
|
duperemove \
|
|
xwininfo \
|
|
xrandr \
|
|
rmlint \
|
|
compsize \
|
|
input-remapper \
|
|
system76-scheduler \
|
|
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 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
|
|
|
|
# Install Valve's Steam Deck drivers as kmod
|
|
RUN rpm-ostree install \
|
|
/etc/akmods-rpms/*steamdeck*.rpm && \
|
|
rm -rf /etc/akmods-rpms
|
|
|
|
# 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
|