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,18 +1,37 @@
{ 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.
soapysdrLean = pkgs.soapysdr.override {
extraPackages = with pkgs; [ soapyrtlsdr soapyremote ];
};
rtl433Lean = pkgs.rtl_433.override { soapysdr-with-plugins = soapysdrLean; };
# Leaves the RTL-SDR, rtl_tcp, file and network sources on.
sdrppLean = pkgs.sdrpp.override {
soapy_source = false;
bladerf_source = false;
limesdr_source = false;
plutosdr_source = false;
airspy_source = false;
airspyhf_source = false;
hermes_source = false;
rfspace_source = false;
dragonlabs_source = false;
spectran_http_source = false;
};
in
{
# Every installed package — GUI apps, CLI tools, and dev toolchains alike.
# If it's "install X", it goes here.
users.users."nexoniarz".packages = with pkgs; [
tumbler # Thumbnails (paired with services.tumbler.enable; also used by Nemo)
gnome-screenshot # Screenshot capture (X11)
imv # Image viewer
brightnessctl # Backlight brightness (laptop panels)
ddcutil # DDC/CI brightness (external monitors)
lm_sensors # sensors-detect helps ddcutil find I2C buses
networkmanager # nmcli, for the Wi-Fi hotspot toggle
xdg-user-dirs # Resolves localized folder names (Obrazy, not Pictures, on pl_PL)
playerctl # MPRIS media control, for the function-key media binds
tumbler
brightnessctl
ddcutil
lm_sensors # sensors-detect helps ddcutil find the I2C buses
networkmanager
xdg-user-dirs # Resolves localized folder names (Obrazy, not Pictures)
# Apps
blender
@ -25,36 +44,31 @@
filezilla
chromium
obs-studio
easyeffects # Real-time mic/output effects (pitch, EQ, ...) — auto-creates a
# selectable "Easy Effects Source" virtual mic once an Input effect
# is added, no manual PipeWire routing needed
qpwgraph # Patchbay GUI — wires EasyEffects'/Soundux's output into the
# standalone "Virtual Microphone Sink" (see system.nix)
# Soundux (soundboard) isn't packaged in this nixpkgs channel anymore —
# installed via Flatpak instead (io.github.Soundux).
sdrppLean
rtl433Lean
# Games
prismlauncher
pkgs.osu-lazer-bin
osu-lazer-bin
# Dev: compilers, runtimes, languages
# Dev
glibc
musl
cmake
gnumake # Provides the 'make' command
gnumake
gcc
python3
openjdk25
claude-code # AI Developer Assistant
claude-code
];
# Global command-line utilities available everywhere
environment.systemPackages = with pkgs; [
git
gh # GitHub CLI — was only installed ad-hoc before (login didn't survive)
gh
vim
fastfetch
gparted
efibootmgr
firejail
gnupg
lmstudio
@ -66,10 +80,11 @@
kdePackages.kate
kdePackages.qqc2-desktop-style
linphonePackages.linphone-desktop
kdePackages.kcalc # Calculator (nothing filled this role before)
kdePackages.okular # Document/PDF viewer (nothing filled this role before)
kdePackages.elisa # Audio player (vlc/ffmpeg cover video already; nothing dedicated for audio)
kdePackages.konsole # Terminal (replaces kitty)
kdePackages.dolphin # File manager (replaces Thunar, alongside Budgie's default Nemo)
kdePackages.kcalc
kdePackages.okular
kdePackages.elisa
kdePackages.konsole
kdePackages.dolphin
kdePackages.plasma-systemmonitor
];
}