nixos跑traeide

声明

下面脚本仅供学习用途,请在使用后24小时内删除,请勿用破坏软件完整性、损害trae原作者任何权益的用途。

下载deb包

https://www.trae.ai/download

测试构建

nix-build trae-ide.nix

直接运行构建好的二进制

./result/bin/trae-ide

复制代码
# trae-ide.nix
{ pkgs ? import <nixpkgs> { config.allowUnfree = true; } }:

pkgs.stdenv.mkDerivation rec {
  pname = "trae-ide";
  version = "latest";

  src = ./Trae-linux-x64.deb;

  nativeBuildInputs = with pkgs; [
    autoPatchelfHook
    dpkg
    makeWrapper
  ];

  buildInputs = with pkgs; [
    # 基础 Electron 依赖
    xorg.libxkbfile
    libkrb5
    libxscrnsaver
    alsa-lib
    at-spi2-atk
    at-spi2-core
    atk
    cairo
    cups
    dbus
    expat
    fontconfig
    freetype
    gdk-pixbuf
    glib
    gtk3
    libGL
    libX11
    libXcomposite
    libXcursor
    libXdamage
    libXext
    libXfixes
    libXi
    libXrandr
    libXrender
    libXtst
    libdrm
    libnotify
    libsecret
    libuuid
    libxcb
    libxshmfence
    mesa
    nss
    pango
    systemd
    zlib
    
    # --- 新增缺失的依赖 ---
    webkitgtk_4_1    # 提供 libwebkit2gtk-4.1.so.0
    libsoup_3        # 提供 libsoup-3.0.so.0
    libvncserver     # 预防某些模块需要
  ];

  # 关键点:告诉 autoPatchelf 忽略 musl 版本的二进制文件
  # 因为这些文件是给 Alpine Linux 准备的,在 NixOS 上不需要修复
  autoPatchelfIgnoreMissingDeps = [
    "libc.musl-x86_64.so.1"
  ];

  unpackPhase = ''
    ar x $src
    tar -xvf data.tar.* --no-same-permissions --no-same-owner
  '';

  installPhase = ''
    mkdir -p $out/bin $out/share/trae-ide

    # 1. 自动识别安装路径
    if [ -d "opt/Trae" ]; then
      cp -av opt/Trae/* $out/share/trae-ide/
    elif [ -d "opt/trae" ]; then
      cp -av opt/trae/* $out/share/trae-ide/
    elif [ -d "usr/share/trae" ]; then
      cp -av usr/share/trae/* $out/share/trae-ide/
    fi

    # 2. 移除可能导致冲突的内置库
    # 如果遇到特定扩展报错,可以尝试删除多余的架构支持
    rm -rf $out/share/trae-ide/resources/app/extensions/*-musl-* 

    # 3. 安装资源文件
    mkdir -p $out/share/icons/hicolor/scalable/apps $out/share/applications
    if [ -d "usr/share/icons" ]; then
      cp -av usr/share/icons/* $out/share/icons/ 2>/dev/null || true
    fi
    if [ -d "usr/share/applications" ]; then
      cp -av usr/share/applications/* $out/share/applications/ 2>/dev/null || true
    fi

    # 4. 修正 Desktop 执行路径
    find $out/share/applications -name "*.desktop" -exec sed -i "s|Exec=.*|Exec=$out/bin/trae-ide %U|g" {} +

    # 5. 封装启动脚本
    makeWrapper $out/share/trae-ide/trae $out/bin/trae-ide \
      --prefix LD_LIBRARY_PATH : "${pkgs.lib.makeLibraryPath buildInputs}" \
      --add-flags "--no-sandbox" \
      --add-flags "--enable-features=UseOzonePlatform" \
      --add-flags "--ozone-platform-hint=auto" \
      --set DOT_QODER_PATH "$HOME/.trae" 
  '';

  meta = with pkgs.lib; {
    description = "Trae Agentic Coding IDE";
    homepage = "https://trae.com";
    license = licenses.unfree;
    platforms = [ "x86_64-linux" ];
    mainProgram = "trae-ide";
  };
}
相关推荐
爱折腾的小码农20 天前
在NixOS上运行Qoder IDE的配置指南
qoder·nixos-qoder·nixos·qorder for nix