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.launchpad/nixpkgs/master
parent
b2f86e6662
commit
9e0ed182aa
@ -0,0 +1,35 @@ |
||||
{ config, lib, pkgs, ... }: |
||||
with lib; |
||||
{ |
||||
options.services.sdrplayApi = { |
||||
enable = mkOption { |
||||
default = false; |
||||
example = true; |
||||
description = '' |
||||
Whether to enable the SDRplay API service and udev rules. |
||||
|
||||
<note><para> |
||||
To enable integration with SoapySDR and GUI applications like gqrx create an overlay containing |
||||
<literal>soapysdr-with-plugins = super.soapysdr.override { extraPackages = [ super.soapysdrplay ]; };</literal> |
||||
</para></note> |
||||
''; |
||||
type = lib.types.bool; |
||||
}; |
||||
}; |
||||
|
||||
config = mkIf config.services.sdrplayApi.enable { |
||||
systemd.services.sdrplayApi = { |
||||
description = "SDRplay API Service"; |
||||
after = [ "network.target" ]; |
||||
wantedBy = [ "multi-user.target" ]; |
||||
serviceConfig = { |
||||
ExecStart = "${pkgs.sdrplay}/bin/sdrplay_apiService"; |
||||
DynamicUser = true; |
||||
Restart = "on-failure"; |
||||
RestartSec = "1s"; |
||||
}; |
||||
}; |
||||
services.udev.packages = [ pkgs.sdrplay ]; |
||||
|
||||
}; |
||||
} |
@ -0,0 +1,51 @@ |
||||
{ stdenv, lib, fetchurl, autoPatchelfHook, udev }: |
||||
let |
||||
arch = if stdenv.isx86_64 then "x86_64" |
||||
else if stdenv.isi686 then "i686" |
||||
else throw "unsupported architecture"; |
||||
in stdenv.mkDerivation rec { |
||||
name = "sdrplay"; |
||||
version = "3.07.1"; |
||||
|
||||
src = fetchurl { |
||||
url = "https://www.sdrplay.com/software/SDRplay_RSP_API-Linux-${version}.run"; |
||||
sha256 = "1a25c7rsdkcjxr7ffvx2lwj7fxdbslg9qhr8ghaq1r53rcrqgzmf"; |
||||
}; |
||||
|
||||
nativeBuildInputs = [ autoPatchelfHook ]; |
||||
|
||||
buildInputs = [ udev stdenv.cc.cc.lib ]; |
||||
|
||||
unpackPhase = '' |
||||
sh "$src" --noexec --target source |
||||
''; |
||||
|
||||
sourceRoot = "source"; |
||||
|
||||
dontBuild = true; |
||||
|
||||
installPhase = '' |
||||
mkdir -p $out/{bin,lib,include,lib/udev/rules.d} |
||||
majorVersion="${lib.concatStringsSep "." (lib.take 1 (builtins.splitVersion version))}" |
||||
majorMinorVersion="${lib.concatStringsSep "." (lib.take 2 (builtins.splitVersion version))}" |
||||
libName="libsdrplay_api" |
||||
cp "${arch}/$libName.so.$majorMinorVersion" $out/lib/ |
||||
ln -s "$out/lib/$libName.so.$majorMinorVersion" "$out/lib/$libName.so.$majorVersion" |
||||
ln -s "$out/lib/$libName.so.$majorVersion" "$out/lib/$libName.so" |
||||
cp "${arch}/sdrplay_apiService" $out/bin/ |
||||
cp -r inc/* $out/include/ |
||||
cp 66-mirics.rules $out/lib/udev/rules.d/ |
||||
''; |
||||
|
||||
meta = with lib; { |
||||
description = "SDRplay API"; |
||||
longDescription = '' |
||||
Proprietary library and api service for working with SDRplay devices. For documentation and licensing details see |
||||
https://www.sdrplay.com/docs/SDRplay_API_Specification_v${lib.concatStringsSep "." (lib.take 2 (builtins.splitVersion version))}.pdf |
||||
''; |
||||
homepage = "https://www.sdrplay.com/downloads/"; |
||||
license = licenses.unfree; |
||||
maintainers = [ maintainers.pmenke ]; |
||||
platforms = platforms.linux; |
||||
}; |
||||
} |
@ -0,0 +1,29 @@ |
||||
{ stdenv, lib, fetchFromGitHub, cmake, pkg-config, soapysdr, sdrplay }: |
||||
|
||||
stdenv.mkDerivation { |
||||
name = "soapysdr-sdrplay3"; |
||||
version = "20210425"; |
||||
|
||||
src = fetchFromGitHub { |
||||
owner = "pothosware"; |
||||
repo = "SoapySDRPlay3"; |
||||
rev = "e6fdb719b611b1dfb7f26c56a4df1e241bd10129"; |
||||
sha256 = "0rrylp3ikrva227hjy60v4n6d6yvdavjsad9kszw9s948mwiashi"; |
||||
}; |
||||
|
||||
nativeBuildInputs = [ cmake pkg-config ]; |
||||
|
||||
buildInputs = [ soapysdr sdrplay ]; |
||||
|
||||
cmakeFlags = [ |
||||
"-DSoapySDR_DIR=${soapysdr}/share/cmake/SoapySDR/" |
||||
]; |
||||
|
||||
meta = with lib; { |
||||
description = "Soapy SDR module for SDRplay"; |
||||
homepage = "https://github.com/pothosware/SoapySDRPlay3"; |
||||
license = licenses.mit; |
||||
maintainers = [ maintainers.pmenke ]; |
||||
platforms = platforms.linux; |
||||
}; |
||||
} |
Loading…
Reference in new issue