diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 2f534983238..bd9b5d5b37f 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -9676,6 +9676,10 @@ email = "oliver.huntuk@gmail.com"; name = "Oliver Hunt"; }; + vq = { + email = "vq@erq.se"; + name = "Daniel Nilsson"; + }; vrthra = { email = "rahul@gopinath.org"; github = "vrthra"; diff --git a/pkgs/development/libraries/liblxi/default.nix b/pkgs/development/libraries/liblxi/default.nix new file mode 100644 index 00000000000..ebb8cbe0376 --- /dev/null +++ b/pkgs/development/libraries/liblxi/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchFromGitHub +, pkg-config, autoreconfHook +, libtirpc, rpcsvc-proto, avahi, libxml2 +}: + +stdenv.mkDerivation rec { + pname = "liblxi"; + version = "1.13"; + + src = fetchFromGitHub { + owner = "lxi-tools"; + repo = "liblxi"; + rev = "v${version}"; + sha256 = "129m0k2wrlgs25qkskynljddqspasla1x8iq51vmg38nhnilpqf6"; + }; + + nativeBuildInputs = [ autoreconfHook pkg-config rpcsvc-proto ]; + + buildInputs = [ libtirpc avahi libxml2 ]; + + meta = with stdenv.lib; { + description = "Library for communicating with LXI compatible instruments"; + longDescription = '' + liblxi is an open source software library which offers a simple + API for communicating with LXI compatible instruments. + The API allows applications to easily discover instruments + on networks and communicate SCPI commands. + ''; + homepage = "https://lxi-tools.github.io/"; + license = licenses.bsd3; + platforms = platforms.linux; + maintainers = [ maintainers.vq ]; + }; +} diff --git a/pkgs/tools/graphics/metapixel/default.nix b/pkgs/tools/graphics/metapixel/default.nix new file mode 100644 index 00000000000..a97be7f809c --- /dev/null +++ b/pkgs/tools/graphics/metapixel/default.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchFromGitHub, libpng, libjpeg, giflib, perl, pkg-config }: + +stdenv.mkDerivation rec { + pname = "metapixel"; + version = "1.0.2"; + + src = fetchFromGitHub { + owner = "schani"; + repo = pname; + rev = "98ee9daa093b6c334941242e63f90b1c2876eb4f"; + fetchSubmodules = true; + sha256 = "0r7n3a6bvcxkbpda4mwmrpicii09iql5z69nkjqygkwxw7ny3309"; + }; + + makeFlags = [ "metapixel" ]; + + nativeBuildInputs = [ pkg-config ]; + buildInputs = [ libpng libjpeg giflib perl ]; + + installPhase = '' + mkdir -p $out/bin + cp metapixel $out/bin/metapixel + cp metapixel-prepare $out/bin/metapixel-prepare + cp metapixel-sizesort $out/bin/metapixel-sizesort + ''; + + meta = with stdenv.lib; { + homepage = "https://github.com/schani/metapixel"; + description = "Tool for generating photomosaics"; + license = licenses.gpl2Only; + maintainers = with maintainers; [ dandellion ]; + }; +} diff --git a/pkgs/tools/networking/cantoolz/default.nix b/pkgs/tools/networking/cantoolz/default.nix new file mode 100644 index 00000000000..11a0315184c --- /dev/null +++ b/pkgs/tools/networking/cantoolz/default.nix @@ -0,0 +1,62 @@ +{ lib +, bitstring +, buildPythonApplication +, fetchFromGitHub +, fetchpatch +, flask +, mido +, numpy +, pyserial +, pytestCheckHook +, pythonOlder +}: + +buildPythonApplication rec { + pname = "cantoolz"; + version = "3.7.0"; + disabled = pythonOlder "3.8"; + + src = fetchFromGitHub { + owner = "CANToolz"; + repo = "CANToolz"; + rev = "v${version}"; + sha256 = "0xkj7zyx6pz866q61c84mdagpgdyd633v85hk7qxhamca33rc4yi"; + }; + + patches = [ + (fetchpatch { + # Replace time.clock() which was removed, https://github.com/CANToolz/CANToolz/pull/30 + url = "https://github.com/CANToolz/CANToolz/pull/30/commits/d75574523d3b273c40fb714532c4de27f9e6dd3e.patch"; + sha256 = "0g91hywg5q6f2qk1awgklywigclrbhh6a6mwd0kpbkk1wawiiwbc"; + }) + ]; + + propagatedBuildInputs = [ + flask + pyserial + mido + numpy + bitstring + ]; + + checkInputs = [ pytestCheckHook ]; + disabledTests = [ "test_process" ]; + pythonImportsCheck = [ "cantoolz" ]; + + meta = with lib; { + description = "Black-box CAN network analysis framework"; + longDescription = '' + CANToolz is a framework for analysing CAN networks and devices. It + provides multiple modules that can be chained using CANToolz's pipe + system and used by security researchers, automotive/OEM security + testers in black-box analysis. + + CANToolz can be used for ECU discovery, MitM testing, fuzzing, brute + forcing, scanning or R&D, testing and validation. More can easily be + implemented with a new module. + ''; + homepage = "https://github.com/CANToolz/CANToolz"; + license = with licenses; [ asl20 ]; + maintainers = with maintainers; [ fab ]; + }; +} diff --git a/pkgs/tools/networking/lxi-tools/default.nix b/pkgs/tools/networking/lxi-tools/default.nix new file mode 100644 index 00000000000..3f3e62fb807 --- /dev/null +++ b/pkgs/tools/networking/lxi-tools/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchFromGitHub +, autoreconfHook, pkg-config +, liblxi, readline, lua +}: + +stdenv.mkDerivation rec { + pname = "lxi-tools"; + version = "1.21"; + + src = fetchFromGitHub { + owner = "lxi-tools"; + repo = "lxi-tools"; + rev = "v${version}"; + sha256 = "0rkp6ywsw2zv7hpbr12kba79wkcwqin7xagxxhd968rbfkfdxlwc"; + }; + + nativeBuildInputs = [ autoreconfHook pkg-config ]; + + buildInputs = [ liblxi readline lua ]; + + meta = with stdenv.lib; { + description = "Tool for communicating with LXI compatible instruments"; + longDescription = '' + lxi-tools is a collection of open source software tools + that enables control of LXI compatible instruments such + as modern oscilloscopes, power supplies, + spectrum analyzers etc. + ''; + homepage = "https://lxi-tools.github.io/"; + license = licenses.bsd3; + platforms = platforms.linux; + maintainers = [ maintainers.vq ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 95e0d1ac6f2..c0aafcfbf3d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -713,6 +713,8 @@ in albert = libsForQt5.callPackage ../applications/misc/albert {}; + metapixel = callPackage ../tools/graphics/metapixel { }; + ### APPLICATIONS/TERMINAL-EMULATORS alacritty = callPackage ../applications/terminal-emulators/alacritty { @@ -2944,6 +2946,8 @@ in cantata = libsForQt5.callPackage ../applications/audio/cantata { }; + cantoolz = python3Packages.callPackage ../tools/networking/cantoolz { }; + can-utils = callPackage ../os-specific/linux/can-utils { }; caudec = callPackage ../applications/audio/caudec { }; @@ -14794,6 +14798,8 @@ in libltc = callPackage ../development/libraries/libltc { }; + liblxi = callPackage ../development/libraries/liblxi { }; + libmaxminddb = callPackage ../development/libraries/libmaxminddb { }; libmcrypt = callPackage ../development/libraries/libmcrypt {}; @@ -23111,6 +23117,8 @@ in lv2-cpp-tools = callPackage ../applications/audio/lv2-cpp-tools { }; + lxi-tools = callPackage ../tools/networking/lxi-tools { }; + lynx = callPackage ../applications/networking/browsers/lynx { }; lyrebird = callPackage ../applications/audio/lyrebird { };