From c693637fafd48d05f8825c101aa5d1cf355bb6c7 Mon Sep 17 00:00:00 2001 From: Egor Savkin Date: Tue, 20 Jun 2023 16:18:45 +0800 Subject: [PATCH] Add booster add-on configuration Signed-off-by: Egor Savkin --- README | 5 +++++ booster/booster_shell.nix | 27 +++++++++++++++++++++++++++ booster/gmqtt.nix | 32 ++++++++++++++++++++++++++++++++ booster/miniconf.nix | 22 ++++++++++++++++++++++ booster/mqtt-explorer.nix | 20 ++++++++++++++++++++ 5 files changed, 106 insertions(+) create mode 100644 booster/booster_shell.nix create mode 100644 booster/gmqtt.nix create mode 100644 booster/miniconf.nix create mode 100644 booster/mqtt-explorer.nix diff --git a/README b/README index 24d732a..b97353d 100644 --- a/README +++ b/README @@ -8,3 +8,8 @@ * sudo nixos-rebuild boot * sudo nix-collect-garbage -d * history clear + +Add-on for Boosters: +* copy `booster` to the /opt +* mkdir -p ~/.config/nixpkgs && echo '{permittedInsecurePackages = ["electron-9*"];}' > ~/.config/nixpkgs/config.nix +* echo 'For Booster-related apps, use `nix-shell /opt/booster/booster_shell.nix`' > ~/README.md \ No newline at end of file diff --git a/booster/booster_shell.nix b/booster/booster_shell.nix new file mode 100644 index 0000000..11a2e0c --- /dev/null +++ b/booster/booster_shell.nix @@ -0,0 +1,27 @@ +let + + pkgs = import { }; + + mqtt-explorer = pkgs.callPackage /opt/booster/mqtt-explorer.nix {} ; + gmqtt = pkgs.callPackage /opt/booster/gmqtt.nix {}; + miniconf = pkgs.callPackage /opt/booster/miniconf.nix {}; + +in + pkgs.mkShell { + buildInputs = [ + (pkgs.python3.withPackages(ps: [ + ps.numpy + ps.setuptools + ps.matplotlib + gmqtt + miniconf + ])) + pkgs.libtool + pkgs.libusb1 + pkgs.mosquitto + pkgs.libftdi + pkgs.cutecom + mqtt-explorer + ]; + } + diff --git a/booster/gmqtt.nix b/booster/gmqtt.nix new file mode 100644 index 0000000..73b8f76 --- /dev/null +++ b/booster/gmqtt.nix @@ -0,0 +1,32 @@ +{ stdenv, lib, python3Packages, fetchFromGitHub, fetchgit, makeWrapper, pkgs }: + +python3Packages.buildPythonPackage rec { + name = "gmqtt"; + version = "v0.6.12"; + src = fetchFromGitHub { + owner = "wialon" ; + repo = "gmqtt"; + rev = "190d12156890efcfc5099fea0f7ef3ce072c4a27" ; + sha256 = "sha256-lhvRRZsrJy2U7b705GTlquAP/LwKEmInuVC4zzivmKk="; + }; + + buildInputs = [ + (pkgs.python3.withPackages(ps: [ + ps.codecov + ps.pytest-asyncio + ps.pytest + ps.pytestcov + ps.six + ps.uvloop + ps.more-itertools + ps.atomicwrites + ])) + ]; + + propagatedBuildInputs = with pkgs.python3Packages; [ setproctitle ]; + + meta = { + homepage = "https://github.com/wialon/gmqtt"; + description = "gmqtt"; + }; +} \ No newline at end of file diff --git a/booster/miniconf.nix b/booster/miniconf.nix new file mode 100644 index 0000000..94fe88b --- /dev/null +++ b/booster/miniconf.nix @@ -0,0 +1,22 @@ +{ stdenv, lib, python3Packages, callPackage, fetchgit, makeWrapper }: + +let +gmqtt = callPackage /opt/booster/gmqtt.nix {}; +in +python3Packages.buildPythonPackage rec { + pname = "miniconf"; + version = "0.1.0"; + src = fetchgit { + url = "https://github.com/quartiq/miniconf"; + rev = "01caac4adb3f81cbcd34d8a48087f5df962c096f"; + sha256 = "sha256-ssRV4FtdMehPA4+mKQ4Ub+wtEakpKX5jXRubFtHpanA="; + }; + prePatch = '' + cd py/miniconf-mqtt + ''; + doCheck = false; + propagatedBuildInputs = [ + # Specify dependencies + gmqtt + ]; +} \ No newline at end of file diff --git a/booster/mqtt-explorer.nix b/booster/mqtt-explorer.nix new file mode 100644 index 0000000..2b17bda --- /dev/null +++ b/booster/mqtt-explorer.nix @@ -0,0 +1,20 @@ +{ stdenv, lib, fetchurl, appimageTools, electron_9, makeWrapper }: + +stdenv.mkDerivation rec { + pname = "MQTT-Explorer"; + version = "0.4.0-beta1"; + src = appimageTools.extract { + name = pname; + src = fetchurl { + url = "https://github.com/thomasnordquist/${pname}/releases/download/0.0.0-${version}/${pname}-${version}.AppImage"; + sha256 = "0x9ava13hn1nkk2kllh5ldi4b3hgmgwahk08sq48yljilgda4ppn"; + }; + }; + buildInputs = [ makeWrapper ]; + installPhase = '' + install -m 444 -D resources/app.asar $out/libexec/app.asar + install -m 444 -D mqtt-explorer.png $out/share/icons/mqtt-explorer.png + install -m 444 -D mqtt-explorer.desktop $out/share/applications/mqtt-explorer.desktop + makeWrapper ${electron_9}/bin/electron $out/bin/mqtt-explorer --add-flags $out/libexec/app.asar + ''; +} \ No newline at end of file