infrastructure/packages/openwebrxplus.nix
2025-10-20 10:41:05 -07:00

272 lines
6.1 KiB
Nix

{
stdenv,
lib,
buildPythonPackage,
buildPythonApplication,
fetchFromGitHub,
pkg-config,
cmake,
ninja,
setuptools,
python,
libsamplerate,
fftwFloat,
rtl-sdr,
soapysdr-with-plugins,
pydigiham,
digiham,
direwolf,
sox,
wsjtx,
codecserver,
}: let
js8py = buildPythonPackage rec {
pname = "js8py";
version = "0.1.1";
src = fetchFromGitHub {
owner = "jketterl";
repo = pname;
rev = version;
sha256 = "1j80zclg1cl5clqd00qqa16prz7cyc32bvxqz2mh540cirygq24w";
};
format = "setuptools";
pythonImportsCheck = ["js8py" "test"];
meta = with lib; {
homepage = "https://github.com/jketterl/js8py";
description = "A library to decode the output of the js8 binary of JS8Call";
license = licenses.gpl3Only;
maintainers = teams.c3d2.members;
};
};
csdr-eti = stdenv.mkDerivation rec {
pname = "csdr-eti";
version = "0.0.11";
src = fetchFromGitHub {
owner = "luarvique";
repo = pname;
rev = version;
hash = "sha256-jft4zi1mLU6zZ+2gsym/3Xu8zkKL0MeoztcyMPM0RYI=";
};
nativeBuildInputs = [
cmake
ninja
pkg-config
];
propagatedBuildInputs = [
fftwFloat
libsamplerate
];
buildInputs = [
csdr
];
hardeningDisable = lib.optional stdenv.isAarch64 "format";
meta = with lib; {
homepage = "https://github.com/jketterl/csdr";
description = "A simple DSP library and command-line tool for Software Defined Radio";
license = licenses.gpl3Only;
platforms = platforms.unix;
broken = stdenv.isDarwin;
maintainers = teams.c3d2.members;
};
};
csdr = stdenv.mkDerivation rec {
pname = "csdr";
version = "0.18.23";
src = fetchFromGitHub {
owner = "luarvique";
repo = pname;
rev = version;
hash = "sha256-Q7g1OqfpAP6u78zyHjLP2ASGYKNKCAVv8cgGwytZ+cE=";
};
nativeBuildInputs = [
cmake
ninja
pkg-config
];
propagatedBuildInputs = [
fftwFloat
libsamplerate
];
cmakeFlags = [ "-DCMAKE_POLICY_VERSION_MINIMUM=3.5" ];
hardeningDisable = lib.optional stdenv.isAarch64 "format";
postFixup = ''
substituteInPlace "$out"/lib/pkgconfig/csdr.pc \
--replace '=''${prefix}//' '=/' \
--replace '=''${exec_prefix}//' '=/'
'';
meta = with lib; {
homepage = "https://github.com/jketterl/csdr";
description = "A simple DSP library and command-line tool for Software Defined Radio";
license = licenses.gpl3Only;
platforms = platforms.unix;
broken = stdenv.isDarwin;
maintainers = teams.c3d2.members;
};
};
digiham' = (digiham.override {
inherit csdr;
}).overrideAttrs (old: {
cmakeFlags = [ "-DCMAKE_POLICY_VERSION_MINIMUM=3.5" ];
});
pydigiham' = pydigiham.override (old: {
digiham = digiham';
inherit pycsdr;
});
pycsdr-eti = buildPythonPackage rec {
pname = "pycsdr-eti";
version = "0.0.11";
format = "setuptools";
src = fetchFromGitHub {
owner = "luarvique";
repo = "pycsdr-eti";
rev = version;
hash = "sha256-pjY5sxHvuDTUDxpdhWk8U7ibwxHznyywEqj1btAyXBE=";
};
postPatch = ''
substituteInPlace setup.py \
--replace ', "fftw3"' ""
'';
propagatedBuildInputs = [pycsdr];
buildInputs = [csdr-eti csdr];
NIX_CFLAGS_COMPILE = [
"-I${pycsdr}/include/${python.libPrefix}"
];
# has no tests
doCheck = false;
pythonImportsCheck = ["csdreti"];
meta = {
homepage = "https://github.com/jketterl/pycsdr";
description = "bindings for the csdr library";
license = lib.licenses.gpl3Only;
maintainers = lib.teams.c3d2.members;
};
};
pycsdr = buildPythonPackage rec {
pname = "pycsdr";
version = "0.18.23";
format = "setuptools";
src = fetchFromGitHub {
owner = "luarvique";
repo = "pycsdr";
rev = version;
hash = "sha256-NjRBC7bhq2bMlRI0Q8bcGcneD/HlAO6l/0As3/lk4e8=";
};
propagatedBuildInputs = [csdr];
# has no tests
doCheck = false;
pythonImportsCheck = ["pycsdr"];
meta = {
homepage = "https://github.com/jketterl/pycsdr";
description = "bindings for the csdr library";
license = lib.licenses.gpl3Only;
maintainers = lib.teams.c3d2.members;
};
};
owrx_connector = stdenv.mkDerivation rec {
pname = "owrx_connector";
version = "0.6.5";
src = fetchFromGitHub {
owner = "luarvique";
repo = pname;
rev = version;
sha256 = "sha256-e0VEv9t4gVDxJEbDJm1aKSJeqlmhT/QimC3x4JJ6ke8=";
};
nativeBuildInputs = [
cmake
ninja
pkg-config
];
buildInputs = [
libsamplerate
fftwFloat
csdr
rtl-sdr
soapysdr-with-plugins
];
cmakeFlags = [ "-DCMAKE_POLICY_VERSION_MINIMUM=3.5" ];
meta = with lib; {
homepage = "https://github.com/jketterl/owrx_connector";
description = "A set of connectors that are used by OpenWebRX to interface with SDR hardware";
license = licenses.gpl3Only;
platforms = platforms.unix;
maintainers = teams.c3d2.members;
};
};
in
buildPythonApplication rec {
pname = "openwebrxplus";
version = "1.2.49";
src = fetchFromGitHub {
owner = "luarvique";
repo = "openwebrx";
rev = version;
sha256 = "sha256-QHgt0JGV4E8vOZpY3UwxbtBV38NZBXNrc2asYbHjEqo=";
};
pyproject = true;
build-system = [ setuptools ];
propagatedBuildInputs = [
pycsdr
pycsdr-eti
pydigiham'
js8py
owrx_connector
soapysdr-with-plugins
];
buildInputs = [
direwolf
sox
wsjtx
codecserver
];
pythonImportsCheck = ["csdr" "owrx" "test"];
passthru = {
inherit js8py owrx_connector pycsdr csdr;
};
meta = with lib; {
homepage = "https://github.com/luarvique/openwebrx";
description = "A simple DSP library and command-line tool for Software Defined Radio";
mainProgram = "openwebrx";
license = licenses.gpl3Only;
maintainers = teams.c3d2.members;
};
}