{ lib, pkgs }: let wrap = { packages ? [] , libraries ? [] }: let inherit (pkgs.callPackage ./lib.nix {}) latestVersion; builtinPackages = (map latestVersion (builtins.attrValues pkgs.arduinoPackages.tools.builtin)); userPath = pkgs.symlinkJoin { name = "arduino-libraries"; paths = libraries; }; dataPath = pkgs.symlinkJoin { name = "arduino-data"; paths = builtinPackages ++ packages ++ [ # Add some dummy files to keep the CLI happy (pkgs.writeTextDir "inventory.yaml" (builtins.toJSON {})) (pkgs.writeTextDir "package_index.json" (builtins.toJSON {packages = [];})) (pkgs.writeTextDir "library_index.json" (builtins.toJSON {libraries = [];})) ]; }; in pkgs.runCommand "arduino-cli-wrapped" { buildInputs = [ pkgs.makeWrapper ]; meta.mainProgram = "arduino-cli"; passthru = { inherit dataPath userPath; }; } '' makeWrapper ${pkgs.arduino-cli}/bin/arduino-cli $out/bin/arduino-cli --set ARDUINO_UPDATER_ENABLE_NOTIFICATION false --set ARDUINO_DIRECTORIES_DATA ${dataPath} --set ARDUINO_DIRECTORIES_USER ${userPath} ''; in lib.makeOverridable wrap