feat: Compile Plasma Bigscreen against the development repo as of February 13, 2026

This commit is contained in:
UGA Innovation Factory
2026-02-13 11:35:24 -05:00
parent 950be4b8ce
commit eb791734ba
7 changed files with 306 additions and 1 deletions

View File

@@ -66,6 +66,6 @@ in
# ========== Software Profile ========== # ========== Software Profile ==========
athenix.sw.enable = lib.mkDefault true; athenix.sw.enable = lib.mkDefault true;
athenix.sw.desktop.enable = lib.mkDefault true; athenix.sw.bigscreen.enable = lib.mkDefault true;
}; };
} }

24
pkgs/default.nix Normal file
View File

@@ -0,0 +1,24 @@
{ pkgs, ... }:
{
plasma-bigscreen = pkgs.callPackage ./plasma-bigscreen.nix {
inherit (pkgs.kdePackages)
kcmutils
kdeclarative
ki18n
kio
knotifications
kwayland
kwindowsystem
mkKdeDerivation
qtmultimedia
plasma-workspace
bluez-qt
qtwebengine
plasma-nano
plasma-nm
milou
kscreen
kdeconnect-kde
;
};
}

112
pkgs/plasma-bigscreen.nix Normal file
View File

@@ -0,0 +1,112 @@
# NOTE: from https://github.com/NixOS/nixpkgs/pull/428353#issuecomment-3498917203
# more info in tv.nix nixos config
{
mkKdeDerivation,
lib,
fetchFromGitLab,
pkg-config,
ki18n,
kdeclarative,
kcmutils,
knotifications,
kio,
kwayland,
kwindowsystem,
plasma-workspace,
qtmultimedia,
bluez-qt,
qtwebengine,
plasma-nano,
plasma-nm,
milou,
kscreen,
kdeconnect-kde,
sdl3,
libcec ? null
}:
mkKdeDerivation {
pname = "plasma-bigscreen";
version = "unstable-2026-02-13";
src = fetchFromGitLab {
domain = "invent.kde.org";
owner = "plasma";
repo = "plasma-bigscreen";
rev = "1db19cdfc2ac1653cb129f403702addec2caf4c7";
hash = "sha256-dfsR20dY1jtLmEpGRxvp9xwOHJFn3mVw+1RUGBJRLpQ=";
};
extraNativeBuildInputs = [
pkg-config
];
buildInputs = [
ki18n
kdeclarative
kcmutils
knotifications
kio
kwayland
kwindowsystem
plasma-workspace
qtmultimedia
bluez-qt
qtwebengine
plasma-nano
plasma-nm
milou
kscreen
kdeconnect-kde
sdl3
] ++ lib.optionals (libcec != null) [ libcec ];
postPatch = ''
substituteInPlace bin/plasma-bigscreen-wayland.in \
--replace-fail @KDE_INSTALL_FULL_LIBEXECDIR@ "${plasma-workspace}/libexec"
# Plasma version numbers are required to match, but we are building an
# unreleased package against a stable Plasma release.
substituteInPlace CMakeLists.txt \
--replace-fail 'set(PROJECT_VERSION "6.5.80")' 'set(PROJECT_VERSION "${plasma-workspace.version}")'
# Fix for Qt 6.10+ which requires explicit find_package of private targets
# Reference: https://github.com/NixOS/nixpkgs/pull/461599/changes
substituteInPlace CMakeLists.txt \
--replace-fail \
'find_package(Qt6 ''${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
Quick
Core
Qml
DBus
Network
Multimedia
WebEngineCore
WebEngineQuick
WaylandClient
)' \
'find_package(Qt6 ''${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
Quick
Core
Qml
QmlPrivate
DBus
Network
Multimedia
WebEngineCore
WebEngineQuick
WaylandClient
)'
'';
preFixup = ''
wrapQtApp $out/bin/plasma-bigscreen-wayland
'';
passthru.providedSessions = [
"plasma-bigscreen-wayland"
];
meta = {
license = lib.licenses.gpl2Plus;
};
}

