{ pkgs ? import { }, }: let tattlekey = { lib, stdenv, cmake, pico-sdk, pico-examples, python3 }: stdenv.mkDerivation { pname = "tattlekey"; version = "0.1.0"; src = lib.cleanSource ./.; nativeBuildInputs = [ cmake python3 ]; postUnpack = '' # Per https://datasheets.raspberrypi.com/picow/connecting-to-the-internet-with-pico-w.pdf page 9 cp ${pico-examples}/pico_w/wifi/lwipopts_examples_common.h lwipopts.h ''; cmakeFlags = [ "-DCMAKE_C_COMPILER=/usr/bin/arm-none-eabi-gcc" "-DCMAKE_CXX_COMPILER=/usr/bin/arm-none-eabi-c++" "-DPICO_BOARD=pico_w" "-DPICO_SDK_PATH=${pico-sdk}/lib/pico-sdk" ]; diskImage = debImage; diskImageFormat = "qcow2"; }; pico-sdk-version = "1.5.1"; pico-sdk = pkgs.pico-sdk.overrideAttrs (old: { version = pico-sdk-version; src = pkgs.fetchFromGitHub { fetchSubmodules = true; owner = "raspberrypi"; repo = "pico-sdk"; rev = pico-sdk-version; hash = "sha256-GY5jjJzaENL3ftuU5KpEZAmEZgyFRtLwGVg3W1e/4Ho="; }; }); pico-examples = pkgs.fetchFromGitHub { fetchSubmodules = true; owner = "raspberrypi"; repo = "pico-examples"; rev = "sdk-${pico-sdk-version}"; hash = "sha256-mJIOWUqsQJcg7FUWZePf+pA/YblZskDtIVnUJiz7szU="; }; distro = "debian11x86_64"; extraPackages = [ "build-essential" "cmake" "gcc-arm-none-eabi" "libnewlib-arm-none-eabi" "libstdc++-arm-none-eabi-newlib" ]; debImage = pkgs.vmTools.diskImageFuns."${distro}" { inherit extraPackages; }; in pkgs.vmTools.runInLinuxImage (pkgs.callPackage tattlekey { inherit pico-examples pico-sdk; })