声明
下面脚本仅供学习用途,请在使用后24小时内删除,请勿用破坏软件完整性、损害trae原作者任何权益的用途。
下载deb包
测试构建
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";
};
}