Ideal Reality

興味の赴くままに
  1. トップ
  2. 投稿
  3. Nix FlakeでRustネイティブ開発環境構築
add_22025年12月2日 22時40分

Nix FlakeでRustネイティブ開発環境構築

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

{
  description = "Rust development environment";

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

  outputs = { self, nixpkgs, flake-utils, rust-overlay }:
    flake-utils.lib.eachDefaultSystem (system:
      let
        overlays = [ (import rust-overlay) ];
        pkgs = import nixpkgs {
          inherit system overlays;
        };
      in
      {
        devShells.default = pkgs.mkShell {
          buildInputs = with pkgs; [
            git
            pkg-config
            (rust-bin.stable.latest.default.override {
              extensions = [ "rust-src" ];
            })
          ];
        };
      }
    );
}
  • git
    • ホストにgitが入っていても、devShellにgitを入れておかないとなぜか以下のようなエラーになってgitコマンドが使えなくなって色々挙動がおかしくなります
      warning: unhandled Platform key FamilyDisplayName
      error: tool 'git' not found
  • pkg-config
    • いつ必要なのか詳しくは把握してないんだけど、ネイティブライブラリとリンクするなら入れておいたほうがいいという認識
  • rust-bin.~
    • Rust本体
    • extensions = [ "rust-src" ] がないとrust-analyzerが動作しなかった

あとはVSCodeでディレクトリを開いて、direnvでFlakeで定義されたdevShellの環境を読み込みます。

注意点として、flakeで開発環境を立ち上げたあとにcargo initをすると、このタイミングでgitのローカルレポジトリが初期化され、そこにはflake.nixがstagingされていないため次回以降のnix developが失敗するようになります。なのでちゃんとcargo initしたあと作業開始する前にflake.nixをgit管理化に入れておきましょう。

共有

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

関連する投稿
Nix Flakeでpico-sdk開発環境構築

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

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

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