boxy: Replace Kodi with Plasma Bigscreen #45

Open
ash-bot wants to merge 5 commits from ash/plasma-bigscreen into main
Collaborator

Replaces the Kodi 10-foot UI on boxy with Plasma Bigscreen https://plasma-bigscreen.org/ — KDE's open-source TV interface.

What changed

New role: roles/plasma-bigscreen/ — NixOS module + package derivation built from upstream master
boxy config: swaps roles.kodi → roles.plasma-bigscreen
Keeps everything: Jellyfin, Stremio, Firefox, KDE Connect, app-launcher-server, AVR volume control
Session: autologins to plasma-bigscreen-wayland instead of plasma

Build notes

Plasma Bigscreen isn't in nixpkgs yet (tracking NixOS/nixpkgs#428077). Package is built from upstream master via fetchFromGitLab.

Based on the working derivation from NixOS/nixpkgs#428353, updated for the latest upstream commit (bd143fe).

Build fixes applied

  • Source hash: Correct sha256 set for the upstream source fetch
  • Qt6QmlPrivate dependency: QCoro6Qml links against Qt6::QmlPrivate but neither QCoro's cmake config nor the upstream CMakeLists.txt imports it. Fixed by adding qtdeclarative to build inputs and patching CMakeLists.txt to find_package(Qt6 ... COMPONENTS QmlPrivate) before QCoro is loaded.

Build verified

  • boxy
  • zix790prors
  • nix-book

Rollback

Kodi role is still intact — just swap the role back in boxy's configuration.nix if Bigscreen doesn't work out.

