2025-07-23 23:36:27 +02:00

153 lines
3.5 KiB
Nix

{ config, lib, pkgs, ... }:
let
gnss-sdr = pkgs.stdenv.mkDerivation rec {
pname = "gnss-sdr";
version = "0.0.20";
src = pkgs.fetchFromGitHub {
owner = "gnss-sdr";
repo = "gnss-sdr";
rev = "v${version}";
sha256 = "sha256-kQv8I4dcWeRuAfYtD5EAAMwvfnOTi+QWDogUZb4M/qQ=";
};
nativeBuildInputs = with pkgs; [ cmake pkg-config python3 git ];
buildInputs = with pkgs; [
volk boost fftw protobuf pugixml
gnuradio gnuradioPackages.osmosdr
armadillo glog gflags spdlog
python3Packages.mako blas lapack
gnutls openssl zlib hdf5 matio
libiio gtest orc
];
cmakeFlags = [
"-DCMAKE_BUILD_TYPE=Release"
"-DCMAKE_INSTALL_LIBDIR=lib"
"-DENABLE_OSMOSDR=ON"
"-DENABLE_VOLK_GNSSSDR=ON"
"-DENABLE_UNIT_TESTING=OFF"
"-DENABLE_OWN_GLOG=OFF"
"-DENABLE_OWN_ARMADILLO=OFF"
];
enableParallelBuilding = true;
buildPhase = ''
runHook preBuild
make volk_gnsssdr_module -j$NIX_BUILD_CORES
make volk_gnsssdr_module_install -j$NIX_BUILD_CORES || true
make -j$NIX_BUILD_CORES
runHook postBuild
'';
installPhase = ''
runHook preInstall
make install
runHook postInstall
'';
};
satdump = pkgs.stdenv.mkDerivation rec {
pname = "satdump";
version = "1.2.2";
src = pkgs.fetchgit {
url = "https://github.com/SatDump/SatDump.git";
rev = version;
sha256 = "sha256-QGegi5/geL5U3/ecc3hsdW+gp25UE9fOYVLFJUo/N50=";
};
nativeBuildInputs = with pkgs; [ cmake pkg-config ];
buildInputs = with pkgs; [
fftwFloat libpng libtiff jemalloc volk
(nng.overrideAttrs (old: {
cmakeFlags = old.cmakeFlags or [] ++ [ "-DBUILD_SHARED_LIBS=ON" ];
}))
rtl-sdr-librtlsdr hackrf airspy airspyhf
glfw zenity zstd libad9361 libiio
];
cmakeFlags = [ "-DCMAKE_BUILD_TYPE=Release" ];
};
gr-gsm = pkgs.stdenv.mkDerivation rec {
pname = "gr-gsm";
version = "porting_to_3.11";
src = pkgs.fetchFromGitHub {
owner = "ptrkrysik";
repo = "gr-gsm";
rev = "porting_to_3.11";
sha256 = "sha256-ILw1n0qdqcqJsuWQ3g1zNP+z2OlJ6sq+AY8LC1lTDJg=";
};
nativeBuildInputs = with pkgs; [
cmake pkg-config swig doxygen
python3 python3Packages.numpy python3Packages.pybind11 python3Packages.pygccxml
];
buildInputs = with pkgs; [
python3 python3Packages.numpy python3Packages.pybind11 python3Packages.pygccxml
gnuradio gnuradioPackages.osmosdr volk
fftw boost cppunit libpcap libosmocore
log4cpp gmpxx mpir spdlog
];
cmakeFlags = [
"-DCMAKE_BUILD_TYPE=Release"
"-DCMAKE_PREFIX_PATH=${pkgs.gnuradio}/lib/cmake"
];
enableParallelBuilding = true;
buildPhase = ''
runHook preBuild
make
runHook postBuild
'';
installPhase = ''
runHook preInstall
make install
mkdir -p $out/bin
cp -v $src/apps/grgsm_* $out/bin/
runHook postInstall
'';
};
in
{
hardware = {
hackrf.enable = true;
rtl-sdr.enable = true;
};
environment.systemPackages = with pkgs; [
gnuradio
gnuradioPackages.lora_sdr
gnuradioPackages.osmosdr
gnuradioPackages.bladeRF
multimon-ng
sdrpp
qsstv
wsjtx
osmo-hlr
osmo-bts
osmo-bsc
osmo-sgsn
osmo-ggsn
kalibrate-hackrf
srsran
hackrf
rtl-sdr
rtl_433
gsmlib
libsrs2
# build
gnss-sdr
satdump
gr-gsm
];
}