Switch desktop from Budgie to KDE Plasma; OpenRGB support and misc packages

Budgie's Wayland session had been broken; Plasma 6 replaces it with SDDM
still handling the Wayland greeter. Since the KDE apps in apps.nix were
already installed as GTK/MATE replacements, Budgie's exclude-package list
is no longer needed under native Plasma.

Also: OpenRGB service + udev rule, RTL-SDR/system tweaks, lmms, qemu,
qt5/qt6 qtwayland, nix flakes enabled.
This commit is contained in:
Nexoniarz 2026-09-18 12:46:12 +02:00
commit 095e869faa
4 changed files with 48 additions and 37 deletions

View file

@ -1,14 +1,21 @@
{ config, pkgs, ... }:
let
# Both SDR++ and rtl_433 default to supporting every radio ever made, which
# drags in UHD (USRP firmware), BladeRF and LimeSuite — ~1.5 GB for hardware
# we don't own. These two overrides cut that down to the RTL-SDR paths.
# drags in UHD (USRP firmware), BladeRF and LimeSuite — ~1.5 GB for
# hardware we don't own. These two overrides cut that down to the RTL-SDR paths.
soapysdrLean = pkgs.soapysdr.override {
extraPackages = with pkgs; [ soapyrtlsdr soapyremote ];
extraPackages = with pkgs; [
soapyrtlsdr
soapyremote
];
};
rtl433Lean = pkgs.rtl_433.override { soapysdr-with-plugins = soapysdrLean; };
rtl433Lean = pkgs.rtl_433.override {
soapysdr-with-plugins = soapysdrLean;
};
# Leaves the RTL-SDR, rtl_tcp, file and network sources on.
sdrppLean = pkgs.sdrpp.override {
@ -23,15 +30,17 @@ let
dragonlabs_source = false;
spectran_http_source = false;
};
in
{
users.users."nexoniarz".packages = with pkgs; [
tumbler
brightnessctl
ddcutil
lm_sensors # sensors-detect helps ddcutil find the I2C buses
lm_sensors
networkmanager
xdg-user-dirs # Resolves localized folder names (Obrazy, not Pictures)
xdg-user-dirs
# Apps
blender
@ -46,6 +55,8 @@ in
obs-studio
sdrppLean
rtl433Lean
lmms
openrgb
# Games
prismlauncher
@ -86,5 +97,8 @@ in
kdePackages.konsole
kdePackages.dolphin
kdePackages.plasma-systemmonitor
qt5.qtwayland
qt6.qtwayland
qemu
];
}

View file

@ -1,13 +1,14 @@
{ config, pkgs, ... }:
{
# Budgie ships only a Wayland session here (labwc); xserver stays on for
# Xwayland and for the xkb layout below.
# Plasma ships a proper Wayland session (KWin) with solid Xwayland
# support; xserver stays on for that Xwayland layer and for the xkb
# layout below, not because the session itself needs it.
services.xserver.enable = true;
services.desktopManager.budgie.enable = true;
services.desktopManager.plasma6.enable = true;
# SDDM replaces lightdm: Qt, and it actually launches Wayland sessions.
# Its own greeter runs on weston, not kwin, so no KDE compositor tags along.
# SDDM is KDE's own greeter — Qt-based, and launches Wayland sessions
# natively, Plasma included.
services.displayManager.sddm = {
enable = true;
wayland.enable = true;
@ -26,28 +27,11 @@
# xserver.nix installs xterm unconditionally; Konsole is the terminal here.
services.xserver.excludePackages = [ pkgs.xterm ];
# Budgie's module installs GTK/MATE apps that duplicate the Qt ones in
# apps.nix. Excluding gnome-terminal also flips programs.gnome-terminal.enable
# off — the module gates that on this same list.
environment.budgie.excludePackages = with pkgs; [
nemo # -> dolphin
gnome-terminal # -> konsole
eom # -> gwenview
pluma # -> kate
atril # -> okular
engrampa # -> ark
mate-calc # -> kcalc
mate-system-monitor # -> plasma-systemmonitor
];
# Icon/cursor theme packages. Plasma has no gsettings-style declarative
# knob for this the way Budgie did — pick them in System Settings, or
# bring in plasma-manager later for a fully declarative setup.
environment.systemPackages = [
pkgs.gruvbox-plus-icons
pkgs.bibata-cursors
];
services.desktopManager.budgie.extraGSettingsOverrides = ''
[org.gnome.desktop.interface]
icon-theme='Gruvbox-Plus-Dark'
cursor-theme='Bibata-Modern-Classic'
'';
}

View file

@ -27,7 +27,6 @@
};
boot.kernelPackages = pkgs.linuxPackages;
boot.supportedFilesystems = [ "fuse" ];
networking.hostName = "nixos";
networking.networkmanager.enable = true;
@ -59,7 +58,7 @@
dates = "weekly";
options = "--delete-older-than 7d";
};
console.keyMap = "pl2";
security.rtkit.enable = true;
@ -85,6 +84,11 @@
};
};
services.udev.extraRules = ''
# OpenRGB
SUBSYSTEM=="i2c-dev", GROUP="i2c", MODE="0660"
'';
services.blueman.enable = true;
programs.firejail = {
@ -133,6 +137,8 @@
];
environment.systemPackages = [ pkgs.file ];
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# --- Hardening ---
# zram instead of disk swap: nothing sensitive is written to disk in
@ -140,7 +146,7 @@
# old swap partition regardless of swapDevices, hence the kernel param.
zramSwap.enable = true;
swapDevices = lib.mkForce [ ];
boot.kernelParams = [ "systemd.gpt_auto=0" ];
boot.kernelParams = [ "systemd.gpt_auto=0" "acpi_enforce_resources=lax" ];
boot.kernel.sysctl = {
"kernel.kptr_restrict" = 2;
@ -160,6 +166,10 @@
systemd.coredump.enable = false;
security.protectKernelImage = true;
systemd.tmpfiles.rules = [
"L+ /var/lib/flatpak/exports/share/applications - - - - /var/lib/flatpak/app/com.usebottles.bottles/current/active/export/share/applications"
];
networking.nameservers = [ "1.1.1.1#cloudflare-dns.com" "9.9.9.9#dns.quad9.net" ];
services.resolved = {
@ -182,6 +192,9 @@
uri = "";
interval = 0;
};
services.hardware.openrgb = {
enable = true;
motherboard = "amd";
};
services.geoclue2.enable = false;
}