You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacBook M1上无法运行Nix Flake安装bun@1.1.13求助

问题

我使用MacBook M1,想要安装bun@1.1.13,但该版本暂未在Nix Store中提供,于是编写了如下Nix Flake配置,预期能正常安装darwin-aarch64架构的bun@1.1.13,但运行时报错。

配置代码

{
  description = "Runtimes required by Platform";

  inputs = {
    nixpkgs.url = "nixpkgs/nixos-unstable";
  };

  outputs = { self, nixpkgs }: {
    packages = let
      bunVersion = "1.1.13";

      getBun = { system, sha256 }: let
        pkgs = import nixpkgs { inherit system; };
        bunSrc = pkgs.fetchurl {
          url = "https://github.com/oven-sh/bun/releases/download/bun-v${bunVersion}/bun-${system}.zip";
          inherit sha256;
        };

      in pkgs.stdenv.mkDerivation {
        pname = "bun";
        version = bunVersion;

        src = bunSrc;

        nativeBuildInputs = [ pkgs.unzip ];

        installPhase = ''
          mkdir -p $out/bin
          unzip $src -d $out/bin
          chmod +x $out/bin/bun
        '';

        meta = with pkgs.lib; {
          description = "Bun - JavaScript runtime";
          homepage = "https://bun.sh/";
          license = licenses.mit;
          platforms = platforms.all;
        };
      };

      bun_darwin_aarch64 = getBun { system = "darwin-aarch64"; sha256 = "144bvn34v26shi50ykrfvwm439qnqn7z2v903dxm0wzbwqpsf3m6"; };

      bun_darwin_x64 = getBun { system = "darwin-x64"; sha256 = "1h6p9sb9dyx3i5dw3xfm20np6wh0p0blm2204fpig4dph5chdrim"; };
      
      bun_linux_aarch64 = getBun { system = "linux-x64"; sha256 = "1xwq9n7gpbpz8dyvcpavlr9i4lrl7kxkxwc84a0jnqnid2qrsbj0"; };

    in {
      aarch64-darwin.bun = bun_darwin_aarch64;
      x86_64-darwin.bun = bun_darwin_x64;
      x86_64-linux.bun = bun_linux_aarch64;
    };
  };
}

错误信息

Error: error installing package path:flakes/runtime#bun
source: nix: command error: nix --extra-experimental-features ca-derivations --option experimental-features 'nix-command flakes fetch-closure' path-info 'path:/Users/mp/workspace/com/proj/flakes/runtime#bun' --json --impure: Unknown CPU type: darwin: exit code 1

解决方案

错误根源

配置核心问题:getBun函数中传给import nixpkgs的system参数用了darwin-aarch64格式,但Nix的标准系统标识符是架构在前、系统在后(如aarch64-darwin),Nix无法识别darwin-aarch64作为有效系统,因此抛出Unknown CPU type: darwin错误。

另外原配置中bun_linux_aarch64命名与参数不匹配——实际用的是linux-x64的Bun包,对应Nix的x86_64-linux系统,属于笔误。

修复后的配置

将getBun函数拆分为接收Nix标准系统标识和Bun下载链接对应的系统名两个参数,修正后配置如下:

{
  description = "Runtimes required by Platform";

  inputs = {
    nixpkgs.url = "nixpkgs/nixos-unstable";
  };

  outputs = { self, nixpkgs }: {
    packages = let
      bunVersion = "1.1.13";

      # nixSystem: Nix标准系统标识,如aarch64-darwin
      # bunSystem: Bun下载链接中的系统名,如darwin-aarch64
      getBun = { nixSystem, bunSystem, sha256 }: let
        pkgs = import nixpkgs { system = nixSystem; };
        bunSrc = pkgs.fetchurl {
          url = "https://github.com/oven-sh/bun/releases/download/bun-v${bunVersion}/bun-${bunSystem}.zip";
          inherit sha256;
        };

      in pkgs.stdenv.mkDerivation {
        pname = "bun";
        version = bunVersion;

        src = bunSrc;

        nativeBuildInputs = [ pkgs.unzip ];

        installPhase = ''
          mkdir -p $out/bin
          unzip $src -d $out/bin
          chmod +x $out/bin/bun
        '';

        meta = with pkgs.lib; {
          description = "Bun - JavaScript runtime";
          homepage = "https://bun.sh/";
          license = licenses.mit;
          platforms = platforms.all;
        };
      };

      bun_darwin_aarch64 = getBun { 
        nixSystem = "aarch64-darwin"; 
        bunSystem = "darwin-aarch64"; 
        sha256 = "144bvn34v26shi50ykrfvwm439qnqn7z2v903dxm0wzbwqpsf3m6"; 
      };

      bun_darwin_x64 = getBun { 
        nixSystem = "x86_64-darwin"; 
        bunSystem = "darwin-x64"; 
        sha256 = "1h6p9sb9dyx3i5dw3xfm20np6wh0p0blm2204fpig4dph5chdrim"; 
      };
      
      bun_linux_x64 = getBun { 
        nixSystem = "x86_64-linux"; 
        bunSystem = "linux-x64"; 
        sha256 = "1xwq9n7gpbpz8dyvcpavlr9i4lrl7kxkxwc84a0jnqnid2qrsbj0"; 
      };

    in {
      aarch64-darwin.bun = bun_darwin_aarch64;
      x86_64-darwin.bun = bun_darwin_x64;
      x86_64-linux.bun = bun_linux_x64;
    };
  };
}

验证方法

针对M1 Mac,运行以下命令测试安装:

nix run path:/Users/mp/workspace/com/proj/flakes/runtime#bun --version

内容的提问来源于stack exchange,提问作者Moon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 06:32:08