sdrplay: init at 3.07.1

this adds support for software defined radio (SDR) devices by SDRplay.
SDRplay provides an unfree binary library and api-service as well
as a MIT licensed adapter library for SoapySDR for integration
with many popular SDR applications.

pmenke 9e0ed182 b2f86e66

+120
+1
nixos/modules/module-list.nix
··· 547 547 ./services/misc/ripple-data-api.nix 548 548 ./services/misc/serviio.nix 549 549 ./services/misc/safeeyes.nix 550 + ./services/misc/sdrplay.nix 550 551 ./services/misc/sickbeard.nix 551 552 ./services/misc/siproxd.nix 552 553 ./services/misc/snapper.nix
+35
nixos/modules/services/misc/sdrplay.nix
··· 1 + { config, lib, pkgs, ... }: 2 + with lib; 3 + { 4 + options.services.sdrplayApi = { 5 + enable = mkOption { 6 + default = false; 7 + example = true; 8 + description = '' 9 + Whether to enable the SDRplay API service and udev rules. 10 + 11 + <note><para> 12 + To enable integration with SoapySDR and GUI applications like gqrx create an overlay containing 13 + <literal>soapysdr-with-plugins = super.soapysdr.override { extraPackages = [ super.soapysdrplay ]; };</literal> 14 + </para></note> 15 + ''; 16 + type = lib.types.bool; 17 + }; 18 + }; 19 + 20 + config = mkIf config.services.sdrplayApi.enable { 21 + systemd.services.sdrplayApi = { 22 + description = "SDRplay API Service"; 23 + after = [ "network.target" ]; 24 + wantedBy = [ "multi-user.target" ]; 25 + serviceConfig = { 26 + ExecStart = "${pkgs.sdrplay}/bin/sdrplay_apiService"; 27 + DynamicUser = true; 28 + Restart = "on-failure"; 29 + RestartSec = "1s"; 30 + }; 31 + }; 32 + services.udev.packages = [ pkgs.sdrplay ]; 33 + 34 + }; 35 + }
+51
pkgs/applications/radio/sdrplay/default.nix
··· 1 + { stdenv, lib, fetchurl, autoPatchelfHook, udev }: 2 + let 3 + arch = if stdenv.isx86_64 then "x86_64" 4 + else if stdenv.isi686 then "i686" 5 + else throw "unsupported architecture"; 6 + in stdenv.mkDerivation rec { 7 + name = "sdrplay"; 8 + version = "3.07.1"; 9 + 10 + src = fetchurl { 11 + url = "https://www.sdrplay.com/software/SDRplay_RSP_API-Linux-${version}.run"; 12 + sha256 = "1a25c7rsdkcjxr7ffvx2lwj7fxdbslg9qhr8ghaq1r53rcrqgzmf"; 13 + }; 14 + 15 + nativeBuildInputs = [ autoPatchelfHook ]; 16 + 17 + buildInputs = [ udev stdenv.cc.cc.lib ]; 18 + 19 + unpackPhase = '' 20 + sh "$src" --noexec --target source 21 + ''; 22 + 23 + sourceRoot = "source"; 24 + 25 + dontBuild = true; 26 + 27 + installPhase = '' 28 + mkdir -p $out/{bin,lib,include,lib/udev/rules.d} 29 + majorVersion="${lib.concatStringsSep "." (lib.take 1 (builtins.splitVersion version))}" 30 + majorMinorVersion="${lib.concatStringsSep "." (lib.take 2 (builtins.splitVersion version))}" 31 + libName="libsdrplay_api" 32 + cp "${arch}/$libName.so.$majorMinorVersion" $out/lib/ 33 + ln -s "$out/lib/$libName.so.$majorMinorVersion" "$out/lib/$libName.so.$majorVersion" 34 + ln -s "$out/lib/$libName.so.$majorVersion" "$out/lib/$libName.so" 35 + cp "${arch}/sdrplay_apiService" $out/bin/ 36 + cp -r inc/* $out/include/ 37 + cp 66-mirics.rules $out/lib/udev/rules.d/ 38 + ''; 39 + 40 + meta = with lib; { 41 + description = "SDRplay API"; 42 + longDescription = '' 43 + Proprietary library and api service for working with SDRplay devices. For documentation and licensing details see 44 + https://www.sdrplay.com/docs/SDRplay_API_Specification_v${lib.concatStringsSep "." (lib.take 2 (builtins.splitVersion version))}.pdf 45 + ''; 46 + homepage = "https://www.sdrplay.com/downloads/"; 47 + license = licenses.unfree; 48 + maintainers = [ maintainers.pmenke ]; 49 + platforms = platforms.linux; 50 + }; 51 + }
+29
pkgs/applications/radio/soapysdrplay/default.nix
··· 1 + { stdenv, lib, fetchFromGitHub, cmake, pkg-config, soapysdr, sdrplay }: 2 + 3 + stdenv.mkDerivation { 4 + name = "soapysdr-sdrplay3"; 5 + version = "20210425"; 6 + 7 + src = fetchFromGitHub { 8 + owner = "pothosware"; 9 + repo = "SoapySDRPlay3"; 10 + rev = "e6fdb719b611b1dfb7f26c56a4df1e241bd10129"; 11 + sha256 = "0rrylp3ikrva227hjy60v4n6d6yvdavjsad9kszw9s948mwiashi"; 12 + }; 13 + 14 + nativeBuildInputs = [ cmake pkg-config ]; 15 + 16 + buildInputs = [ soapysdr sdrplay ]; 17 + 18 + cmakeFlags = [ 19 + "-DSoapySDR_DIR=${soapysdr}/share/cmake/SoapySDR/" 20 + ]; 21 + 22 + meta = with lib; { 23 + description = "Soapy SDR module for SDRplay"; 24 + homepage = "https://github.com/pothosware/SoapySDRPlay3"; 25 + license = licenses.mit; 26 + maintainers = [ maintainers.pmenke ]; 27 + platforms = platforms.linux; 28 + }; 29 + }
+4
pkgs/top-level/all-packages.nix
··· 17833 17833 17834 17834 sdnotify-wrapper = skawarePackages.sdnotify-wrapper; 17835 17835 17836 + sdrplay = callPackage ../applications/radio/sdrplay {}; 17837 + 17836 17838 sblim-sfcc = callPackage ../development/libraries/sblim-sfcc {}; 17837 17839 17838 17840 selinux-sandbox = callPackage ../os-specific/linux/selinux-sandbox { }; ··· 17937 17939 soapysdr = callPackage ../applications/radio/soapysdr { }; 17938 17940 17939 17941 soapyremote = callPackage ../applications/radio/soapyremote { }; 17942 + 17943 + soapysdrplay = callPackage ../applications/radio/soapysdrplay { }; 17940 17944 17941 17945 soapysdr-with-plugins = callPackage ../applications/radio/soapysdr { 17942 17946 extraPackages = [