Prototype arduinoEnv
This commit is contained in:
69
arduino-env.nix
Normal file
69
arduino-env.nix
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
{ lib, pkgs }:
|
||||||
|
|
||||||
|
let
|
||||||
|
mkArduinoEnv = {
|
||||||
|
packages
|
||||||
|
, libraries
|
||||||
|
, nativeBuildInputs ? []
|
||||||
|
}: let
|
||||||
|
arduino-cli = pkgs.wrapArduinoCLI {
|
||||||
|
inherit packages libraries;
|
||||||
|
};
|
||||||
|
in pkgs.stdenvNoCC.mkDerivation (finalAttrs: {
|
||||||
|
name = "arduino-env";
|
||||||
|
|
||||||
|
buildInputs = [ pkgs.makeWrapper ];
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
arduino-cli
|
||||||
|
] ++ nativeBuildInputs;
|
||||||
|
|
||||||
|
phases = ["buildPhase"];
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
mkdir -p $out
|
||||||
|
makeWrapper ${arduino-cli}/bin/arduino-cli $out/bin/arduino-cli \
|
||||||
|
--prefix PATH : ${lib.makeBinPath nativeBuildInputs}
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
buildArduinoSketch = buildArduinoSketch finalAttrs.finalPackage;
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
buildArduinoSketch = arduinoEnv: {
|
||||||
|
name
|
||||||
|
, src
|
||||||
|
, fqbn
|
||||||
|
}: let
|
||||||
|
in pkgs.stdenvNoCC.mkDerivation (finalAttrs: {
|
||||||
|
inherit name src;
|
||||||
|
nativeBuildInputs = with pkgs; [
|
||||||
|
arduinoEnv
|
||||||
|
];
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
arduino-cli compile --log --output-dir=out --fqbn=${fqbn}
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out
|
||||||
|
cp -R out/* $out
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
uploadArduinoSketch = uploadArduinoSketch arduinoEnv {
|
||||||
|
inherit fqbn;
|
||||||
|
arduinoSketch = (finalAttrs.finalPackage);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
uploadArduinoSketch = arduinoEnv: {
|
||||||
|
arduinoSketch
|
||||||
|
, fqbn
|
||||||
|
}: pkgs.writeScriptBin "upload-arduino-sketch" ''
|
||||||
|
${arduinoEnv}/bin/arduino-cli upload --log --input-dir=${arduinoSketch} --fqbn=${fqbn} "$@"
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
mkArduinoEnv
|
||||||
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
overlay = (self: super: {
|
overlay = (self: super: {
|
||||||
wrapArduinoCLI = self.callPackage ./wrap-arduino-cli.nix { };
|
wrapArduinoCLI = self.callPackage ./wrap-arduino-cli.nix { };
|
||||||
|
mkArduinoEnv = self.callPackage ./arduino-env.nix {};
|
||||||
});
|
});
|
||||||
|
|
||||||
# Expose helper to select package
|
# Expose helper to select package
|
||||||
|
|||||||
Reference in New Issue
Block a user