Prototype arduinoEnv

This commit is contained in:
2023-12-03 16:10:35 +01:00
parent ab21522b6c
commit 93f70c8abf
2 changed files with 70 additions and 0 deletions

69
arduino-env.nix Normal file
View 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

View File

@@ -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