zed-editor: fixes and corrections (#508722)

This commit is contained in:
Niklas Korz
2026-04-12 15:11:23 +00:00
committed by GitHub
+15 -52
View File
@@ -3,13 +3,9 @@
rustPlatform,
fetchFromGitHub,
cmake,
copyDesktopItems,
curl,
perl,
pkg-config,
protobuf,
fontconfig,
freetype,
libgit2,
openssl,
sqlite,
@@ -19,10 +15,8 @@
alsa-lib,
libxkbcommon,
wayland,
libglvnd,
libxcb,
stdenv,
makeFontsConf,
vulkan-loader,
envsubst,
nix-update-script,
@@ -31,8 +25,6 @@
buildFHSEnv,
cargo-bundle,
git,
apple-sdk_15,
darwinMinVersionHook,
makeBinaryWrapper,
nodejs,
libGL,
@@ -42,13 +34,9 @@
testers,
writableTmpDirAsHomeHook,
withGLES ? false,
buildRemoteServer ? true,
zed-editor,
}:
assert withGLES -> stdenv.hostPlatform.isLinux;
let
channel = "stable";
executableName = "zeditor";
@@ -106,8 +94,6 @@ let
'';
};
};
gpu-lib = if withGLES then libglvnd else vulkan-loader;
in
rustPlatform.buildRustPackage (finalAttrs: {
pname = "zed-editor";
@@ -152,14 +138,12 @@ rustPlatform.buildRustPackage (finalAttrs: {
cargoHash = "sha256-++2q4zeLBDSW4ooTu7dU77YsuHggeX/sWkvuCb3PF50=";
__structuredAttrs = true;
nativeBuildInputs = [
cmake
copyDesktopItems
curl
perl
pkg-config
protobuf
rustPlatform.bindgenHook
cargo-about
]
++ lib.optionals stdenv.hostPlatform.isLinux [ makeBinaryWrapper ]
@@ -168,16 +152,14 @@ rustPlatform.buildRustPackage (finalAttrs: {
dontUseCmakeConfigure = true;
buildInputs = [
curl
fontconfig
freetype
libgit2
openssl
sqlite
zlib
zstd
]
++ lib.optionals stdenv.hostPlatform.isLinux [
fontconfig
openssl
glib
alsa-lib
libxkbcommon
@@ -187,12 +169,6 @@ rustPlatform.buildRustPackage (finalAttrs: {
libGL
libx11
libxext
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
apple-sdk_15
# ScreenCaptureKit, required by livekit, is only available on 12.3 and up:
# https://developer.apple.com/documentation/screencapturekit
(darwinMinVersionHook "12.3")
];
cargoBuildFlags = [
@@ -216,20 +192,16 @@ rustPlatform.buildRustPackage (finalAttrs: {
env = {
ALLOW_MISSING_LICENSES = true;
OPENSSL_NO_VENDOR = true;
LIBGIT2_NO_VENDOR = true;
LIBSQLITE3_SYS_USE_PKG_CONFIG = true;
ZSTD_SYS_USE_PKG_CONFIG = true;
FONTCONFIG_FILE = makeFontsConf {
fontDirectories = [
"${finalAttrs.src}/assets/fonts/plex-mono"
"${finalAttrs.src}/assets/fonts/plex-sans"
];
};
# Setting this environment variable allows to disable auto-updates
# https://zed.dev/docs/development/linux#notes-for-packaging-zed
ZED_UPDATE_EXPLANATION = "Zed has been installed using Nix. Auto-updates have thus been disabled.";
# Used by `zed --version`
RELEASE_VERSION = finalAttrs.version;
LK_CUSTOM_WEBRTC = livekit-libwebrtc;
RUSTFLAGS = lib.optionalString withGLES "--cfg gles";
};
preBuild = ''
@@ -237,8 +209,13 @@ rustPlatform.buildRustPackage (finalAttrs: {
'';
postFixup = lib.optionalString stdenv.hostPlatform.isLinux ''
patchelf --add-rpath ${gpu-lib}/lib $out/libexec/*
patchelf --add-rpath ${wayland}/lib $out/libexec/*
patchelf $out/libexec/zed-editor --add-rpath ${
lib.makeLibraryPath [
libGL
vulkan-loader
wayland
]
}
wrapProgram $out/libexec/zed-editor --suffix PATH : ${lib.makeBinPath [ nodejs ]}
'';
@@ -259,21 +236,10 @@ rustPlatform.buildRustPackage (finalAttrs: {
mv $release_target/zed target/release/zed
pushd crates/zed
# Note that this is GNU sed, while Zed's bundle-mac uses BSD sed
sed -i "s/package.metadata.bundle-stable/package.metadata.bundle/" Cargo.toml
export CARGO_BUNDLE_SKIP_BUILD=true
app_path=$(cargo bundle --release | xargs)
# We're not using Zed's fork of cargo-bundle, so we must manually append their plist extensions
# Remove closing tags from Info.plist (last two lines)
head -n -2 $app_path/Contents/Info.plist > Info.plist
# Append extensions
cat resources/info/*.plist >> Info.plist
# Add closing tags
printf "</dict>\n</plist>\n" >> Info.plist
mv Info.plist $app_path/Contents/Info.plist
popd
mkdir -p $out/Applications $out/bin
@@ -290,7 +256,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
install -Dm755 $release_target/zed $out/libexec/zed-editor
install -Dm755 $release_target/cli $out/bin/zeditor
install -Dm644 $src/crates/zed/resources/app-icon@2x.png $out/share/icons/hicolor/1024x1024@2x/apps/zed.png
install -Dm644 $src/crates/zed/resources/app-icon@2x.png $out/share/icons/hicolor/512x512@2x/apps/zed.png
install -Dm644 $src/crates/zed/resources/app-icon.png $out/share/icons/hicolor/512x512/apps/zed.png
# extracted from https://github.com/zed-industries/zed/blob/v0.141.2/script/bundle-linux (envsubst)
@@ -342,9 +308,6 @@ rustPlatform.buildRustPackage (finalAttrs: {
package = finalAttrs.finalPackage.remote_server;
command = "${finalAttrs.remoteServerExecutableName} version";
};
}
// lib.optionalAttrs stdenv.hostPlatform.isLinux {
withGles = zed-editor.override { withGLES = true; };
};
};