1 { stdenv, lib, fetchurl, dpkg, makeWrapper , mono, gtk-sharp-3_0
2 , glib, libusb1 , zlib, gtk3-x11, callPackage, writeTextDir
19 homepage = "https://www.picotech.com/downloads/linux";
20 maintainers = with lib.maintainers; [ wirew0rm ] ++ lib.teams.lumiguide.members;
21 platforms = [ "x86_64-linux" ];
22 license = lib.licenses.unfree;
25 libpicoipp = callPackage ({ stdenv, lib, fetchurl, autoPatchelfHook, dpkg }:
26 stdenv.mkDerivation rec {
28 inherit (sources.libpicoipp) version;
29 src = fetchurl { inherit (sources.libpicoipp) url sha256; };
30 nativeBuildInputs = [ dpkg autoPatchelfHook ];
31 buildInputs = [ (lib.getLib stdenv.cc.cc) ];
33 unpackCmd = "dpkg-deb -x $src .";
37 cp -d opt/picoscope/lib/* $out/lib
38 install -Dt $out/usr/share/doc/libpicoipp usr/share/doc/libpicoipp/copyright
41 meta = shared_meta lib // {
42 sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
43 description = "library for picotech oscilloscope software";
47 # If we don't have a platform available, put a dummy version here, so at
48 # least evaluation succeeds.
50 (lib.importJSON ./sources.json).${stdenv.system} or (throw "unsupported system ${stdenv.system}");
53 { url, version, sha256 }:
54 stdenv.mkDerivation rec {
57 src = fetchurl { inherit url sha256; };
58 # picoscope does a signature check, so we can't patchelf these
59 nativeBuildInputs = [ dpkg ];
61 unpackCmd = "dpkg-deb -x $src .";
65 cp -d opt/picoscope/lib/* $out/lib
70 description = "library for picotech oscilloscope ${name} series";
74 scopePkgs = lib.mapAttrs scopePkg sources;
76 in stdenv.mkDerivation rec {
78 inherit (sources.picoscope) version;
80 src = fetchurl { inherit (sources.picoscope) url sha256; };
82 nativeBuildInputs = [ dpkg makeWrapper ];
83 buildInputs = [ gtk-sharp-3_0 mono glib libusb1 zlib ];
85 unpackCmd = "dpkg-deb -x $src .";
87 scopeLibs = lib.attrVals (map (x: "lib${x}") scopes) scopePkgs;
88 MONO_PATH = "${gtk-sharp-3_0}/lib/mono/gtk-sharp-3.0:" + (lib.makeLibraryPath
101 cp -dr usr/share $out/share
102 cp -dr opt/picoscope/* $out/
103 makeWrapper "$(command -v mono)" $out/bin/picoscope \
104 --add-flags $out/lib/PicoScope.GTK.exe \
105 --prefix MONO_PATH : "$MONO_PATH" \
106 --prefix LD_LIBRARY_PATH : "$MONO_PATH" \
112 # services.udev.packages = [ pkgs.picoscope.rules ];
113 # users.groups.pico = {};
114 # users.users.you.extraGroups = [ "pico" ];
115 passthru.rules = writeTextDir "lib/udev/rules.d/95-pico.rules" ''
116 SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ce9", MODE="664",GROUP="pico"
122 "Oscilloscope application that works with all PicoScope models";
124 PicoScope for Linux is a powerful oscilloscope application that works
125 with all PicoScope models. The most important features from PicoScope
126 for Windows are included—scope, spectrum analyzer, advanced triggers,
127 automated measurements, interactive zoom, persistence modes and signal
128 generator control. More features are being added all the time.
130 Waveform captures can be saved for off-line analysis, and shared with
131 PicoScope for Linux, PicoScope for macOS and PicoScope for Windows
132 users, or exported in text, CSV and MathWorks MATLAB 4 formats.
134 sourceProvenance = with sourceTypes; [ binaryBytecode ];