Skip to content

Commit 996e222

Browse files
Merge branch 'ublue-os:main' into main
2 parents 5f74b9f + 72b73e8 commit 996e222

File tree

7 files changed

+140
-128
lines changed

7 files changed

+140
-128
lines changed

Containerfile

+39-24
Original file line numberDiff line numberDiff line change
@@ -7,32 +7,31 @@ ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION:-39}"
77

88
FROM ${BASE_IMAGE}:${FEDORA_MAJOR_VERSION} AS bazzite
99

10-
ARG IMAGE_NAME="${IMAGE_NAME}"
11-
ARG IMAGE_VENDOR="${IMAGE_VENDOR}"
12-
ARG IMAGE_FLAVOR="${IMAGE_FLAVOR}"
13-
ARG AKMODS_FLAVOR="${AKMODS_FLAVOR}"
14-
ARG BASE_IMAGE_NAME="${BASE_IMAGE_NAME}"
15-
ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION}"
10+
ARG IMAGE_NAME="${IMAGE_NAME:-bazzite}"
11+
ARG IMAGE_VENDOR="${IMAGE_VENDOR:-ublue-os}"
12+
ARG IMAGE_FLAVOR="${IMAGE_FLAVOR:-main}"
13+
ARG AKMODS_FLAVOR="${AKMODS_FLAVOR:-main}"
14+
ARG BASE_IMAGE_NAME="${BASE_IMAGE_NAME:-kinoite}"
15+
ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION:-39}"
1616

1717
COPY system_files/desktop/shared system_files/desktop/${BASE_IMAGE_NAME} /
1818

