Ideal Reality

興味の赴くままに
  1. トップ
  2. 投稿
  3. Nix Flakeでpico-sdk開発環境構築
add_22025年12月2日 23時18分

Nix Flakeでpico-sdk開発環境構築

Nix Packagesにpico-sdkがあるので、これを使えるのですが、submoduleの扱いに注意しないとTinyUSBとかが使えなくなります。

{
  description = "Raspberry Pi Pico development environment";

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    flake-utils.url = "github:numtide/flake-utils";
  };

  outputs = { self, nixpkgs, flake-utils }:
    flake-utils.lib.eachDefaultSystem (system:
      let
        pkgs = nixpkgs.legacyPackages.${system};
        local-pico-sdk = pkgs.pico-sdk.override {
          withSubmodules = true;
        };
      in
      {
        devShells.default = pkgs.mkShell {
          buildInputs = with pkgs; [
            git
            cmake
            ninja
            gcc-arm-embedded
            local-pico-sdk
            openocd-rp2040
            minicom
            python3
            pkg-config
            llvmPackages_20.clang-tools
          ];

          shellHook = ''
            export GCC_ARM_PATH=${pkgs.gcc-arm-embedded}
            export PICO_SDK_PATH=${local-pico-sdk}/lib/pico-sdk
            echo "Pico SDK environment loaded!"
            echo "PICO_SDK_PATH: $PICO_SDK_PATH"
          '';
        };
      }
    );
}

あとはいつも通りVSCodeでディレクトリを開いて、direnvでFlakeで定義されたdevShellの環境を読み込めばOK。
withSubmodules = true;あたりがTinyUSBとか使うのに必要なところになります。

あと、自分はC/C++を書くときにclangdを使いたいので、その関係でNinjaやclang-toolsが入っていたり、GCC_ARM_PATH でgccのパスを取得できるようにしています。
clangdを使うための.vscode/settings.jsonはこんな感じ

{
    "clangd.arguments": [
        "--compile-commands-dir=${workspaceFolder}/build",
        "--header-insertion=never",
        "--clang-tidy",
        "--enable-config",
        "--query-driver=${env:GCC_ARM_PATH}/bin/arm-none-eabi*"
    ],
    "cmake.generator": "Ninja"
}

もちろん CMakeLists.txtset(CMAKE_EXPORT_COMPILE_COMMANDS ON) も必要です。

共有

この記事が役に立ったならば、シェアしていただけると嬉しいです。

関連する投稿
Nix FlakeでRustネイティブ開発環境構築

個人的なメモ。 rust-overlay を使います。macOSで使ってますが、おそらくLinuxでも動作すると思います。 { description = "Rust development ...

2025年12月2日
プロフィール
Hiroki Kawakami

サイトを作り替えています