From b3010c39ecb1c4373abeb0da9816d9fc1c558c70 Mon Sep 17 00:00:00 2001 From: Sojus07 Date: Sun, 27 Jul 2025 19:09:27 +0200 Subject: [PATCH] kekl --- hosts/default/default.nix | 2 +- hosts/default/system/pkgs.nix | 2 + hosts/default/system/rf.nix | 152 ----------------------- hosts/default/system/sdr/default.nix | 47 +++++++ hosts/default/system/sdr/gnss-sdr.nix | 47 +++++++ hosts/default/system/sdr/gr-gsm.nix | 43 +++++++ hosts/default/system/sdr/lte-sniffer.nix | 72 +++++++++++ hosts/default/system/sdr/qcsuper.nix | 24 ++++ hosts/default/system/sdr/satdump.nix | 25 ++++ 9 files changed, 261 insertions(+), 153 deletions(-) delete mode 100644 hosts/default/system/rf.nix create mode 100644 hosts/default/system/sdr/default.nix create mode 100644 hosts/default/system/sdr/gnss-sdr.nix create mode 100644 hosts/default/system/sdr/gr-gsm.nix create mode 100644 hosts/default/system/sdr/lte-sniffer.nix create mode 100644 hosts/default/system/sdr/qcsuper.nix create mode 100644 hosts/default/system/sdr/satdump.nix diff --git a/hosts/default/default.nix b/hosts/default/default.nix index 2f7a8b6..b3cbf86 100644 --- a/hosts/default/default.nix +++ b/hosts/default/default.nix @@ -3,11 +3,11 @@ imports = [ ./system/dwm/default.nix ./system/editors/nvim/default.nix - ./system/rf.nix ./system/pkgs.nix ./system/services.nix ./system/users.nix ./system/firefox.nix + ./system/sdr/default.nix ]; hardware = { diff --git a/hosts/default/system/pkgs.nix b/hosts/default/system/pkgs.nix index c7a66b1..b5afe9b 100644 --- a/hosts/default/system/pkgs.nix +++ b/hosts/default/system/pkgs.nix @@ -23,6 +23,7 @@ neofetch fastfetch onefetch + cpufetch vim weechat ranger @@ -31,6 +32,7 @@ btop jq ffmpeg + gh-dash # Development & compilers rustup diff --git a/hosts/default/system/rf.nix b/hosts/default/system/rf.nix deleted file mode 100644 index 902f874..0000000 --- a/hosts/default/system/rf.nix +++ /dev/null @@ -1,152 +0,0 @@ -{ 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 - ]; - -} diff --git a/hosts/default/system/sdr/default.nix b/hosts/default/system/sdr/default.nix new file mode 100644 index 0000000..3539d80 --- /dev/null +++ b/hosts/default/system/sdr/default.nix @@ -0,0 +1,47 @@ +{ config, lib, pkgs, ... }: + +let + gnss-sdr = import ./gnss-sdr.nix { inherit pkgs; }; + satdump = import ./satdump.nix { inherit pkgs; }; + gr-gsm = import ./gr-gsm.nix { inherit pkgs; }; + lte-sniffer = import ./lte-sniffer.nix { inherit pkgs; }; + qcsuper = import ./qcsuper.nix { inherit pkgs; }; +in +{ + hardware = { + hackrf.enable = true; + rtl-sdr.enable = true; + }; + + services.sdrplayApi.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 + soapyhackrf + + gnss-sdr + #satdump + gr-gsm + #lte-sniffer + qcsuper + ]; +} diff --git a/hosts/default/system/sdr/gnss-sdr.nix b/hosts/default/system/sdr/gnss-sdr.nix new file mode 100644 index 0000000..ee1d206 --- /dev/null +++ b/hosts/default/system/sdr/gnss-sdr.nix @@ -0,0 +1,47 @@ +{ pkgs }: +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 + ''; +} diff --git a/hosts/default/system/sdr/gr-gsm.nix b/hosts/default/system/sdr/gr-gsm.nix new file mode 100644 index 0000000..7e5fc9e --- /dev/null +++ b/hosts/default/system/sdr/gr-gsm.nix @@ -0,0 +1,43 @@ +{ pkgs }: +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 + ''; +} diff --git a/hosts/default/system/sdr/lte-sniffer.nix b/hosts/default/system/sdr/lte-sniffer.nix new file mode 100644 index 0000000..4437a71 --- /dev/null +++ b/hosts/default/system/sdr/lte-sniffer.nix @@ -0,0 +1,72 @@ +{ pkgs }: + +pkgs.stdenv.mkDerivation rec { + pname = "lte-sniffer"; + version = "LTESniffer-v2.1.0"; + + src = pkgs.fetchFromGitHub { + owner = "SysSec-KAIST"; + repo = "LTESniffer"; + rev = "918d1a3fea4d7633aa8eb170a740916cf21da171"; + sha256 = "sha256-kbFvpHcqlEpoLkc206jJBLzAFuBGjvDLO9uRaG4+PqE="; + }; + + cmnalib = pkgs.fetchgit { + url = "https://github.com/falkenber9/c-mnalib.git"; + rev = "117c7047ccbec4deae5444cb5b69bdae01ddd175"; + sha256 = "sha256-Rnr9GOv7yn3+bH+HA6htx5EKufC1wNyRzZvUu3pDn/w="; + }; + + nativeBuildInputs = with pkgs; [ cmake git pkg-config ]; + buildInputs = with pkgs; [ + glib libudev-zero boost gnutls libgnurl nng + libsForQt5.qt5.qtdeclarative volk fftwFloat + curl libtiff glfw mkl + ]; + + patchPhase = '' + runHook prePatch + + echo "[INFO] Removing ExternalProject_Add(cmnalib) from cmnalib.CMakeLists.txt.in" + sed -i '/ExternalProject_Add(cmnalib/d' external/cmake/cmnalib.CMakeLists.txt.in + + runHook postPatch + ''; + + cmakeFlags = [ + "-DCMNALIB_SRC_DIR=${cmnalib}" + "-DCMAKE_BUILD_TYPE=Release" + ]; + + buildPhase = '' + runHook preBuild + + mkdir -p cmnalib-src + cp -r ${cmnalib}/* cmnalib-src/ + + cmake -S . -B build $cmakeFlags + cmake --build build -j$NIX_BUILD_CORES + + runHook postBuild + ''; + + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin + cp -v build/apps/* $out/bin/ + + runHook postInstall + ''; + + dontWrapQtApps = true; + + meta = with pkgs.lib; { + description = "Passive LTE Sniffer based on SysSec-KAIST's LTESniffer project"; + homepage = "https://github.com/SysSec-KAIST/LTESniffer"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ sojus07 ]; + platforms = platforms.linux; + }; +} diff --git a/hosts/default/system/sdr/qcsuper.nix b/hosts/default/system/sdr/qcsuper.nix new file mode 100644 index 0000000..3443c4a --- /dev/null +++ b/hosts/default/system/sdr/qcsuper.nix @@ -0,0 +1,24 @@ +{ pkgs }: + +pkgs.stdenv.mkDerivation rec { + pname = "qcsuper"; + version = "2.0.1"; + + src = pkgs.fetchFromGitHub { + owner = "P1sec"; + repo = "QCSuper"; + rev = version; + sha256 = "sha256-m75yoFO+NR5WyckmJfPtjXAajbDHB2PFBc7sznVQnw8="; + }; + + buildInputs = with pkgs; [ + python3 python3Packages.setuptools + python3Packages.pyserial wireshark + ]; + + installPhase = '' + mkdir -p $out/bin + cp qcsuper.py $out/bin/qcsuper + chmod +x $out/bin/qcsuper + ''; +} diff --git a/hosts/default/system/sdr/satdump.nix b/hosts/default/system/sdr/satdump.nix new file mode 100644 index 0000000..0f64954 --- /dev/null +++ b/hosts/default/system/sdr/satdump.nix @@ -0,0 +1,25 @@ +{ pkgs }: +pkgs.stdenv.mkDerivation rec { + pname = "satdump"; + version = "1.2.2"; + + src = pkgs.fetchFromGitHub { + owner = "SatDump"; + repo = "SatDump"; + rev = version; + sha256 = "sha256-+Sne+NMwnIAs3ff64fBHAIE4/iDExIC64sXtO0LJwI0="; + }; + + nativeBuildInputs = with pkgs; [ cmake pkg-config ]; + buildInputs = with pkgs; [ + fftwFloat libpng libtiff jemalloc volk + rtl-sdr-librtlsdr hackrf airspy airspyhf + glfw zenity zstd libad9361 libiio + curlFull.dev curlFull.out armadillo + mbedtls nng opencl-headers hdf5 + ]; + + cmakeFlags = [ + "-DCMAKE_BUILD_TYPE=Release" + ]; +}