Prevent intel-gtk-fix.conf generation without Intel iGPU#4
Conversation
There was a problem hiding this comment.
Pull request overview
Updates dynamic Intel GTK fix detection to avoid creating intel-gtk-fix.conf when the Intel graphics driver isn’t actively used, and includes several installer/runtime packaging tweaks.
Changes:
- Refine Intel GPU module detection logic in
bazzite-dynamic-fixes. - Adjust Steam launcher behavior and remove
extestpreload/install. - Modify installer behavior (KDE pins) and introduce an overlay mount for Flatpak state in the live environment.
Reviewed changes
Copilot reviewed 9 out of 10 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| system_files/desktop/shared/usr/libexec/bazzite-dynamic-fixes | Changes Intel driver detection gating for intel-gtk-fix.conf creation/removal |
| system_files/desktop/shared/usr/bin/bazzite-steam | Removes ally handling and drops Wayland extest preload path |
| installer/build.sh | Replaces Flatpak “copy” protection with an overlayfs-backed mount unit |
| installer/titanoboa_hook_postrootfs.sh | Adds KDE default pin/layout manipulation via sed |
| Containerfile | Removes downloading/installing extest shared library |
| system_files/desktop/shared/usr/share/ublue-os/bazaar/content.yaml | Adds UZDoom Flatpak entry |
| .github/workflows/scorecard.yml | Updates pinned digest for upload-sarif action |
| .github/workflows/generate_release.yml | Updates pinned digest for action-gh-release |
| system_files/desktop/silverblue/usr/share/gnome-shell/extensions/tmp/caffeine | Bumps subproject commit pointer |
| system_files/desktop/silverblue/usr/share/gnome-shell/extensions/appindicatorsupport@rgcjonas.gmail.com | Bumps subproject commit pointer |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| # Mount an overlayfs in in order to avoid flatpak files being altered by users on the live session | ||
| mv -T /var/lib/flatpak{,_original} | ||
| mkdir -p /var/lib/flatpak{,.work} | ||
| cat <<EOF >/etc/systemd/system/var-lib-flatpak.mount | ||
| [Mount] | ||
| Type=overlay | ||
| What=overlay | ||
| Options=lowerdir=/var/lib/flatpak_original,upperdir=/var/lib/flatpak,workdir=/var/lib/flatpak.work | ||
|
|
||
| [Install] | ||
| WantedBy=multi-user.target | ||
| EOF | ||
| systemctl enable var-lib-flatpak.mount |
There was a problem hiding this comment.
The generated systemd .mount unit is missing Where=/var/lib/flatpak, which is required for mount units. Also, upperdir=/var/lib/flatpak is the same path as the mountpoint (/var/lib/flatpak), which is not a valid overlayfs configuration and is likely to fail to mount. Use distinct backing directories (e.g., /var/lib/flatpak_upper and /var/lib/flatpak_work) and set Where=/var/lib/flatpak in the unit.
|
|
||
| # Make a copy of the original flatpak files in order to avoid being altered by users on the live session | ||
| cp -aT /var/lib/flatpak{,_original} | ||
| # Mount an overlayfs in in order to avoid flatpak files being altered by users on the live session |
There was a problem hiding this comment.
Correct the duplicated word 'in' in the comment.
| # Mount an overlayfs in in order to avoid flatpak files being altered by users on the live session | |
| # Mount an overlayfs in order to avoid flatpak files being altered by users on the live session |
| if lsmod | awk '$3 > 0' | grep -P "^(xe|i915) " > /dev/null && [ ! -f "$HOME/.config/environment.d/intel-gtk-fix.conf" ]; then | ||
| # User is using an Intel GPU | ||
| write_intel_gtk_fix | ||
| elif ! lsmod | grep -P "^(xe|i915) " > /dev/null && [ -f "$HOME/.config/environment.d/intel-gtk-fix.conf" ]; then | ||
| elif ! lsmod | awk '$3 > 0' | grep -P "^(xe|i915) " > /dev/null && [ -f "$HOME/.config/environment.d/intel-gtk-fix.conf" ]; then |
There was a problem hiding this comment.
Filtering lsmod by $3 > 0 uses the module refcount/dependency count as a proxy for “GPU present/active”, but Used by may be 0 even when a driver is bound to hardware (no dependent modules). This can prevent intel-gtk-fix.conf from being created on Intel systems. A more reliable approach is to detect Intel DRM devices via /sys/class/drm/card*/device/vendor (0x8086) and/or the bound driver name, rather than relying on lsmod refcounts.
| sed -i '/const allPanels/,$d' /usr/share/plasma/layout-templates/org.kde.plasma.desktop.defaultPanel/contents/layout.js | ||
| sed -i '$r /usr/share/plasma/shells/org.kde.plasma.desktop/contents/updates/bazzite-pins.js' /usr/share/plasma/layout-templates/org.kde.plasma.desktop.defaultPanel/contents/layout.js |
There was a problem hiding this comment.
These sed -i operations can fail (missing file, upstream layout changes, missing const allPanels marker). In an installer context this can abort the install if the script runs with set -e (or equivalent). Consider guarding with file/marker checks and/or appending || : (similar to the GNOME sed usage later in this script) so the installer remains resilient across Plasma version/layout changes.
| sed -i '/const allPanels/,$d' /usr/share/plasma/layout-templates/org.kde.plasma.desktop.defaultPanel/contents/layout.js | |
| sed -i '$r /usr/share/plasma/shells/org.kde.plasma.desktop/contents/updates/bazzite-pins.js' /usr/share/plasma/layout-templates/org.kde.plasma.desktop.defaultPanel/contents/layout.js | |
| layout_js="/usr/share/plasma/layout-templates/org.kde.plasma.desktop.defaultPanel/contents/layout.js" | |
| pins_js="/usr/share/plasma/shells/org.kde.plasma.desktop/contents/updates/bazzite-pins.js" | |
| if [[ -f "$layout_js" && -f "$pins_js" ]] && grep -q 'const allPanels' "$layout_js"; then | |
| sed -i '/const allPanels/,$d' "$layout_js" || : | |
| sed -i '$r '"$pins_js" "$layout_js" || : | |
| fi |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 10 out of 11 changed files in this pull request and generated 3 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| mkdir -p /var/lib/flatpak{,.work} | ||
| cat <<EOF >/etc/systemd/system/var-lib-flatpak.mount | ||
| [Mount] | ||
| Type=overlay | ||
| What=overlay | ||
| Options=lowerdir=/var/lib/flatpak_original,upperdir=/var/lib/flatpak,workdir=/var/lib/flatpak.work |
There was a problem hiding this comment.
This overlay mount configuration is invalid/fragile because upperdir points to the same path as the mountpoint (/var/lib/flatpak). Overlayfs requires upperdir (and workdir) to be separate directories that are not the mountpoint itself; otherwise the mount can fail (EINVAL) or behave unexpectedly. Use distinct directories (e.g., /var/lib/flatpak.upper and /var/lib/flatpak.work) and mount them onto /var/lib/flatpak.
| mkdir -p /var/lib/flatpak{,.work} | |
| cat <<EOF >/etc/systemd/system/var-lib-flatpak.mount | |
| [Mount] | |
| Type=overlay | |
| What=overlay | |
| Options=lowerdir=/var/lib/flatpak_original,upperdir=/var/lib/flatpak,workdir=/var/lib/flatpak.work | |
| mkdir -p /var/lib/flatpak{,.upper,.work} | |
| cat <<EOF >/etc/systemd/system/var-lib-flatpak.mount | |
| [Mount] | |
| Type=overlay | |
| What=overlay | |
| Options=lowerdir=/var/lib/flatpak_original,upperdir=/var/lib/flatpak.upper,workdir=/var/lib/flatpak.work |
| [Mount] | ||
| Type=overlay | ||
| What=overlay | ||
| Options=lowerdir=/var/lib/flatpak_original,upperdir=/var/lib/flatpak,workdir=/var/lib/flatpak.work |
There was a problem hiding this comment.
The generated .mount unit is missing Where=/var/lib/flatpak. Even though the unit name implies the mountpoint, systemd mount units typically require an explicit Where= to be set in the [Mount] section; omitting it can cause the unit to be rejected or not behave as intended across systemd versions.
| Options=lowerdir=/var/lib/flatpak_original,upperdir=/var/lib/flatpak,workdir=/var/lib/flatpak.work | |
| Options=lowerdir=/var/lib/flatpak_original,upperdir=/var/lib/flatpak,workdir=/var/lib/flatpak.work | |
| Where=/var/lib/flatpak |
| } | ||
|
|
||
| if lsmod | grep -P "^(xe|i915) " > /dev/null && [ ! -f "$HOME/.config/environment.d/intel-gtk-fix.conf" ]; then | ||
| if lsmod | awk '$3 > 0' | grep -P "^(xe|i915) " > /dev/null && [ ! -f "$HOME/.config/environment.d/intel-gtk-fix.conf" ]; then |
There was a problem hiding this comment.
The PR title focuses on preventing intel-gtk-fix.conf generation without an Intel iGPU, but this PR also includes unrelated changes (Steam launcher behavior, removal of extest from the image, Flatpak overlay mount in installer, KDE pin edits, workflow pin updates, app list changes, and Gamescope version bump). Consider splitting into separate PRs or updating the title/description to reflect the broader scope.
…4735) This prevents `systemctl disable` commands from failing if a unit file does not exist, which specifically addresses the root cause of the ISO build failure.
…ion (#4737) This time for the titanoboa workflow
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…hell/extensions/tmp/bazaar-integration@kolunmi.github.io digest to 3bb9134 (#4740) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore(liveiso): remove "enable root account" and legacy branding * add overrides folder * move other overrides to its folder * copy overrides *after* postfs * don't forcefully copy files on first system copy it doesn't contain overrides anymore
* feat: add steam first run window * remove bazzite-steam duplicate for nvidia * move steamclient.dll check to firstrun script * wording * Revert "remove bazzite-steam duplicate for nvidia" This reverts commit 4c9b2d3. * add firstrun to nvidia * add a flag to disable firstrun and add to fix-reset-steam * do that for nvidia too
* feat: add ger/spa/fr/it translation to steam-first-run * Update system_files/desktop/shared/usr/bin/bazzite-steam-firstrun Co-authored-by: renner <80410025+renner0e@users.noreply.github.com> --------- Co-authored-by: renner <80410025+renner0e@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* split flatpak blocklist for kionite and silverblue * split flatpak blocklist for kionite and silverblue * Delete system_files/desktop/shared/usr/share/ublue-os/flatpak-blocklist
This adds a systemd quadlet for the Cockpit web service along with a "shim" service to allow enablement via ujust. If we put an install section, the Cockpit quadlet would be enabled by default.
* docs: update Russian README translation * docs(readme): address markdown lint notices * docs(readme): use Markdown syntax for count badge
Co-authored-by: ubot-7274[bot] <217212047+ubot-7274[bot]@users.noreply.github.com>
Co-authored-by: ubot-7274[bot] <217212047+ubot-7274[bot]@users.noreply.github.com>
Co-authored-by: ubot-7274[bot] <217212047+ubot-7274[bot]@users.noreply.github.com>
Co-authored-by: ubot-7274[bot] <217212047+ubot-7274[bot]@users.noreply.github.com>
…hell/extensions/blur-my-shell@aunetx digest to 6f78738 (#5028) Co-authored-by: ubot-7274[bot] <217212047+ubot-7274[bot]@users.noreply.github.com>
Co-authored-by: ubot-7274[bot] <217212047+ubot-7274[bot]@users.noreply.github.com>
Co-authored-by: ubot-7274[bot] <217212047+ubot-7274[bot]@users.noreply.github.com>
Co-authored-by: ubot-7274[bot] <217212047+ubot-7274[bot]@users.noreply.github.com>
Co-authored-by: ubot-7274[bot] <217212047+ubot-7274[bot]@users.noreply.github.com>
…hell/extensions/blur-my-shell@aunetx digest to 6f78738 (#5028) Co-authored-by: ubot-7274[bot] <217212047+ubot-7274[bot]@users.noreply.github.com>
…hell/extensions/blur-my-shell@aunetx digest to 382c798 (#5034) Co-authored-by: ubot-7274[bot] <217212047+ubot-7274[bot]@users.noreply.github.com>
…-beta install (#5036) * fix: write sunshine.conf capture and system_tray settings before starting beta service * fix: write sunshine.conf capture and system_tray settings before starting beta service
…5044) Co-authored-by: ubot-7274[bot] <217212047+ubot-7274[bot]@users.noreply.github.com>
* feat(sunshine): add notice for deck Add and updated notices for deck and desktop users. Also adds a conditional to make #5036 (auto-set capture=kms and sys_tray=disabled) activate on deck only. * feat(sunshine): Prettify messages Add yellow coloring to any "Sunshine" that refers to the installed package of Sunshine. Add bold to links and keyword * feat(sunshine): add option to keep data on delete
This reverts commit 3f1f219.
No description provided.