diff --git a/pkgs/development/python-modules/pijuice/default.nix b/pkgs/development/python-modules/pijuice/default.nix new file mode 100644 index 000000000000..f46ddfca1be2 --- /dev/null +++ b/pkgs/development/python-modules/pijuice/default.nix @@ -0,0 +1,61 @@ +{ lib +, fetchFromGitHub +, buildPythonPackage +, pythonOlder +, smbus-cffi +, urwid +}: + +buildPythonPackage rec { + pname = "pijuice"; + version = "1.7"; + disabled = pythonOlder "3.6"; + + src = fetchFromGitHub { + owner = "PiSupply"; + repo = "PiJuice"; + # rev hash retrieved from the latest modification on file Software/Source/VERSION, as this project + # does not use Github tags facility + rev = "3ba6719ab614a3dc7495d5d9c900dd4ea977c7e3"; + sha256 = "GoNN07YgVaktpeY5iYDbfpy5fxkU1x0V3Sb1hgGAQt4="; + }; + + patches = [ + # The pijuice_cli.cli file doesn't have a shebang as the first line of the + # script. Without it, the pythonWrapPrograms hook will not wrap the program. + # Add a python shebang here so that the the hook is triggered. + ./patch-shebang.diff + ]; + + PIJUICE_BUILD_BASE = 1; + + preBuild = '' + cd Software/Source + ''; + + propagatedBuildInputs = [ smbus-cffi urwid ]; + + # Remove the following files from the package: + # + # pijuice_cli - A precompiled ELF binary that is a setuid wrapper for calling + # pijuice_cli.py + # + # pijuiceboot - a precompiled ELF binary for flashing firmware. Not needed for + # the python library. + # + # pijuice_sys.py - A program that acts as a system daemon for monitoring the + # pijuice. + preFixup = '' + rm $out/bin/pijuice_cli + rm $out/bin/pijuice_sys.py + rm $out/bin/pijuiceboot + mv $out/bin/pijuice_cli.py $out/bin/pijuice_cli + ''; + + meta = with lib; { + description = "Library and resources for PiJuice HAT for Raspberry Pi"; + homepage = "https://github.com/PiSupply/PiJuice"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ hexagonal-sun ]; + }; +} diff --git a/pkgs/development/python-modules/pijuice/patch-shebang.diff b/pkgs/development/python-modules/pijuice/patch-shebang.diff new file mode 100644 index 000000000000..eb899c9a5bde --- /dev/null +++ b/pkgs/development/python-modules/pijuice/patch-shebang.diff @@ -0,0 +1,9 @@ +diff --git a/Software/Source/src/pijuice_cli.py b/Software/Source/src/pijuice_cli.py +index c366fee..37af383 100644 +--- a/Software/Source/src/pijuice_cli.py ++++ b/Software/Source/src/pijuice_cli.py +@@ -1,3 +1,4 @@ ++#!/usr/bin/python3 + # This python script to be executed as user pijuice by the setuid program pijuice_cli + # Python 3 only + # diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ff2ae2087025..5c6b077248a0 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -27464,6 +27464,8 @@ with pkgs; pijul = callPackage ../applications/version-management/pijul { }; + pijuice = with python3Packages; toPythonApplication pijuice; + ping = callPackage ../applications/networking/ping { }; piper = callPackage ../os-specific/linux/piper { }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 3808da50d76a..cf58483ebdeb 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -5953,6 +5953,8 @@ in { piexif = callPackage ../development/python-modules/piexif { }; + pijuice = callPackage ../development/python-modules/pijuice { }; + pika = callPackage ../development/python-modules/pika { }; pika-pool = callPackage ../development/python-modules/pika-pool { };