1{ config, lib, pkgs, ... }:
2
3let
4 cfg = config.hardware.rtl-sdr;
5
6in {
7 options.hardware.rtl-sdr = {
8 enable = lib.mkEnableOption ''
9 Enables rtl-sdr udev rules, ensures 'plugdev' group exists, and blacklists DVB kernel modules.
10 This is a prerequisite to using devices supported by rtl-sdr without being root, since rtl-sdr USB descriptors will be owned by plugdev through udev.
11 '';
12 };
13
14 config = lib.mkIf cfg.enable {
15 boot.blacklistedKernelModules = [ "dvb_usb_rtl28xxu" "e4000" "rtl2832" ];
16 services.udev.packages = [ pkgs.rtl-sdr ];
17 users.groups.plugdev = {};
18 };
19}