1919
# Add ublue packages, add needed negativo17 repo and then immediately disable due to incompatibility with RPMFusion
2020
COPY --from=ghcr.io/ublue-os/akmods:${AKMODS_FLAVOR}-${FEDORA_MAJOR_VERSION} /rpms /tmp/akmods-rpms
2121
RUN sed -i 's@enabled=0@enabled=1@g' /etc/yum.repos.d/_copr_ublue-os-akmods.repo && \
22-
wget https://negativo17.org/repos/fedora-multimedia.repo -O /etc/yum.repos.d/negativo17-fedora-multimedia.repo && \
23-
rpm-ostree install \
24-
/tmp/akmods-rpms/kmods/*xpadneo*.rpm \
25-
/tmp/akmods-rpms/kmods/*xpad-noone*.rpm \
26-
/tmp/akmods-rpms/kmods/*xone*.rpm \
27-
/tmp/akmods-rpms/kmods/*openrazer*.rpm \
28-
/tmp/akmods-rpms/kmods/*v4l2loopback*.rpm \
29-
/tmp/akmods-rpms/kmods/*wl*.rpm && \
22+
sed -i "0,/enabled/ s@enabled=0@enabled=1@g" /etc/yum.repos.d/negativo17-fedora-multimedia.repo && \
3023
rpm-ostree install \
3124
/tmp/akmods-rpms/kmods/*gcadapter_oc*.rpm \
3225
/tmp/akmods-rpms/kmods/*nct6687*.rpm \
26+
/tmp/akmods-rpms/kmods/*openrazer*.rpm \
3327
/tmp/akmods-rpms/kmods/*openrgb*.rpm \
3428
/tmp/akmods-rpms/kmods/*ryzen-smu*.rpm \
35-
/tmp/akmods-rpms/kmods/*winesync*.rpm && \
29+
/tmp/akmods-rpms/kmods/*v4l2loopback*.rpm \
30+
/tmp/akmods-rpms/kmods/*winesync*.rpm \
31+
/tmp/akmods-rpms/kmods/*wl*.rpm \
32+
/tmp/akmods-rpms/kmods/*xone*.rpm \
33+
/tmp/akmods-rpms/kmods/*xpad-noone*.rpm \
34+
/tmp/akmods-rpms/kmods/*xpadneo*.rpm && \
3635
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/negativo17-fedora-multimedia.repo && \
3736
mkdir -p /etc/akmods-rpms/ && \
3837
mv /tmp/akmods-rpms/kmods/*steamdeck*.rpm /etc/akmods-rpms/
@@ -62,7 +61,11 @@ RUN rpm-ostree override remove \
6261
htop
6362

6463
# Install new packages
65-
RUN rpm-ostree install \
64+
RUN if [[ "${IMAGE_FLAVOR}" =~ "nvidia" ]]; then \
65+
rpm-ostree override remove \
66+
glibc32 \
67+
; fi && \
68+
rpm-ostree install \
6669
ublue-update \
6770
discover-overlay \
6871
python3-pip \
@@ -92,6 +95,7 @@ RUN rpm-ostree install \
9295
libxcrypt-compat \
9396
mesa-libGLU \
9497
vulkan-tools \
98+
glibc.i686 \
9599
extest.i686 \
96100
twitter-twemoji-fonts \
97101
google-noto-sans-cjk-fonts \
@@ -108,7 +112,19 @@ RUN rpm-ostree install \
108112
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
109113

110114
# Install Steam & Lutris, plus supporting packages
111-
RUN rpm-ostree install \
115+
RUN rpm-ostree override replace \
116+
--experimental \
117+
--from repo=updates \
118+
pipewire \
119+
pipewire-alsa \
120+
pipewire-gstreamer \
121+
pipewire-jack-audio-connection-kit \
122+
pipewire-jack-audio-connection-kit-libs \
123+
pipewire-libs \
124+
pipewire-pulseaudio \
125+
pipewire-utils \
126+
|| true && \
127+
rpm-ostree install \
112128
vulkan-loader.i686 \
113129
alsa-lib.i686 \
114130
fontconfig.i686 \
@@ -208,7 +224,6 @@ RUN if grep -q "kinoite" <<< "${BASE_IMAGE_NAME}"; then \
208224
gnome-control-center-filesystem && \
209225
rpm-ostree install \
210226
gnome-shell-extension-tailscale-gnome-qs \
211-
xwaylandvideobridge \
212227
steamdeck-backgrounds \
213228
gnome-randr-rust \
214229
gnome-shell-extension-user-theme \
@@ -254,7 +269,7 @@ RUN rpm-ostree override replace \
254269
RUN if grep -qv "nvidia" <<< "${IMAGE_NAME}"; then \
255270
rpm-ostree install \
256271
gamescope.x86_64 \
257-
gamescope.i686 \
272+
gamescope-libs.i686 \
258273
rocm-hip \
259274
rocm-opencl \
260275
rocm-clinfo \
@@ -341,11 +356,11 @@ RUN /tmp/image-info.sh && \
341356

342357
FROM bazzite as bazzite-deck
343358

344-
ARG IMAGE_NAME="${IMAGE_NAME}"
345-
ARG IMAGE_VENDOR="${IMAGE_VENDOR}"
346-
ARG IMAGE_FLAVOR="${IMAGE_FLAVOR}"
347-
ARG BASE_IMAGE_NAME="${BASE_IMAGE_NAME}"
348-
ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION}"
359+
ARG IMAGE_NAME="${IMAGE_NAME:-bazzite-deck}"
360+
ARG IMAGE_VENDOR="${IMAGE_VENDOR:-ublue-os}"
361+
ARG IMAGE_FLAVOR="${IMAGE_FLAVOR:-main}"
362+
ARG BASE_IMAGE_NAME="${BASE_IMAGE_NAME:-kinoite}"
363+
ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION:-39}"
349364

350365
COPY system_files/deck/shared system_files/deck/${BASE_IMAGE_NAME} /
351366

system_files/deck/shared/usr/share/ublue-os/firstboot/yafti.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,8 @@ screens:
6969
description: Nix is a powerful package manager for Linux and other Unix systems that makes package management reliable and reproducible
7070
default: false
7171
packages:
72-
- Install Nix Package Support: sudo -A ujust install-nix
73-
- Install Fleek (Requires Nix): ujust install-fleek
72+
- Install Nix Package Support: sudo -A ujust nix-install
73+
- Install Fleek (Requires Nix): ujust fleek-install
7474
Oversteer:
7575
description: Application to control supported steering wheels
7676
default: false

system_files/deck/shared/usr/share/ublue-os/just/60-custom.just

+15-42
Original file line numberDiff line numberDiff line change
@@ -68,43 +68,6 @@ install-openrazer:
6868
sudo usermod -a -G plugdev $USER && \
6969
echo "Please reboot to apply needed changes."
7070

71-
# Install Nix with the Determinate Nix Installer
72-
install-nix:
73-
#!/usr/bin/env bash
74-
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sudo bash -s -- install --no-confirm
75-
76-
# Uninstall Nix
77-
remove-nix:
78-
sudo /nix/nix-installer uninstall
79-
80-
# Install Fleek (https://getfleek.dev/)
81-
install-fleek:
82-
#!/usr/bin/env bash
83-
if [[ -d "/nix" ]]; then
84-
mkdir -p $HOME/.config/nix
85-
echo "experimental-features = nix-command flakes" >> $HOME/.config/nix/nix.conf
86-
curl -fsSL https://getfleek.dev/installer | env FORCE=1 bash
87-
else
88-
echo "Install nix with ujust install-nix before running ujust install-fleek."
89-
fi
90-
91-
# Integrate Nix/Fleek applications with system theme
92-
install-fleek-themes:
93-
#!/usr/bin/env bash
94-
if [[ -x "/var/usrlocal/bin/fleek" ]]; then
95-
IMAGE_INFO="/usr/share/ublue-os/image-info.json"
96-
BASE_IMAGE_NAME=$(jq -r '."base-image-name"' < $IMAGE_INFO)
97-
if [[ ${BASE_IMAGE_NAME} == 'silverblue' ]]; then
98-
fleek add adw-gtk3 --apply
99-
else
100-
fleek add breeze-icons
101-
fleek add libsForQt5.breeze-qt5
102-
fleek apply
103-
fi
104-
else
105-
echo "Install fleek with ujust install-fleek before running ujust install-fleek-themes."
106-
fi
107-
10871
# Install Greenlight xCloud and xHome streaming AppImage
10972
get-greenlight:
11073
#!/usr/bin/env bash
@@ -373,21 +336,31 @@ unhide-grub:
373336
# Install Deck HD BIOS
374337
install-deckhd-bios:
375338
#!/usr/bin/env bash
376-
RESOLUTION=$(sudo lshw -json -c display | jq -r .[]."configuration"."resolution")
377-
if [[ "${RESOLUTION}" = "1200,1920" ]]; then
339+
SYS_ID="$(cat /sys/devices/virtual/dmi/id/product_name)"
340+
if [[ ":Jupiter:" =~ ":$SYS_ID:" ]]; then
341+
RESOLUTION=$(sudo lshw -json -c display | jq -r .[]."configuration"."resolution")
342+
if [[ "${RESOLUTION}" = "1200,1920" ]]; then
378343
sudo systemctl mask --now jupiter-biosupdate.service
379344
wget -q https://deckhd.com/downloads/install.sh -O /tmp/deckhd-install.sh
380345
chmod +x /tmp/deckhd-install.sh
381346
sudo ./tmp/deckhd-install.sh
382-
else
347+
else
383348
echo "Unable to detect DeckHD. Aborting..."
349+
fi
350+
else
351+
echo "This is only applicable to LCD Steam Decks with the DeckHD screen. Aborting..."
384352
fi
385353
386354
# Enable BIOS & Firmware update services for the Steam Deck
387355
enable-deck-bios-firmware-updates:
388356
#!/usr/bin/env bash
389-
sudo systemctl enable jupiter-biosupdate.service
390-
sudo systemctl enable jupiter-controller-update.service
357+
SYS_ID="$(cat /sys/devices/virtual/dmi/id/product_name)"
358+
if [[ ":Jupiter:" =~ ":$SYS_ID:" || ":Galileo:" =~ ":$SYS_ID:" ]]; then
359+
sudo systemctl enable jupiter-biosupdate.service
360+
sudo systemctl enable jupiter-controller-update.service
361+
else
362+
echo "This is only applicable to Valve's Steam Deck. Aborting..."
363+
fi
391364
392365
# Disable Steam Deck BIOS updates
393366
disable-bios-updates:
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Anything commented out with # on a new line will be ignored
2+
# These files follow the "rpm-ostree initramfs" syntax, please consult
3+
# "rpm-ostree initramfs --help" for more information
4+
#
5+
# You can do 1 initramfs argument per line or do them all in 1 line.
6+
# If you need to just add drivers to dracut, you should instead just add
7+
# config files for dracut into /etc/dracut.conf.d/ and trigger an initramfs
8+
# rebuild using "sudo touch /etc/bazzite/initramfs/rebuild" which
9+
# will rebuild the initramfs on next boot using bazzite-hardware-setup.
10+
#
11+
# Multiline Example:
12+
#--arg="--add-drivers"
13+
#--arg="vfio vfio_iommu_type1 vfio-pci"
14+
#
15+
# Single Line Example:
16+
#--arg="--add-drivers" --arg="vfio vfio_iommu_type1 vfio-pci

system_files/desktop/shared/usr/bin/bazzite-hardware-setup

+51-10
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ BASE_IMAGE_NAME=$(jq -r '."base-image-name"' < $IMAGE_INFO)
77
FEDORA_VERSION=$(jq -r '."fedora-version"' < $IMAGE_INFO)
88

99
# SCRIPT VERSION
10-
HWS_VER=15
10+
HWS_VER=17
1111
HWS_VER_FILE="/etc/bazzite/hws_version"
1212
HWS_VER_RAN=$(cat $HWS_VER_FILE)
1313

@@ -19,17 +19,42 @@ KNOWN_IMAGE_FLAVOR=$(cat $KNOWN_IMAGE_FLAVOR_FILE)
1919
KNOWN_FEDORA_VERSION_FILE="/etc/bazzite/fedora_version"
2020
KNOWN_FEDORA_VERSION=$(cat $KNOWN_FEDORA_VERSION_FILE)
2121

22-
# RUN REMAINDER OF SCRIPT ONLY IF UPDATED
23-
if [[ -f $HWS_VER_FILE && $HWS_VER = $HWS_VER_RAN ]]; then
24-
if [[ -f $KNOWN_IMAGE_NAME_FILE && -f $KNOWN_IMAGE_FLAVOR_FILE ]]; then
25-
if [[ -f $KNOWN_FEDORA_VERSION_FILE && -f $KNOWN_FEDORA_VERSION_FILE ]]; then
26-
# Run script if image has been rebased
27-
if [[ $IMAGE_NAME = $KNOWN_IMAGE_NAME && $IMAGE_FLAVOR = $KNOWN_IMAGE_FLAVOR && $FEDORA_VERSION = $KNOWN_FEDORA_VERSION ]]; then
28-
echo "Hardware setup has already run. Exiting..."
29-
exit 0
22+
# INITRAMFS CONFIG
23+
INITRAMFS_DIR="/etc/bazzite/initramfs"
24+
INITRAMFS_REBUILD_TRIGGER="$INITRAMFS_DIR/rebuild"
25+
INITRAMFS_BAZZITE_ARG_FILE="$INITRAMFS_DIR/hardware-setup.args"
26+
INITRAMFS_BAZZITE_ARGS=$(cat $INITRAMFS_BAZZITE_ARG_FILE)
27+
INITRAMFS_CUSTOM_ARGS_DIR="$INITRAMFS_DIR/args.d"
28+
INITRAMFS_CUSTOM_ARGS=""
29+
30+
# If the /etc/bazzite/initramfs/args.d dir exists
31+
if [[ -d "$INITRAMFS_CUSTOM_ARGS_DIR" ]]; then
32+
# Grab all the content of the files (minus comments) and join them together with spaces
33+
INITRAMFS_CUSTOM_ARGS=$(grep -RvP "^(#|$)" $INITRAMFS_CUSTOM_ARGS_DIR/ | sort | perl -pe 's/(^$INITRAMFS_CUSTOM_ARGS_DIR\/.+:|\\\n$)//g' | tr '\n' ' ')
34+
fi
35+
36+
# If no rebuild is requested
37+
if [[ ! -f $INITRAMFS_REBUILD_TRIGGER ]]; then
38+
# RUN REMAINDER OF SCRIPT ONLY IF UPDATED
39+
if [[ -f $HWS_VER_FILE && $HWS_VER = $HWS_VER_RAN ]]; then
40+
if [[ -f $KNOWN_IMAGE_NAME_FILE && -f $KNOWN_IMAGE_FLAVOR_FILE ]]; then
41+
if [[ -f $KNOWN_FEDORA_VERSION_FILE && -f $KNOWN_FEDORA_VERSION_FILE ]]; then
42+
# Run script if image has been rebased
43+
if [[ $IMAGE_NAME = $KNOWN_IMAGE_NAME && $IMAGE_FLAVOR = $KNOWN_IMAGE_FLAVOR && $FEDORA_VERSION = $KNOWN_FEDORA_VERSION ]]; then
44+
echo "Hardware setup has already run. Exiting..."
45+
exit 0
46+
fi
3047
fi
3148
fi
3249
fi
50+
else
51+
# REMOVE REBUILD TRIGGER TO AVOID INFINITE BOOT LOOP!
52+
rm $INITRAMFS_REBUILD_TRIGGER
53+
# Rebuild current initramfs (this will add any new configs added to /etc/dracut.conf.d/) then reboot
54+
echo "Initramfs rebuild triggered, using: $INITRAMFS_BAZZITE_ARGS $INITRAMFS_CUSTOM_ARGS"
55+
plymouth display-message --text="Updating initramfs - Please wait, this may take a while" || true
56+
rpm-ostree initramfs --enable "$INITRAMFS_BAZZITE_ARGS" "$INITRAMFS_CUSTOM_ARGS" --reboot
57+
exit 0
3358
fi
3459

3560
# GLOBAL
@@ -62,10 +87,21 @@ for INITRAMFS_ARG in ${NEEDED_INITRAMFS[@]}; do
6287
fi
6388
done
6489

90+
# If there is nothing in INITRAMFS_BAZZITE_ARGS
91+
if [[ ! $INITRAMFS_BAZZITE_ARGS ]]; then
92+
# Make sure we will have /etc/bazzite/initramfs/bazzite.args for the future
93+
mkdir -p /etc/bazzite/initramfs/args.d
94+
echo "--arg=\"-I ${NEEDED_INITRAMFS[*]}\"" > $INITRAMFS_BAZZITE_ARG_FILE
95+
INITRAMFS_BAZZITE_ARGS=$(cat $INITRAMFS_BAZZITE_ARG_FILE)
96+
fi
97+
6598
if $NEEDS_INITRAMFS_APPLICATION; then
6699
echo "Found needed initramfs changes, applying the following: ${NEEDED_INITRAMFS[*]}"
100+
echo "--arg=\"-I ${NEEDED_INITRAMFS[*]}\"" > $INITRAMFS_BAZZITE_ARG_FILE
101+
INITRAMFS_BAZZITE_ARGS=$(cat $INITRAMFS_BAZZITE_ARG_FILE)
102+
echo "Building initramfs with following custom args: $INITRAMFS_CUSTOM_ARGS"
67103
plymouth display-message --text="Updating initramfs - Please wait, this may take a while" || true
68-
rpm-ostree initramfs --enable --arg="-I ${NEEDED_INITRAMFS[*]}"
104+
rpm-ostree initramfs --enable "$INITRAMFS_BAZZITE_ARGS" "$INITRAMFS_CUSTOM_ARGS"
69105
else
70106
echo "No initramfs changes needed"
71107
fi
@@ -149,6 +185,11 @@ if [[ $IMAGE_NAME =~ "deck" || $IMAGE_NAME =~ "ally" || $IMAGE_NAME =~ "framegam
149185
systemctl disable --now ryzenadj.service
150186
systemctl disable --now batterylimit.service
151187
systemctl --global disable --now sdgyrodsu.service
188+
189+
if [[ ":83E1:" =~ ":$SYS_ID:" ]]; then
190+
echo "Lenovo Legion detected. Swapping to X11 by default."
191+
sed -i 's/DESKTOP_WAYLAND=true/DESKTOP_WAYLAND=false/g' /etc/desktop-wayland
192+
fi
152193
fi
153194
fi
154195

system_files/desktop/shared/usr/share/ublue-os/firstboot/yafti.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ screens:
3131
description: Nix is a powerful package manager for Linux and other Unix systems that makes package management reliable and reproducible
3232
default: false
3333
packages:
34-
- Install Nix Package Support: sudo -A ujust install-nix
35-
- Install Fleek (Requires Nix): ujust install-fleek
34+
- Install Nix Package Support: sudo -A ujust nix-install
35+
- Install Fleek (Requires Nix): ujust fleek-install
3636
OpenRazer:
3737
description: Enables additional capabilities for Razer Hardware
3838
default: false
@@ -77,7 +77,7 @@ screens:
7777
show_terminal: true
7878
package_manager: yafti.plugin.run
7979
packages:
80-
- CoreCtrl (GPU Overclocking): ujust install-corectrl
80+
- LACT (GPU Overclocking): ujust install-lact
8181
nvidia-additions:
8282
source: yafti.screen.package
8383
values:

0 commit comments

Comments
 (0)