
I'll be using this to `nix run github:zed-industries/zed/nightly` and get an up-to-date and cached nightly build. It'll also serve as a way to warn me when the nix build is broken, rather than having to wait for users to report it. Eventually and depending on the build time of the nix builds, we may want to consider putting a nix build in CI (#17458) to prevent breakages, but for now a best-effort nightly build that doesn't block the job if it fails is a good start. Resolve #19937 Release Notes: - N/A
66 lines
1.8 KiB
Nix
66 lines
1.8 KiB
Nix
{
|
||
lib,
|
||
mkShell,
|
||
stdenv,
|
||
stdenvAdapters,
|
||
makeFontsConf,
|
||
|
||
zed-editor,
|
||
|
||
rust-analyzer,
|
||
cargo-nextest,
|
||
nixfmt-rfc-style,
|
||
protobuf,
|
||
nodejs_22,
|
||
}:
|
||
let
|
||
moldStdenv = stdenvAdapters.useMoldLinker stdenv;
|
||
mkShell' =
|
||
if stdenv.hostPlatform.isLinux then mkShell.override { stdenv = moldStdenv; } else mkShell;
|
||
in
|
||
mkShell' {
|
||
inputsFrom = [ zed-editor ];
|
||
packages = [
|
||
rust-analyzer
|
||
cargo-nextest
|
||
nixfmt-rfc-style
|
||
# TODO: package protobuf-language-server for editing zed.proto
|
||
# TODO: add other tools used in our scripts
|
||
|
||
# `build.nix` adds this to the `zed-editor` wrapper (see `postFixup`)
|
||
# we'll just put it on `$PATH`:
|
||
nodejs_22
|
||
];
|
||
|
||
# We set SDKROOT and DEVELOPER_DIR to the Xcode ones instead of the nixpkgs ones, because
|
||
# we need Swift 6.0 and nixpkgs doesn't have it
|
||
shellHook = lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||
export SDKROOT="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk";
|
||
export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer";
|
||
'';
|
||
|
||
env =
|
||
let
|
||
baseEnvs =
|
||
(zed-editor.overrideAttrs (attrs: {
|
||
passthru = { inherit (attrs) env; };
|
||
})).env; # exfil `env`; it's not in drvAttrs
|
||
in
|
||
(removeAttrs baseEnvs [
|
||
"LK_CUSTOM_WEBRTC" # download the staticlib during the build as usual
|
||
"ZED_UPDATE_EXPLANATION" # allow auto-updates
|
||
"CARGO_PROFILE" # let you specify the profile
|
||
"TARGET_DIR"
|
||
])
|
||
// {
|
||
# note: different than `$FONTCONFIG_FILE` in `build.nix` – this refers to relative paths
|
||
# outside the nix store instead of to `$src`
|
||
FONTCONFIG_FILE = makeFontsConf {
|
||
fontDirectories = [
|
||
"./assets/fonts/plex-mono"
|
||
"./assets/fonts/plex-sans"
|
||
];
|
||
};
|
||
PROTOC = "${protobuf}/bin/protoc";
|
||
};
|
||
}
|