How to make a flutter overlay on shell.nix

let
  version = "2.8.1";
  channel = "stable";
  dartVersion = "2.15.1";
  dartSourceBase = "https://storage.googleapis.com/dart-archive/channels";
  filename = "flutter_linux_${version}-${channel}.tar.xz";


in
{ pkgs ? import <nixpkgs> {
    overlays = [
      (self: super: {
        pkgs.myFlutter = pkgs.flutter.override {

          myDartForFlutter = pkgs.dart.override {
            version = dartVersion;
            sources = {
              "${dartVersion}-x86_64-linux" = super.fetchurl {
                url = "${dartSourceBase}/stable/release/${dartVersion}/sdk/dartsdk-linux-x64-release.zip";
                sha256 = "0f45dcaa53b4090b69b277b885ea9a4cb3a41589c9119113e1b978ad55ce335f";
              };
            };
          };
          stable = super.mkFlutter.override {
            dart = self.myDartForFlutter;
            pname = "flutter";
            src = super.fetchurl {
              url = "https://storage.googleapis.com/flutter_infra_release/releases/${channel}/linux/${filename}";
              sha256 = "47ecdcc5481c51a8fb323f154f8044cb309d55fa8614a97c89bc7c08e43abe01";
            };
          };
        };

      })
    ];
  }
}:
pkgs.mkShell {

  # nativeBuildInputs is usually what you want -- tools you need to run
  nativeBuildInputs = [
    pkgs.myFlutter
  ];
}

These is my shell.nix
But it doesn’t work.
How to specific a flutter version overlay, thanks.