Detailed changes
@@ -84,7 +84,7 @@ dependencies = [
[[package]]
name = "alacritty_terminal"
version = "0.25.1-dev"
-source = "git+https://github.com/zed-industries/alacritty.git?rev=03c2907b44b4189aac5fdeaea331f5aab5c7072e#03c2907b44b4189aac5fdeaea331f5aab5c7072e"
+source = "git+https://github.com/zed-industries/alacritty.git?branch=add-hush-login-flag#828457c9ff1f7ea0a0469337cc8a37ee3a1b0590"
dependencies = [
"base64 0.22.1",
"bitflags 2.8.0",
@@ -370,7 +370,7 @@ zeta = { path = "crates/zeta" }
#
aho-corasick = "1.1"
-alacritty_terminal = { git = "https://github.com/zed-industries/alacritty.git", rev = "03c2907b44b4189aac5fdeaea331f5aab5c7072e" }
+alacritty_terminal = { git = "https://github.com/zed-industries/alacritty.git", branch = "add-hush-login-flag" }
any_vec = "0.14"
anyhow = "1.0.86"
arrayvec = { version = "0.7.4", features = ["serde"] }
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# Tom Hale, 2016. MIT Licence.
# Print out 256 colours, with each number printed in its corresponding colour
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# Copied from: https://unix.stackexchange.com/a/696756
# Based on: https://gist.github.com/XVilka/8346728 and https://unix.stackexchange.com/a/404415/395213
@@ -1,14 +1,11 @@
-(
- import
- (
- let
- lock = builtins.fromJSON (builtins.readFile ./flake.lock);
- in
- fetchTarball {
- url = lock.nodes.flake-compat.locked.url or "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
- sha256 = lock.nodes.flake-compat.locked.narHash;
- }
- )
- {src = ./.;}
-)
-.defaultNix
+(import (
+ let
+ lock = builtins.fromJSON (builtins.readFile ./flake.lock);
+ in
+ fetchTarball {
+ url =
+ lock.nodes.flake-compat.locked.url
+ or "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
+ sha256 = lock.nodes.flake-compat.locked.narHash;
+ }
+) { src = ./.; }).defaultNix
@@ -2,11 +2,11 @@
"nodes": {
"crane": {
"locked": {
- "lastModified": 1739936662,
- "narHash": "sha256-x4syUjNUuRblR07nDPeLDP7DpphaBVbUaSoeZkFbGSk=",
+ "lastModified": 1741148495,
+ "narHash": "sha256-EV8KUaIZ2/CdBXlutXrHoZYbWPeB65p5kKZk71gvDRI=",
"owner": "ipetkov",
"repo": "crane",
- "rev": "19de14aaeb869287647d9461cbd389187d8ecdb7",
+ "rev": "75390a36cd0c2cdd5f1aafd8a9f827d7107f2e53",
"type": "github"
},
"original": {
@@ -32,11 +32,11 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1740695751,
- "narHash": "sha256-D+R+kFxy1KsheiIzkkx/6L63wEHBYX21OIwlFV8JvDs=",
+ "lastModified": 1741246872,
+ "narHash": "sha256-Q6pMP4a9ed636qilcYX8XUguvKl/0/LGXhHcRI91p0U=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "6313551cd05425cd5b3e63fe47dbc324eabb15e4",
+ "rev": "10069ef4cf863633f57238f179a0297de84bd8d3",
"type": "github"
},
"original": {
@@ -61,11 +61,11 @@
]
},
"locked": {
- "lastModified": 1740882709,
- "narHash": "sha256-VC+8GxWK4p08jjIbmsNfeFQajW2lsiOR/XQiOOvqgvs=",
+ "lastModified": 1741314698,
+ "narHash": "sha256-6Yp0CTwAY/jq/F81Sa8NM0Zi1EwxAdASO6y4A5neGuc=",
"owner": "oxalica",
"repo": "rust-overlay",
- "rev": "f4d5a693c18b389f0d58f55b6f7be6ef85af186f",
+ "rev": "4e9af61c1a631886cdc7e13032af4fc9e75bb76b",
"type": "github"
},
"original": {
@@ -50,12 +50,11 @@
in
{
packages = forAllSystems (pkgs: {
- zed-editor = pkgs.zed-editor;
default = pkgs.zed-editor;
});
devShells = forAllSystems (pkgs: {
- default = import ./nix/shell.nix { inherit pkgs; };
+ default = pkgs.callPackage ./nix/shell.nix { };
});
formatter = forAllSystems (pkgs: pkgs.nixfmt-rfc-style);
@@ -2,11 +2,12 @@
lib,
crane,
rustToolchain,
- fetchpatch,
- clang,
+ rustPlatform,
cmake,
copyDesktopItems,
+ fetchFromGitHub,
curl,
+ clang,
perl,
pkg-config,
protobuf,
@@ -29,11 +30,12 @@
cargo-about,
cargo-bundle,
git,
+ livekit-libwebrtc,
apple-sdk_15,
+ darwin,
darwinMinVersionHook,
makeWrapper,
nodejs_22,
- nix-gitignore,
withGLES ? false,
}:
@@ -41,176 +43,208 @@
assert withGLES -> stdenv.hostPlatform.isLinux;
let
- includeFilter =
- path: type:
+ mkIncludeFilter =
+ root': path: type:
let
- baseName = baseNameOf (toString path);
- parentDir = dirOf path;
- inRootDir = type == "directory" && parentDir == ../.;
+ # note: under lazy-trees this introduces an extra copy
+ root = toString root' + "/";
+ relPath = lib.removePrefix root path;
+ topLevelIncludes = [
+ "crates"
+ "assets"
+ "extensions"
+ "script"
+ "tooling"
+ "Cargo.toml"
+ ".config" # nextest?
+ ];
+ firstComp = builtins.head (lib.path.subpath.components relPath);
in
- !(
- inRootDir
- && (baseName == "docs" || baseName == ".github" || baseName == ".git" || baseName == "target")
- );
+ builtins.elem firstComp topLevelIncludes;
+
craneLib = crane.overrideToolchain rustToolchain;
- commonSrc = lib.cleanSourceWith {
- src = nix-gitignore.gitignoreSource [ ] ../.;
- filter = includeFilter;
- name = "source";
- };
- commonArgs = rec {
- pname = "zed-editor";
- version = "nightly";
-
- src = commonSrc;
-
- nativeBuildInputs =
- [
- clang
- cmake
- copyDesktopItems
- curl
- perl
- pkg-config
- protobuf
- cargo-about
- ]
- ++ lib.optionals stdenv.hostPlatform.isLinux [ makeWrapper ]
- ++ lib.optionals stdenv.hostPlatform.isDarwin [ cargo-bundle ];
-
- buildInputs =
- [
- curl
- fontconfig
- freetype
- libgit2
- openssl
- sqlite
- zlib
- zstd
- ]
- ++ lib.optionals stdenv.hostPlatform.isLinux [
- alsa-lib
- libxkbcommon
- wayland
- xorg.libxcb
- ]
- ++ lib.optionals stdenv.hostPlatform.isDarwin [
- apple-sdk_15
- (darwinMinVersionHook "10.15")
- ];
+ gpu-lib = if withGLES then libglvnd else vulkan-loader;
+ commonArgs =
+ let
+ zedCargoLock = builtins.fromTOML (builtins.readFile ../crates/zed/Cargo.toml);
+ in
+ rec {
+ pname = "zed-editor";
+ version = zedCargoLock.package.version + "-nightly";
+ src = builtins.path {
+ path = ../.;
+ filter = mkIncludeFilter ../.;
+ name = "source";
+ };
+
+ cargoLock = ../Cargo.lock;
+
+ nativeBuildInputs =
+ [
+ clang # TODO: use pkgs.clangStdenv or ignore cargo config?
+ cmake
+ copyDesktopItems
+ curl
+ perl
+ pkg-config
+ protobuf
+ cargo-about
+ rustPlatform.bindgenHook
+ ]
+ ++ lib.optionals stdenv.hostPlatform.isLinux [ makeWrapper ]
+ ++ lib.optionals stdenv.hostPlatform.isDarwin [
+ # TODO: move to overlay so it's usable in the shell
+ (cargo-bundle.overrideAttrs (old: {
+ version = "0.6.0-zed";
+ src = fetchFromGitHub {
+ owner = "zed-industries";
+ repo = "cargo-bundle";
+ rev = "zed-deploy";
+ hash = "sha256-OxYdTSiR9ueCvtt7Y2OJkvzwxxnxu453cMS+l/Bi5hM=";
+ };
+ }))
+ ];
- env = {
- ZSTD_SYS_USE_PKG_CONFIG = true;
- FONTCONFIG_FILE = makeFontsConf {
- fontDirectories = [
- "${src}/assets/fonts/plex-mono"
- "${src}/assets/fonts/plex-sans"
+ buildInputs =
+ [
+ curl
+ fontconfig
+ freetype
+ # TODO: need staticlib of this for linking the musl remote server.
+ # should make it a separate derivation/flake output
+ # see https://crane.dev/examples/cross-musl.html
+ libgit2
+ openssl
+ sqlite
+ zlib
+ zstd
+ ]
+ ++ lib.optionals stdenv.hostPlatform.isLinux [
+ alsa-lib
+ libxkbcommon
+ wayland
+ gpu-lib
+ xorg.libxcb
+ ]
+ ++ lib.optionals stdenv.hostPlatform.isDarwin [
+ apple-sdk_15
+ darwin.apple_sdk.frameworks.System
+ (darwinMinVersionHook "10.15")
];
+
+ cargoExtraArgs = "--package=zed --package=cli --features=gpui/runtime_shaders";
+
+ env = {
+ ZSTD_SYS_USE_PKG_CONFIG = true;
+ FONTCONFIG_FILE = makeFontsConf {
+ fontDirectories = [
+ ../assets/fonts/plex-mono
+ ../assets/fonts/plex-sans
+ ];
+ };
+ ZED_UPDATE_EXPLANATION = "Zed has been installed using Nix. Auto-updates have thus been disabled.";
+ RELEASE_VERSION = version;
+ RUSTFLAGS = if withGLES then "--cfg gles" else "";
+ # TODO: why are these not handled by the linker given that they're in buildInputs?
+ NIX_LDFLAGS = "-rpath ${
+ lib.makeLibraryPath [
+ gpu-lib
+ wayland
+ ]
+ }";
+ LK_CUSTOM_WEBRTC = livekit-libwebrtc;
+ };
+
+ cargoVendorDir = craneLib.vendorCargoDeps {
+ inherit src cargoLock;
+ overrideVendorGitCheckout =
+ let
+ hasWebRtcSys = builtins.any (crate: crate.name == "webrtc-sys");
+ # `webrtc-sys` expects a staticlib; nixpkgs' `livekit-webrtc` has been patched to
+ # produce a `dylib`... patching `webrtc-sys`'s build script is the easier option
+ # TODO: send livekit sdk a PR to make this configurable
+ postPatch = ''
+ substituteInPlace webrtc-sys/build.rs --replace-fail \
+ "cargo:rustc-link-lib=static=webrtc" "cargo:rustc-link-lib=dylib=webrtc"
+ '';
+ in
+ crates: drv:
+ if hasWebRtcSys crates then
+ drv.overrideAttrs (o: {
+ postPatch = (o.postPatch or "") + postPatch;
+ })
+ else
+ drv;
};
- ZED_UPDATE_EXPLANATION = "Zed has been installed using Nix. Auto-updates have thus been disabled.";
- RELEASE_VERSION = version;
};
- };
- cargoArtifacts = craneLib.buildDepsOnly commonArgs;
+ cargoArtifacts = craneLib.buildDepsOnly (
+ commonArgs
+ // {
+ # TODO: figure out why the main derivation is still rebuilding deps...
+ # disable pre-building the deps for now
+ buildPhaseCargoCommand = "true";
+
+ # forcibly inhibit `doInstallCargoArtifacts`...
+ # https://github.com/ipetkov/crane/blob/1d19e2ec7a29dcc25845eec5f1527aaf275ec23e/lib/setupHooks/installCargoArtifactsHook.sh#L111
+ #
+ # it is, unfortunately, not overridable in `buildDepsOnly`:
+ # https://github.com/ipetkov/crane/blob/1d19e2ec7a29dcc25845eec5f1527aaf275ec23e/lib/buildDepsOnly.nix#L85
+ preBuild = "postInstallHooks=()";
+ doCheck = false;
+ }
+ );
in
craneLib.buildPackage (
- commonArgs
- // rec {
+ lib.recursiveUpdate commonArgs {
inherit cargoArtifacts;
- patches =
- [
- # Zed uses cargo-install to install cargo-about during the script execution.
- # We provide cargo-about ourselves and can skip this step.
- # Until https://github.com/zed-industries/zed/issues/19971 is fixed,
- # we also skip any crate for which the license cannot be determined.
- (fetchpatch {
- url = "https://raw.githubusercontent.com/NixOS/nixpkgs/1fd02d90c6c097f91349df35da62d36c19359ba7/pkgs/by-name/ze/zed-editor/0001-generate-licenses.patch";
- hash = "sha256-cLgqLDXW1JtQ2OQFLd5UolAjfy7bMoTw40lEx2jA2pk=";
- })
- ]
- ++ lib.optionals stdenv.hostPlatform.isDarwin [
- # Livekit requires Swift 6
- # We need this until livekit-rust sdk is used
- (fetchpatch {
- url = "https://raw.githubusercontent.com/NixOS/nixpkgs/1fd02d90c6c097f91349df35da62d36c19359ba7/pkgs/by-name/ze/zed-editor/0002-disable-livekit-darwin.patch";
- hash = "sha256-whZ7RaXv8hrVzWAveU3qiBnZSrvGNEHTuyNhxgMIo5w=";
- })
- ];
-
- cargoExtraArgs = "--package=zed --package=cli --features=gpui/runtime_shaders";
+ patches = lib.optionals stdenv.hostPlatform.isDarwin [
+ # Livekit requires Swift 6
+ # We need this until livekit-rust sdk is used
+ ../script/patches/use-cross-platform-livekit.patch
+ ];
dontUseCmakeConfigure = true;
- preBuild = ''
- bash script/generate-licenses
- '';
- postFixup = lib.optionalString stdenv.hostPlatform.isLinux ''
- patchelf --add-rpath ${gpu-lib}/lib $out/libexec/*
- patchelf --add-rpath ${wayland}/lib $out/libexec/*
- wrapProgram $out/libexec/zed-editor --suffix PATH : ${lib.makeBinPath [ nodejs_22 ]}
+ # without the env var generate-licenses fails due to crane's fetchCargoVendor, see:
+ # https://github.com/zed-industries/zed/issues/19971#issuecomment-2688455390
+ preBuild = ''
+ ALLOW_MISSING_LICENSES=yes bash script/generate-licenses
+ echo nightly > crates/zed/RELEASE_CHANNEL
'';
- RUSTFLAGS = if withGLES then "--cfg gles" else "";
- gpu-lib = if withGLES then libglvnd else vulkan-loader;
+ # TODO: try craneLib.cargoNextest separate output and doCheck=false
+ # do we even care about running our test suite in the nix sandbox?
- preCheck = ''
- export HOME=$(mktemp -d);
- '';
-
- cargoTestExtraArgs =
- "-- "
- + lib.concatStringsSep " " (
- [
- # Flaky: unreliably fails on certain hosts (including Hydra)
- "--skip=zed::tests::test_window_edit_state_restoring_enabled"
- ]
- ++ lib.optionals stdenv.hostPlatform.isLinux [
- # Fails on certain hosts (including Hydra) for unclear reason
- "--skip=test_open_paths_action"
- ]
- );
+ # see crane bug: https://github.com/ipetkov/crane/issues/808
+ doNotRemoveReferencesToRustToolchain = true;
+ doNotRemoveReferencesToVendorDir = true;
installPhase =
if stdenv.hostPlatform.isDarwin then
''
runHook preInstall
- # cargo-bundle expects the binary in target/release
- mv target/release/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
+ sed -i "s/package.metadata.bundle-nightly/package.metadata.bundle/" Cargo.toml
export CARGO_BUNDLE_SKIP_BUILD=true
- app_path=$(cargo bundle --release | xargs)
-
- # We're not using the fork of cargo-bundle, so we must manually append 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
-
+ app_path="$(cargo bundle --release | xargs)"
popd
mkdir -p $out/Applications $out/bin
# Zed expects git next to its own binary
- ln -s ${git}/bin/git $app_path/Contents/MacOS/git
- mv target/release/cli $app_path/Contents/MacOS/cli
- mv $app_path $out/Applications/
+ ln -s ${git}/bin/git "$app_path/Contents/MacOS/git"
+ mv target/release/cli "$app_path/Contents/MacOS/cli"
+ mv "$app_path" $out/Applications/
# Physical location of the CLI must be inside the app bundle as this is used
# to determine which app to start
- ln -s $out/Applications/Zed.app/Contents/MacOS/cli $out/bin/zed
+ ln -s "$out/Applications/Zed Nightly.app/Contents/MacOS/cli" $out/bin/zed
runHook postInstall
''
else
+ # TODO: icons should probably be named "zed-nightly". fix bundle-linux first
''
runHook preInstall
@@ -218,24 +252,31 @@ craneLib.buildPackage (
cp target/release/zed $out/libexec/zed-editor
cp target/release/cli $out/bin/zed
- install -D ${commonSrc}/crates/zed/resources/app-icon@2x.png $out/share/icons/hicolor/1024x1024@2x/apps/zed.png
- install -D ${commonSrc}/crates/zed/resources/app-icon.png $out/share/icons/hicolor/512x512/apps/zed.png
+ install -D "crates/zed/resources/app-icon-nightly@2x.png" \
+ "$out/share/icons/hicolor/1024x1024@2x/apps/zed.png"
+ install -D crates/zed/resources/app-icon-nightly.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)
- # and https://github.com/zed-industries/zed/blob/v0.141.2/script/install.sh (final desktop file name)
+ # extracted from ../script/bundle-linux (envsubst) and
+ # ../script/install.sh (final desktop file name)
(
export DO_STARTUP_NOTIFY="true"
export APP_CLI="zed"
export APP_ICON="zed"
- export APP_NAME="Zed"
+ export APP_NAME="Zed Nightly"
export APP_ARGS="%U"
mkdir -p "$out/share/applications"
- ${lib.getExe envsubst} < "crates/zed/resources/zed.desktop.in" > "$out/share/applications/dev.zed.Zed.desktop"
+ ${lib.getExe envsubst} < "crates/zed/resources/zed.desktop.in" > "$out/share/applications/dev.zed.Zed-Nightly.desktop"
)
runHook postInstall
'';
+ # TODO: why isn't this also done on macOS?
+ postFixup = lib.optionalString stdenv.hostPlatform.isLinux ''
+ wrapProgram $out/libexec/zed-editor --suffix PATH : ${lib.makeBinPath [ nodejs_22 ]}
+ '';
+
meta = {
description = "High-performance, multiplayer code editor from the creators of Atom and Tree-sitter";
homepage = "https://zed.dev";
@@ -1,65 +1,62 @@
{
- pkgs ? import <nixpkgs> { },
+ lib,
+ mkShell,
+ stdenv,
+ stdenvAdapters,
+ makeFontsConf,
+
+ zed-editor,
+
+ rust-analyzer,
+ cargo-nextest,
+ nixfmt-rfc-style,
+ protobuf,
+ nodejs_22,
}:
let
- inherit (pkgs) lib;
+ moldStdenv = stdenvAdapters.useMoldLinker stdenv;
+ mkShell' =
+ if stdenv.hostPlatform.isLinux then mkShell.override { stdenv = moldStdenv; } else mkShell;
in
-pkgs.mkShell rec {
- packages =
- [
- pkgs.clang
- pkgs.curl
- pkgs.cmake
- pkgs.perl
- pkgs.pkg-config
- pkgs.protobuf
- pkgs.rustPlatform.bindgenHook
- pkgs.rust-analyzer
- ]
- ++ lib.optionals pkgs.stdenv.hostPlatform.isLinux [
- pkgs.mold
- ];
-
- buildInputs =
- [
- pkgs.bzip2
- pkgs.curl
- pkgs.fontconfig
- pkgs.freetype
- pkgs.libgit2
- pkgs.openssl
- pkgs.sqlite
- pkgs.stdenv.cc.cc
- pkgs.zlib
- pkgs.zstd
- pkgs.rustToolchain
- ]
- ++ lib.optionals pkgs.stdenv.hostPlatform.isLinux [
- pkgs.alsa-lib
- pkgs.libxkbcommon
- pkgs.wayland
- pkgs.xorg.libxcb
- pkgs.vulkan-loader
- ]
- ++ lib.optional pkgs.stdenv.hostPlatform.isDarwin pkgs.apple-sdk_15;
-
- LD_LIBRARY_PATH = lib.makeLibraryPath buildInputs;
+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
- PROTOC="${pkgs.protobuf}/bin/protoc";
+ # `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.
- # Xcode is required for development anyways
- shellHook = lib.optionalString pkgs.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";
- '';
+ # 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";
+ '';
- FONTCONFIG_FILE = pkgs.makeFontsConf {
- fontDirectories = [
- "./assets/fonts/zed-mono"
- "./assets/fonts/zed-sans"
- ];
- };
- ZSTD_SYS_USE_PKG_CONFIG = true;
+ env =
+ let
+ baseEnvs =
+ (zed-editor.overrideAttrs (attrs: {
+ passthru = { inherit (attrs) env; };
+ })).env; # exfil `env`; it's not in drvAttrs
+ in
+ # unsetting this var so we download the staticlib during the build
+ (removeAttrs baseEnvs [ "LK_CUSTOM_WEBRTC" ])
+ // {
+ # 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";
+ };
}
@@ -2,4 +2,11 @@
channel = "1.85"
profile = "minimal"
components = [ "rustfmt", "clippy" ]
-targets = [ "x86_64-apple-darwin", "aarch64-apple-darwin", "x86_64-unknown-linux-gnu", "wasm32-wasip1", "x86_64-pc-windows-msvc" ]
+targets = [
+ "x86_64-apple-darwin",
+ "aarch64-apple-darwin",
+ "x86_64-unknown-linux-gnu",
+ "x86_64-pc-windows-msvc",
+ "wasm32-wasip1", # extensions
+ "x86_64-unknown-linux-musl", # remote server
+]
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
set -e
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
set -e
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
set -eu
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
channel=$(cat crates/zed/RELEASE_CHANNEL)
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
set -exuo pipefail
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
set -eu
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# Notes for fixing this script if it's broken:
# - if you see an error about "can't find perf_6.1" you need to install `linux-perf` from the
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
set -e
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
set -eu
source script/lib/deploy-helpers.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
set -eu
source script/lib/deploy-helpers.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
databases=$(psql --tuples-only --command "
SELECT
@@ -2,11 +2,11 @@
set -euo pipefail
-CARGO_ABOUT_VERSION="0.6.6"
+CARGO_ABOUT_VERSION="0.6"
OUTPUT_FILE="${1:-$(pwd)/assets/licenses.md}"
TEMPLATE_FILE="script/licenses/template.md.hbs"
-echo -n "" > "$OUTPUT_FILE"
+echo -n "" >"$OUTPUT_FILE"
{
echo -e "# ###### THEME LICENSES ######\n"
@@ -16,21 +16,24 @@ echo -n "" > "$OUTPUT_FILE"
cat assets/icons/LICENSES
echo -e "\n# ###### CODE LICENSES ######\n"
-} >> "$OUTPUT_FILE"
+} >>"$OUTPUT_FILE"
-if ! cargo install --list | grep "cargo-about v$CARGO_ABOUT_VERSION" > /dev/null; then
- echo "Installing cargo-about@$CARGO_ABOUT_VERSION..."
- cargo install "cargo-about@$CARGO_ABOUT_VERSION"
+if ! cargo about --version | grep "cargo-about $CARGO_ABOUT_VERSION" >/dev/null; then
+ echo "Installing cargo-about@^$CARGO_ABOUT_VERSION..."
+ cargo install "cargo-about@^$CARGO_ABOUT_VERSION"
else
- echo "cargo-about@$CARGO_ABOUT_VERSION is already installed."
+ echo "cargo-about@^$CARGO_ABOUT_VERSION is already installed."
fi
echo "Generating cargo licenses"
-
+if [ -z "${ALLOW_MISSING_LICENSES-}" ]; then FAIL_FLAG=--fail; else FAIL_FLAG=""; fi
+set -x
cargo about generate \
- --fail \
+ $FAIL_FLAG \
+ --frozen \
-c script/licenses/zed-licenses.toml \
- "$TEMPLATE_FILE" >> "$OUTPUT_FILE"
+ "$TEMPLATE_FILE" >>"$OUTPUT_FILE"
+set +x
sed -i.bak 's/"/"/g' "$OUTPUT_FILE"
sed -i.bak 's/'/'\''/g' "$OUTPUT_FILE" # The ` '\'' ` thing ends the string, appends a single quote, and re-opens the string
@@ -2,24 +2,26 @@
set -euo pipefail
-CARGO_ABOUT_VERSION="0.6.6"
+CARGO_ABOUT_VERSION="0.6"
OUTPUT_FILE="${1:-$(pwd)/assets/licenses.csv}"
TEMPLATE_FILE="script/licenses/template.csv.hbs"
-if ! cargo install --list | grep "cargo-about v$CARGO_ABOUT_VERSION" > /dev/null; then
- echo "Installing cargo-about@$CARGO_ABOUT_VERSION..."
- cargo install "cargo-about@$CARGO_ABOUT_VERSION"
+if ! cargo about --version | grep "cargo-about $CARGO_ABOUT_VERSION" > /dev/null; then
+ echo "Installing cargo-about@^$CARGO_ABOUT_VERSION..."
+ cargo install "cargo-about@^$CARGO_ABOUT_VERSION"
else
- echo "cargo-about@$CARGO_ABOUT_VERSION is already installed."
+ echo "cargo-about@^$CARGO_ABOUT_VERSION is already installed."
fi
echo "Generating cargo licenses"
-
+set -x
cargo about generate \
--fail \
+ --frozen \
-c script/licenses/zed-licenses.toml \
- "$TEMPLATE_FILE" \
+ $TEMPLATE_FILE \
| awk 'NR==1{print;next} NF{print | "sort"}' \
> "$OUTPUT_FILE"
+set +x
echo "generate-licenses-csv completed. See $OUTPUT_FILE"
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
set -e
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
set -eu
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
channel="$1"
@@ -1,3 +1,3 @@
-#!/bin/bash
+#!/usr/bin/env bash
cargo run -p theme_importer -- "$@"
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
if [[ $# -ne 1 ]]; then
echo "Usage: $0 [production|staging|...]"
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
set -eu
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
export GPUTOOLS_LOAD_GTMTLCAPTURE=1
export DYLD_LIBRARY_PATH="/usr/lib/system/introspection"
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# Try to make sure we are in the zed repo root
if [ ! -d "crates" ] || [ ! -d "script" ]; then
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# This script manages prompt overrides for the Zed editor.
#
@@ -1,4 +1,6 @@
-#!/bin/bash -e
+#!/usr/bin/env bash
+
+set -e
which minio > /dev/null || (echo "installing minio..."; brew install minio/stable/minio)
mkdir -p .blob_store/the-extensions-bucket
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
set -e
cargo run -p collab migrate
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
if [ -z "$1" ]; then
cargo run -p storybook
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
set -euo pipefail
which gh >/dev/null || brew install gh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
set -eu
source script/lib/deploy-helpers.sh
@@ -1,14 +1,11 @@
-(
- import
- (
- let
- lock = builtins.fromJSON (builtins.readFile ./flake.lock);
- in
- fetchTarball {
- url = lock.nodes.flake-compat.locked.url or "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
- sha256 = lock.nodes.flake-compat.locked.narHash;
- }
- )
- {src = ./.;}
-)
-.shellNix
+(import (
+ let
+ lock = builtins.fromJSON (builtins.readFile ./flake.lock);
+ in
+ fetchTarball {
+ url =
+ lock.nodes.flake-compat.locked.url
+ or "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
+ sha256 = lock.nodes.flake-compat.locked.narHash;
+ }
+) { src = ./.; }).shellNix