Add RTL-SDR support; switch to Limine + SDDM; drop Hyprland-era leftovers

RTL-SDR Blog V4. The V4 swapped the R820T2 tuner for an R828D behind a
built-in HF upconverter, so it needs the rtlsdrblog fork of librtlsdr --
the stock Osmocom one reports no supported devices. pkgs.rtl-sdr on this
channel already is that fork (rtl-sdr-blog 1.3.5), so hardware.rtl-sdr's
default package is correct as-is. That also blacklists the DVB-T drivers
that otherwise grab the dongle on plug-in, and ships udev rules handing it
to plugdev at 0660 -- hence plugdev in the user's groups, or every SDR app
needs root. Apps: SDR++ and rtl_433; the rtl_* CLI tools come with the
driver.

Both SDR apps are overridden to drop hardware we do not own. SDR++ and
rtl_433 default to supporting every radio ever made, which pulled in UHD
(1.4 GB of USRP firmware), BladeRF and LimeSuite. gqrx was the original
choice but reaches UHD through gr-osmosdr's gr-uhd feature; SDR++ uses no
GNU Radio at all. Per-package overrides rather than a global overlay, so
nothing else is affected.

Bootloader: systemd-boot -> Limine, themed to match the Gruvbox icon
theme. Limine installs to its own EFI directory and adds its own NVRAM
entry, so systemd-boot stays on the ESP as a firmware-menu fallback.

Display manager: lightdm -> SDDM with wayland.enable. Budgie in this
channel ships only a Wayland session (labwc) and was already running as
one; lightdm just handles that badly. SDDM's greeter runs on weston, not
kwin, so no KDE compositor comes along.

Qt defaults over Budgie's GTK/MATE apps. The Budgie module force-enables
gnome-terminal and installs nemo, eom, pluma, atril, engrampa, mate-calc
and mate-system-monitor; environment.budgie.excludePackages drops all of
them in favour of konsole, dolphin, gwenview, kate, okular, ark, kcalc and
plasma-systemmonitor. default-apps.nix rewritten to match: 113
associations, video to vlc, audio to elisa, text/code to kate, and
/etc/xdg/xdg-terminals.list pointing at konsole. Fixes a real bug there --
inode/directory was mapped to gwenview, so folders opened in the image
viewer.

Hyprland-era leftovers removed. system-telemetry and weather-fetch fed
Quickshell panels that no longer exist; brightness-ctl and hotspot-start
lost their keybinds. jq went with weather-fetch. Also dropped
gnome-screenshot, playerctl and imv. vault-toggle and strip-metadata stay
-- they never depended on Hyprland.

Comments trimmed throughout: deleted anything restating the code, kept the
ones recording a why you cannot recover by reading it (systemd.gpt_auto,
disable_ertm, ptrace_scope, the stable ethernet MAC, the mimeapps.list
parser gotcha). system.nix went 225 -> 166 lines.

README rewritten -- it still described Hyprland, Quickshell and Kitty.
Screenshot dropped.
This commit is contained in:
Nexoniarz 2026-09-05 19:38:56 +02:00
commit 33bf94bd4c
14 changed files with 177 additions and 396 deletions

View file

@ -1,38 +1,50 @@
{ config, pkgs, ... }:
{
# --- Budgie: X11 desktop environment, lightdm login manager ---
# Budgie ships only a Wayland session here (labwc); xserver stays on for
# Xwayland and for the xkb layout below.
services.xserver.enable = true;
services.xserver.displayManager.lightdm.enable = true;
services.desktopManager.budgie.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.
services.displayManager.sddm = {
enable = true;
wayland.enable = true;
};
security.polkit.enable = true;
# Keyboard layout for console/X11/lightdm
services.xserver.xkb = {
layout = "pl";
variant = "";
};
# Thumbnails + trash/volume mount integration for Dolphin and Budgie's
# default Nemo file manager alike.
services.tumbler.enable = true;
services.gvfs.enable = true;
# Drop the xterm fallback terminal xserver.nix installs unconditionally —
# Konsole is the real terminal here.
# xserver.nix installs xterm unconditionally; Konsole is the terminal here.
services.xserver.excludePackages = [ pkgs.xterm ];
# GTK/Qt themselves stay at their stock defaults (no forced dark mode, no
# custom CSS) — only the icon and cursor theme are picked explicitly, via
# Budgie's own GSettings-override hook rather than a custom script.
# (extraGSettingsOverridePackages is for packages that ship their own
# gsettings-schema overrides, e.g. plugins — not theme packages, which
# just need to be on the system path for their icons/cursors to resolve.)
# 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
];
environment.systemPackages = [
pkgs.gruvbox-plus-icons
pkgs.bibata-cursors
];
services.desktopManager.budgie.extraGSettingsOverrides = ''
[org.gnome.desktop.interface]
icon-theme='Gruvbox-Plus-Dark'