Bake GeForce NOW native Linux app (beta) via first-boot installer
NVIDIA's client ships from their own flatpak repo (com.nvidia.geforcenow), which default-flatpaks can't add alongside Flathub — so a stamped oneshot service installs it on first boot with retries. Docs note the BC-250 has no hardware video decode: streams are CPU-decoded, keep to 1080p. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -74,3 +74,7 @@ high clocks. Change one thing at a time and re-check `sensors`.
|
|||||||
`bc250-remote-setup` hasn't been run yet.
|
`bc250-remote-setup` hasn't been run yet.
|
||||||
- Steam misbehaves after an update → try ProtonUp-Qt (installed) to switch
|
- Steam misbehaves after an update → try ProtonUp-Qt (installed) to switch
|
||||||
the game to Proton-GE.
|
the game to Proton-GE.
|
||||||
|
- GeForce NOW (beta) installs itself on first boot with internet. The BC-250
|
||||||
|
has no hardware video decode, so the stream decodes on the CPU: keep it at
|
||||||
|
1080p (higher settings will stutter and run hot). If it's missing, check
|
||||||
|
`systemctl status bc250-gfn-install` — it retries on the next boot.
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ over-the-air from this Gitea's container registry.
|
|||||||
| Console behavior | All suspend paths masked, no screen lock/dim, GNOME animations off — always on, always reachable |
|
| Console behavior | All suspend paths masked, no screen lock/dim, GNOME animations off — always on, always reachable |
|
||||||
| Kid experience | Steam Big Picture autostarts for the `kid` account only |
|
| Kid experience | Steam Big Picture autostarts for the `kid` account only |
|
||||||
| Apps | First-boot flatpaks: ProtonUp-Qt, Heroic, RetroDECK (Steam, Firefox, auto-updates already in the Bazzite base) |
|
| Apps | First-boot flatpaks: ProtonUp-Qt, Heroic, RetroDECK (Steam, Firefox, auto-updates already in the Bazzite base) |
|
||||||
|
| Cloud gaming | GeForce NOW native Linux app (beta) auto-installed on first boot from NVIDIA's flatpak repo — note the BC-250 has no hardware video decode, so streams decode on CPU; keep to 1080p |
|
||||||
| Fixes | `hhd.service` masked (crash-loops on BC-250) |
|
| Fixes | `hhd.service` masked (crash-loops on BC-250) |
|
||||||
| Docs | Parent manual baked at `/usr/share/doc/bc250-console/OPERATIONS.md` |
|
| Docs | Parent manual baked at `/usr/share/doc/bc250-console/OPERATIONS.md` |
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# First-boot installer for the GeForce NOW native Linux app (beta).
|
||||||
|
# GFN ships from NVIDIA's own flatpak repo, not Flathub, so the
|
||||||
|
# default-flatpaks module can't handle it. Retries while the network
|
||||||
|
# settles; stamps /var/lib/bc250/.gfn-installed on success so the
|
||||||
|
# service never runs again.
|
||||||
|
|
||||||
|
STAMP_DIR="/var/lib/bc250"
|
||||||
|
STAMP="$STAMP_DIR/.gfn-installed"
|
||||||
|
REPO_URL="https://international.download.nvidia.com/GFNLinux/flatpak/geforcenow.flatpakrepo"
|
||||||
|
|
||||||
|
[ -f "$STAMP" ] && exit 0
|
||||||
|
|
||||||
|
for attempt in $(seq 1 30); do
|
||||||
|
if flatpak remote-add --if-not-exists --system GeForceNOW "$REPO_URL" \
|
||||||
|
&& flatpak install --system --noninteractive -y GeForceNOW com.nvidia.geforcenow; then
|
||||||
|
mkdir -p "$STAMP_DIR"
|
||||||
|
touch "$STAMP"
|
||||||
|
echo "GeForce NOW installed."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
echo "GeForce NOW install attempt $attempt failed; retrying in 60s..."
|
||||||
|
sleep 60
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "GeForce NOW install failed after 30 attempts; will retry next boot." >&2
|
||||||
|
exit 1
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Install GeForce NOW flatpak (NVIDIA repo, first boot)
|
||||||
|
Wants=network-online.target
|
||||||
|
After=network-online.target flatpak-add-fedora-repos.service
|
||||||
|
ConditionPathExists=!/var/lib/bc250/.gfn-installed
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/usr/bin/bc250-gfn-install
|
||||||
|
TimeoutStartSec=45min
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
@@ -74,3 +74,7 @@ high clocks. Change one thing at a time and re-check `sensors`.
|
|||||||
`bc250-remote-setup` hasn't been run yet.
|
`bc250-remote-setup` hasn't been run yet.
|
||||||
- Steam misbehaves after an update → try ProtonUp-Qt (installed) to switch
|
- Steam misbehaves after an update → try ProtonUp-Qt (installed) to switch
|
||||||
the game to Proton-GE.
|
the game to Proton-GE.
|
||||||
|
- GeForce NOW (beta) installs itself on first boot with internet. The BC-250
|
||||||
|
has no hardware video decode, so the stream decodes on the CPU: keep it at
|
||||||
|
1080p (higher settings will stutter and run hot). If it's missing, check
|
||||||
|
`systemctl status bc250-gfn-install` — it retries on the next boot.
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ modules:
|
|||||||
|
|
||||||
- type: script
|
- type: script
|
||||||
snippets:
|
snippets:
|
||||||
- chmod 0755 /usr/bin/bc250-remote-setup /usr/bin/bc250-steam-bpm-autostart
|
- chmod 0755 /usr/bin/bc250-remote-setup /usr/bin/bc250-steam-bpm-autostart /usr/bin/bc250-gfn-install
|
||||||
- dconf update # compile the local.d/gdm.d console defaults into the dconf dbs
|
- dconf update # compile the local.d/gdm.d console defaults into the dconf dbs
|
||||||
|
|
||||||
- type: default-flatpaks@v1
|
- type: default-flatpaks@v1
|
||||||
@@ -41,6 +41,7 @@ modules:
|
|||||||
- cyan-skillfish-governor-smu.service
|
- cyan-skillfish-governor-smu.service
|
||||||
- sshd.service
|
- sshd.service
|
||||||
- tailscaled.service # idle until 'sudo tailscale up'
|
- tailscaled.service # idle until 'sudo tailscale up'
|
||||||
|
- bc250-gfn-install.service # GeForce NOW beta from NVIDIA's flatpak repo (first boot)
|
||||||
masked:
|
masked:
|
||||||
- hhd.service # Handheld Daemon crash-loops on BC-250
|
- hhd.service # Handheld Daemon crash-loops on BC-250
|
||||||
# Always-on console: hard-block every suspend path (the box must
|
# Always-on console: hard-block every suspend path (the box must
|
||||||
|
|||||||
Reference in New Issue
Block a user