diff --git a/pkgs/applications/radio/dsd/default.nix b/pkgs/applications/radio/dsd/default.nix new file mode 100644 index 000000000000..a369486278be --- /dev/null +++ b/pkgs/applications/radio/dsd/default.nix @@ -0,0 +1,44 @@ +{ stdenv, fetchFromGitHub, cmake +, mbelib, libsndfile, itpp +, portaudioSupport ? true, portaudio ? null +}: + +assert portaudioSupport -> portaudio != null; + +stdenv.mkDerivation rec { + pname = "dsd"; + version = "2018-07-01"; + + src = fetchFromGitHub { + owner = "szechyjs"; + repo = "dsd"; + rev = "f175834e45a1a190171dff4597165b27d6b0157b"; + sha256 = "0w4r13sxvjwacdwxr326zr6p77a8p6ny0g6im574jliw5j3shlhr"; + }; + + nativeBuildInputs = [ cmake ]; + buildInputs = [ + mbelib libsndfile itpp + ] ++ stdenv.lib.optionals portaudioSupport [ portaudio ]; + + enableParallelBuilding = true; + + doCheck = true; + preCheck = '' + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}$PWD + export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH''${DYLD_LIBRARY_PATH:+:}$PWD + ''; + + meta = with stdenv.lib; { + description = "Digital Speech Decoder"; + longDescription = '' + DSD is able to decode several digital voice formats from discriminator + tap audio and synthesize the decoded speech. Speech synthesis requires + mbelib, which is a separate package. + ''; + homepage = https://github.com/szechyjs/dsd; + license = licenses.gpl2; + platforms = platforms.unix; + maintainers = with maintainers; [ andrew-d ]; + }; +} diff --git a/pkgs/development/libraries/audio/mbelib/default.nix b/pkgs/development/libraries/audio/mbelib/default.nix new file mode 100644 index 000000000000..1fda3a919264 --- /dev/null +++ b/pkgs/development/libraries/audio/mbelib/default.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchFromGitHub, cmake }: + +stdenv.mkDerivation rec { + pname = "mbelib"; + version = "1.3.0"; + + src = fetchFromGitHub { + owner = "szechyjs"; + repo = "mbelib"; + rev = "v${version}"; + sha256 = "0v6b7nf8fgxy7vzgcwffqyql5zhldrz30c88k1ylbjp78hwh4rif"; + }; + + nativeBuildInputs = [ cmake ]; + + enableParallelBuilding = true; + + doCheck = true; + preCheck = '' + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}$PWD + export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH''${DYLD_LIBRARY_PATH:+:}$PWD + ''; + + meta = with stdenv.lib; { + description = "P25 Phase 1 and ProVoice vocoder"; + homepage = https://github.com/szechyjs/mbelib; + license = licenses.isc; + platforms = platforms.unix; + maintainers = with maintainers; [ andrew-d ]; + }; +} diff --git a/pkgs/development/libraries/science/math/itpp/default.nix b/pkgs/development/libraries/science/math/itpp/default.nix new file mode 100644 index 000000000000..d7fae9ae4799 --- /dev/null +++ b/pkgs/development/libraries/science/math/itpp/default.nix @@ -0,0 +1,55 @@ +{ stdenv +, fetchurl +, cmake +, gtest +, blas +, fftw +, liblapack +, gfortran +}: + +stdenv.mkDerivation rec { + pname = "it++"; + version = "4.3.1"; + + src = fetchurl { + url = "mirror://sourceforge/itpp/itpp-${version}.tar.bz2"; + sha256 = "0xxqag9wi0lg78xgw7b40rp6wxqp5grqlbs9z0ifvdfzqlhpcwah"; + }; + + nativeBuildInputs = [ cmake gfortran ]; + buildInputs = [ + fftw + liblapack + + # NOTE: OpenBLAS doesn't work here because IT++ doesn't pass aligned + # buffers, which causes segfaults in the optimized kernels :-( + blas + ]; + + cmakeFlags = [ + "-DBLAS_FOUND:BOOL=TRUE" + "-DBLAS_LIBRARIES:STRING=${blas}/lib/libblas.so" + "-DLAPACK_FOUND:BOOL=TRUE" + "-DLAPACK_LIBRARIES:STRING=${liblapack}/lib/liblapack.so" + "-DGTEST_DIR:PATH=${gtest.src}/googletest" + ]; + + enableParallelBuilding = true; + + doCheck = true; + + checkPhase = '' + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}$PWD/itpp + export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH''${DYLD_LIBRARY_PATH:+:}$PWD/itpp + ./gtests/itpp_gtests + ''; + + meta = with stdenv.lib; { + description = "IT++ is a C++ library of mathematical, signal processing and communication classes and functions."; + homepage = http://itpp.sourceforge.net/; + license = licenses.gpl3; + platforms = platforms.unix; + maintainers = with maintainers; [ andrew-d ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 9b69ffe9b276..5832281c267d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -16870,6 +16870,8 @@ in dropwatch = callPackage ../os-specific/linux/dropwatch { }; + dsd = callPackage ../applications/radio/dsd { }; + dstat = callPackage ../os-specific/linux/dstat { }; # unstable until the first 1.x release @@ -16995,6 +16997,8 @@ in irqbalance = callPackage ../os-specific/linux/irqbalance { }; + itpp = callPackage ../development/libraries/science/math/itpp { }; + iw = callPackage ../os-specific/linux/iw { }; iwd = callPackage ../os-specific/linux/iwd { }; @@ -17568,6 +17572,8 @@ in lvm2 = callPackage ../os-specific/linux/lvm2 { }; + mbelib = callPackage ../development/libraries/audio/mbelib { }; + mbpfan = callPackage ../os-specific/linux/mbpfan { }; mdadm = mdadm4;