From d6d387ee85c7de57032398387b101ed067eea4eb Mon Sep 17 00:00:00 2001 From: Sojus07 Date: Wed, 23 Jul 2025 23:36:27 +0200 Subject: [PATCH] satdump, gnss, grgsm support --- .../system/dwm/source/dwm/config.def.h | 2 +- hosts/default/system/pkgs.nix | 31 --- hosts/default/system/rf.nix | 194 +++++++++++++----- 3 files changed, 145 insertions(+), 82 deletions(-) diff --git a/hosts/default/system/dwm/source/dwm/config.def.h b/hosts/default/system/dwm/source/dwm/config.def.h index 2a94a25..1f9c92c 100755 --- a/hosts/default/system/dwm/source/dwm/config.def.h +++ b/hosts/default/system/dwm/source/dwm/config.def.h @@ -1,4 +1,4 @@ -static const unsigned int borderpx = 0; /* border pixel of windows */ +static const unsigned int borderpx = 1; /* border pixel of windows */ static const unsigned int snap = 32; /* snap pixel */ static const unsigned int gappih = 10; /* horiz inner gap between windows */ static const unsigned int gappiv = 10; /* vert inner gap between windows */ diff --git a/hosts/default/system/pkgs.nix b/hosts/default/system/pkgs.nix index 7a6fbc9..c7a66b1 100644 --- a/hosts/default/system/pkgs.nix +++ b/hosts/default/system/pkgs.nix @@ -17,8 +17,6 @@ gnumake tree gdb - vscode - neovide wireshark # Command-line utilities @@ -28,7 +26,6 @@ vim weechat ranger - eza fzf htop btop @@ -42,7 +39,6 @@ nodejs gccgo14 go - dotnet-sdk bear # Android development @@ -55,15 +51,10 @@ winetricks # Embedded & hardware development - espup - esphome esptool espflash minicom - pulseview cp210x-program - arduino-ide - arduino-cli flashrom binwalk chirp @@ -82,32 +73,10 @@ # Virtualization qemu - # Software Defined Radio (SDR) - noaa-apt - wsjtx - qsstv - gpredict - sdrpp - cubicsdr - gqrx - multimon-ng - gnuradio - gnuradioPackages.lora_sdr - gnuradioPackages.osmosdr - gnuradioPackages.bladeRF - osmo-hlr - osmo-bts - osmo-bsc - osmo-sgsn - osmo-ggsn - # Miscellaneous cava vesktop - pacman qbittorrent - adwaita-icon-theme - viewnior ]; fonts = { diff --git a/hosts/default/system/rf.nix b/hosts/default/system/rf.nix index 3288c64..902f874 100644 --- a/hosts/default/system/rf.nix +++ b/hosts/default/system/rf.nix @@ -1,58 +1,152 @@ -{ config, pkgs, ... }: +{ config, lib, pkgs, ... }: -{ - hardware = { - hackrf = { - enable = true; - }; - rtl-sdr = { - enable = true; +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 + ''; }; - environment.systemPackages = - let - satdump = with pkgs; - stdenv.mkDerivation rec { - pname = "satdump"; - version = "1.2.2"; + satdump = pkgs.stdenv.mkDerivation rec { + pname = "satdump"; + version = "1.2.2"; - src = fetchgit { - url = "https://github.com/SatDump/SatDump.git"; - rev = version; - sha256 = "sha256-QGegi5/geL5U3/ecc3hsdW+gp25UE9fOYVLFJUo/N50="; - }; + src = pkgs.fetchgit { + url = "https://github.com/SatDump/SatDump.git"; + rev = version; + sha256 = "sha256-QGegi5/geL5U3/ecc3hsdW+gp25UE9fOYVLFJUo/N50="; + }; - nativeBuildInputs = [ cmake pkg-config ]; - buildInputs = [ - # required deps - fftwFloat - libpng - libtiff - jemalloc - volk - (nng.overrideAttrs (old: { - cmakeFlags = old.cmakeFlags ++ [ "-DBUILD_SHARED_LIBS=ON" ]; - })) - rtl-sdr-librtlsdr - hackrf - airspy - airspyhf - glfw - zenity - zstd - - # optional hw support - libad9361 - libiio - ]; - - cmakeFlags = [ - "-DCMAKE_BUILD_TYPE=Release" - ]; - }; - in - [ - satdump + 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 + ]; + }