Replaces the Kodi 10-foot UI on boxy with Plasma Bigscreen https://plasma-bigscreen.org/ — KDE's open-source TV interface. ## What changed • **New role:** roles/plasma-bigscreen/ — NixOS module + package derivation built from upstream master • **boxy config:** swaps roles.kodi → roles.plasma-bigscreen • **Keeps everything:** Jellyfin, Stremio, Firefox, KDE Connect, app-launcher-server, AVR volume control • **Session:** autologins to plasma-bigscreen-wayland instead of plasma ## Build notes Plasma Bigscreen isn't in nixpkgs yet (tracking [NixOS/nixpkgs#428077](https://github.com/NixOS/nixpkgs/issues/428077)). Package is built from upstream master via fetchFromGitLab. Based on the working derivation from [NixOS/nixpkgs#428353](https://github.com/NixOS/nixpkgs/pull/428353), updated for the latest upstream commit (bd143fe). ### Build fixes applied - **Source hash**: Correct sha256 set for the upstream source fetch - **Qt6QmlPrivate dependency**: QCoro6Qml links against `Qt6::QmlPrivate` but neither QCoro's cmake config nor the upstream CMakeLists.txt imports it. Fixed by adding `qtdeclarative` to build inputs and patching CMakeLists.txt to `find_package(Qt6 ... COMPONENTS QmlPrivate)` before QCoro is loaded. ### Build verified - ✅ boxy - ✅ zix790prors - ✅ nix-book ## Rollback Kodi role is still intact — just swap the role back in boxy's configuration.nix if Bigscreen doesn't work out.
ash-bot added 1 commit 2026-03-07 10:07:12 -08:00
boxy: replace Kodi with Plasma Bigscreen
Some checks failed
CI / check (pull_request) Failing after 1m15s
CI / build-and-cache (pull_request) Has been skipped
eacfa28321
Add plasma-bigscreen role with package built from upstream master
(not yet in nixpkgs, tracking NixOS/nixpkgs#428077).

Changes:
- New role: roles/plasma-bigscreen/ (module + package derivation)
- boxy configuration: swap roles.kodi for roles.plasma-bigscreen
- Keeps all existing functionality: Jellyfin, Stremio, Firefox,
  KDE Connect, app-launcher-server, AVR volume control (kodi user)
- Autologins to plasma-bigscreen-wayland session instead of plasma

NOTE: First build will fail with a hash mismatch on the source
fetch — copy the correct sha256 from the error into package.nix.
Some dep attribute names may also need adjustment on first build.
ash-bot added 1 commit 2026-03-07 10:13:59 -08:00
fix: merge services.displayManager into single block
Some checks failed
CI / check (pull_request) Failing after 1m32s
CI / build-and-cache (pull_request) Has been skipped
77f792b9bf
NixOS doesn't allow duplicate attribute set definitions in the
same module. Combine sessionPackages and autologin config.
ash-bot added 1 commit 2026-03-07 10:16:08 -08:00
fix: handle missing xwaylandvideobridge attr conditionally
All checks were successful
CI / check (pull_request) Successful in 2m27s
CI / build-and-cache (pull_request) Has been skipped
44786b2a25
johno added 1 commit 2026-03-07 10:33:06 -08:00
fix: plasma-bigscreen build — correct source hash and add Qt6QmlPrivate dep
All checks were successful
CI / check (pull_request) Successful in 2m32s
CI / build-and-cache (pull_request) Has been skipped
bf63c8dff3
- Set correct source hash for fetchFromGitLab (was placeholder)
- Add qtdeclarative to build inputs for Qt6::QmlPrivate target
- Patch CMakeLists.txt to find_package(Qt6 QmlPrivate) before QCoro6,
  working around QCoro not importing its own transitive dependency

Verified: boxy, zix790prors, and nix-book all build successfully.
Owner

Upstream nixpkgs status

Our package derives from NixOS/nixpkgs#428353, but diverges significantly:

nixpkgs PR (#428353) — still a draft, open since July 2025, last updated Feb 2026. Based on an older upstream commit (37dcff3, July 2025) that has far fewer dependencies (no QCoro, no SDL3, no game controller support). Has open review feedback asking to switch to fetchFromGitLab and deduplicate deps via KDE's dependencies.json.

Our package — based on a much newer upstream commit (bd143fe, March 2026) which added QCoro coroutine support, SDL3 game controller input, and several new KDE framework deps. This is why we hit the Qt6QmlPrivate build issue that the nixpkgs PR never encountered — QCoro was added upstream after their pinned commit.

Workarounds that should go away when nixpkgs catches up

  1. Qt6QmlPrivate patch — QCoro6Qml's cmake config references Qt6::QmlPrivate without importing it. This is arguably a QCoro packaging bug in nixpkgs (it should propagate qtdeclarative). When QCoro or the nixpkgs plasma-bigscreen package is fixed upstream, we can drop our find_package(Qt6 ... COMPONENTS QmlPrivate) patch.

  2. Version pinning patchsubstituteInPlace CMakeLists.txt --replace-fail 'set(PROJECT_VERSION ...' to match our plasma-workspace version. This is needed because we're building an unreleased package against a stable Plasma release. Goes away once Plasma Bigscreen gets a proper release included in the KDE Gear/Plasma release cycle.

  3. The entire custom derivation — once NixOS/nixpkgs#428077 is resolved and plasma-bigscreen lands in nixpkgs, we should switch to pkgs.kdePackages.plasma-bigscreen and delete roles/plasma-bigscreen/package.nix.

Known upstream issue to watch

The nixpkgs PR notes that the session launcher uses dbus-run-session, which can cause an incorrect session bus. Unclear if this is still an issue with the newer upstream commit — worth testing on boxy.

## Upstream nixpkgs status Our package derives from [NixOS/nixpkgs#428353](https://github.com/NixOS/nixpkgs/pull/428353), but diverges significantly: **nixpkgs PR (#428353)** — still a **draft**, open since July 2025, last updated Feb 2026. Based on an older upstream commit (`37dcff3`, July 2025) that has far fewer dependencies (no QCoro, no SDL3, no game controller support). Has open review feedback asking to switch to `fetchFromGitLab` and deduplicate deps via KDE's `dependencies.json`. **Our package** — based on a much newer upstream commit (`bd143fe`, March 2026) which added QCoro coroutine support, SDL3 game controller input, and several new KDE framework deps. This is why we hit the Qt6QmlPrivate build issue that the nixpkgs PR never encountered — QCoro was added upstream after their pinned commit. ### Workarounds that should go away when nixpkgs catches up 1. **Qt6QmlPrivate patch** — QCoro6Qml's cmake config references `Qt6::QmlPrivate` without importing it. This is arguably a QCoro packaging bug in nixpkgs (it should propagate qtdeclarative). When QCoro or the nixpkgs plasma-bigscreen package is fixed upstream, we can drop our `find_package(Qt6 ... COMPONENTS QmlPrivate)` patch. 2. **Version pinning patch** — `substituteInPlace CMakeLists.txt --replace-fail 'set(PROJECT_VERSION ...'` to match our plasma-workspace version. This is needed because we're building an unreleased package against a stable Plasma release. Goes away once Plasma Bigscreen gets a proper release included in the KDE Gear/Plasma release cycle. 3. **The entire custom derivation** — once [NixOS/nixpkgs#428077](https://github.com/NixOS/nixpkgs/issues/428077) is resolved and plasma-bigscreen lands in nixpkgs, we should switch to `pkgs.kdePackages.plasma-bigscreen` and delete `roles/plasma-bigscreen/package.nix`. ### Known upstream issue to watch The nixpkgs PR notes that the session launcher uses `dbus-run-session`, which can cause an incorrect session bus. Unclear if this is still an issue with the newer upstream commit — worth testing on boxy.
johno added 1 commit 2026-03-07 10:45:41 -08:00
docs: add upstream tracking comments to plasma-bigscreen files
All checks were successful
CI / check (pull_request) Successful in 2m28s
CI / build-and-cache (pull_request) Has been skipped
91cc6cbed8
Flag the custom derivation and workarounds as temporary with TODO
markers and links to the relevant nixpkgs issue/PR. Makes it clear
what to remove once plasma-bigscreen lands in nixpkgs.
All checks were successful
CI / check (pull_request) Successful in 2m28s
Required
Details
CI / build-and-cache (pull_request) Has been skipped
Required
Details
This pull request can be merged automatically.
This branch is out-of-date with the base branch
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin ash/plasma-bigscreen:ash/plasma-bigscreen
git checkout ash/plasma-bigscreen
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: johno/nixos-configs#45