63
sw/bigscreen/default.nix Normal file
View File

@@ -0,0 +1,63 @@
# ============================================================================
# Bigscreen Software Configuration
# ============================================================================
# Imports desktop-specific programs and services (KDE Plasma, CUPS, etc.)
{
config,
lib,
pkgs,
inputs,
...
}:
with lib;
let
cfg = config.athenix.sw.bigscreen;
in
{
options.athenix.sw.bigscreen = mkOption {
type = lib.types.submodule {
options = {
enable = mkOption {
type = lib.types.bool;
default = false;
description = ''
Enable full desktop environment with KDE Plasma 6 Bigscreen.
Includes:
- KDE Plasma 6 desktop with SDDM display manager
- Printing and scanning support (CUPS)
- Virtualization (libvirt, virt-manager)
- Bluetooth and audio (PipeWire)
Recommended for: home theater PCs, media centers, and large-screen desktops.
'';
example = true;
};
};
};
default = { };
description = "Desktop environment configuration (KDE Plasma 6).";
};
config = mkIf cfg.enable (mkMerge [
(import ./programs.nix {
inherit
config
lib
pkgs
inputs
;
})
(import ./services.nix {
inherit
config
lib
pkgs
inputs
;
})
]);
}

31
sw/bigscreen/programs.nix Normal file
View File

@@ -0,0 +1,31 @@
{
config,
lib,
pkgs,
...
}:
with lib;
let
cfg = config.athenix.sw;
basePackages = with pkgs; [
tmux
man
(chromium.override {
commandLineArgs = [ "--enable-features=TouchpadOverscrollHistoryNavigation" ];
})
lm_sensors
];
in
{
environment.systemPackages = subtractLists cfg.excludePackages (basePackages ++ cfg.extraPackages);
programs.mtr.enable = true;
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
programs.virt-manager.enable = true;
}

74
sw/bigscreen/services.nix Normal file
View File

@@ -0,0 +1,74 @@
{
lib,
pkgs,
...
}:
let
xelpkgs = pkgs: import ../../pkgs pkgs;
bigscreenpkgs = xelpkgs pkgs;
in
{
athenix.sw.python.enable = lib.mkDefault true;
services.displayManager.sddm = {
enable = true;
theme = "breeze";
wayland.enable = true;
enableHidpi = true;
settings = {
Autologin = {
Session = "plasma-bigscreen-wayland";
User = "engr-ugaif";
};
};
};
services.desktopManager.plasma6.enable = true;
services.displayManager.sessionPackages = with bigscreenpkgs; [
plasma-bigscreen
];
services.printing.enable = true;
networking.networkmanager.enable = true;
services.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
fonts.packages = with pkgs; [
nerd-fonts.fira-code
corefonts
noto-fonts
];
fonts.fontconfig = {
enable = true;
defaultFonts.monospace = [ "FiraCode Nerd Font Mono" ];
};
hardware.bluetooth.enable = true;
services.blueman.enable = true;
networking.firewall.enable = true;
services.flatpak.enable = true;
xdg.portal.enable = true;
xdg.portal.extraPortals = [ pkgs.kdePackages.xdg-desktop-portal-kde ];
virtualisation.libvirtd.enable = true;
services.thermald.enable = true;
services.fwupd.enable = true;
services.openssh = {
enable = true;
settings.PermitRootLogin = "no";
};
}

View File

@@ -32,6 +32,7 @@ in
./builders ./builders
./tablet-kiosk ./tablet-kiosk
./stateless-kiosk ./stateless-kiosk
./bigscreen
inputs.home-manager.nixosModules.home-manager inputs.home-manager.nixosModules.home-manager
inputs.agenix.nixosModules.default inputs.agenix.nixosModules.default
inputs.disko.nixosModules.disko inputs.disko.nixosModules.disko