let # Pin nixpkgs to a specific revision for reproducibility. # See ./utils/update-nix-pin.sh for how to update pin. nixpkgs_rev = "0b4defa25843"; nixpkgs_hash = "0p3rrd8wwlk0iwgzm7frkw1k98ywrh0avi7fqjjk87i68n3inxrs"; pkgs = if builtins.getEnv "PINNED_NIXPKGS" == "1" then import (builtins.fetchTarball { url = "https://github.com/NixOS/nixpkgs/archive/${nixpkgs_rev}.tar.gz"; sha256 = nixpkgs_hash; }) {} else import { }; pico_sdk_rev = "v2.2.0-smaller-cyw43-spi-pio-rel"; pico_extras_rev = "sdk-2.2.0"; # Fetch pico-sdk from GitHub, including its submodules. # Using a specific revision for reproducibility. pico-sdk = pkgs.fetchFromGitHub { owner = "bluescsi"; repo = "pico-sdk-internal"; rev = pico_sdk_rev; fetchSubmodules = true; # nix-prefetch-git --url https://github.com/raspberrypi/pico-sdk --rev 2.2.0 --fetch-submodules hash = "sha256-RrJ1IIipggajM6MX+VXMILwfGdHt4o6Rj+utRxWE+mY="; }; pico-extras = pkgs.fetchFromGitHub { owner = "raspberrypi"; repo = "pico-extras"; rev = pico_extras_rev; fetchSubmodules = true; # nix-prefetch-git --url https://github.com/raspberrypi/pico-extras --rev sdk-2.2.0 --fetch-submodules hash = "sha256-AfMycI+CMl76OERyRN8xQer7erh0wxpJnD4fu/Sl18c="; }; in pkgs.mkShell { shellHook = '' BLUE='' GREEN='' YELLOW='' NC='' export PICO_SDK_PATH="${pico-sdk}" export PICO_EXTRAS_PATH="${pico-extras}" echo -e "$BLUE""BlueSCSI development environment activated.""$NC" echo -e "$GREEN""PICO_SDK_PATH"\(${pico_sdk_rev}\)"$NC"" set to: ""$YELLOW""$PICO_SDK_PATH""$NC" echo -e "$GREEN""PICO_EXTRAS_PATH"\(${pico_extras_rev}\)"$NC"" set to: ""$YELLOW""$PICO_EXTRAS_PATH""$NC" echo -e "$(pio --version)" echo -e -n "$(arm-none-eabi-g++ --version | head -n1)\n" echo -e "$GREEN""nixpkgs version: ""$YELLOW""${pkgs.lib.version}""$NC" echo -e "$GREEN""nixpkgs hash: ""$YELLOW""${if builtins.getEnv "PINNED_NIXPKGS" == "1" then nixpkgs_hash else "unpinned"}""$NC" ''; buildInputs = with pkgs; [ pkgs.platformio pkgs.gcc-arm-embedded # pkgs.picotool # waiting on update in nixpkgs ]; }