feat: Compile Plasma Bigscreen against the development repo as of February 13, 2026
This commit is contained in:
@@ -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
24
pkgs/default.nix
Normal 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
112
pkgs/plasma-bigscreen.nix
Normal 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
63
sw/bigscreen/default.nix
Normal 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
31
sw/bigscreen/programs.nix
Normal 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
74
sw/bigscreen/services.nix
Normal 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";
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user