Fix nix build (#26270)
This PR includes lots of small fixes to get our `build.nix` and
`shell.nix` back to a working state.
I've tested this by running `cargo run` (inside the devshell) and `nix
run` on x86 nixos and arm64 darwin machines. I'd appreciate it if others
could test building inside the devshell to double-check that it's not
just working because I happen to have some system-level packages
installed, as well as seeing if it works on other platforms (non-nixos
linux, arm linux, x86 darwin).
I couldn't get the full test suite (`cargo nextest run --workspace`)
passing in the devshell on darwin, but they _are_ all passing on nixos.
nixpkgs [disables some of our
tests](92d11f06d5/pkgs/by-name/ze/zed-editor/package.nix (L226-L234)
)
that apparently fail or are flakey on hydra, but they don't know why.
I'm going to punt on debugging those for now, especially given that they
seem to be working for me. I'm also unsure of whether we actually want
the nix checkPhase to run the full test suite (it's currently not
passing `--workspace`) given that we have separate CI that should
enforce that those pass on all PRs.
Here's an overview of the changes made:
- Fix our `generate-licenses` script
- Relaxes the `cargo-about` version requirement slightly so it doesn't
try to install an older binary when the nixpkgs one is newer than our
requirement
- Add a workaround for [this cargo-about
issue](https://github.com/zed-industries/zed/issues/19971) obviating the
need for the patching done in the nixpkgs package
- Set the new `--frozen` flag to avoid network access/mutating the
lockfile
- Use dynamic webrtc lib from nixpkgs, and fixes up the build script in
webrtc-sys that hardcodes it to be statically linked.
- Use `inputsFrom` in `shell.nix` and avoid duplicating everything from
`build.nix`
- Add a temporary workaround for an [upstream crane
bug](https://github.com/ipetkov/crane/issues/808).
- Fix shebangs in our `script` dir to not hard-code `/bin/bash`
There are still a bunch of issues that aren't resolved here, I'll make a
tracking issue for those and try to land this first just to get back to
an unbroken state. Eventually among other things I'd like to use a
`libgit2` from `staticPkgs` and musl cross compilation to build the
remote server under nix, and then add that as a separate flake output
and include it in the shell's `inputsFrom` list.
Thanks @niklaskorz, @GaetanLepage, @bbigras and all the other nixpkgs
maintainers that have kept the `zed-editor` package working and up to
date! I seriously considered just making our flake `overrideAttrs` the
package in nixpkgs given how well maintained it is.
Thanks @WeetHet for your volunteer maintinance of this flake. I
referenced #24953 while working on these fixes, and I'd love to
collaborate on adding some of those pieces like treefmt and a github
action. If you're interested I'd really appreciate some help debugging
why crane's `buildDepsOnly` isn't working for us. I'm assuming it'd make
our `nix build` times go way down from the improved dep caching if we
could get it working.
Thanks @rrbutani for all the help on this PR 💙.
Release Notes:
- N/A
---------
Co-authored-by: Rahul Butani <rrbutani@users.noreply.github.com>
Co-authored-by: Rahul Butani <rr.butani@gmail.com>
This commit is contained in:
parent
230e2e4107
commit
4a7c84f490
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -84,7 +84,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "alacritty_terminal"
|
name = "alacritty_terminal"
|
||||||
version = "0.25.1-dev"
|
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 = [
|
dependencies = [
|
||||||
"base64 0.22.1",
|
"base64 0.22.1",
|
||||||
"bitflags 2.8.0",
|
"bitflags 2.8.0",
|
||||||
|
@ -370,7 +370,7 @@ zeta = { path = "crates/zeta" }
|
|||||||
#
|
#
|
||||||
|
|
||||||
aho-corasick = "1.1"
|
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"
|
any_vec = "0.14"
|
||||||
anyhow = "1.0.86"
|
anyhow = "1.0.86"
|
||||||
arrayvec = { version = "0.7.4", features = ["serde"] }
|
arrayvec = { version = "0.7.4", features = ["serde"] }
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Tom Hale, 2016. MIT Licence.
|
# Tom Hale, 2016. MIT Licence.
|
||||||
# Print out 256 colours, with each number printed in its corresponding colour
|
# 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
|
# Copied from: https://unix.stackexchange.com/a/696756
|
||||||
# Based on: https://gist.github.com/XVilka/8346728 and https://unix.stackexchange.com/a/404415/395213
|
# Based on: https://gist.github.com/XVilka/8346728 and https://unix.stackexchange.com/a/404415/395213
|
||||||
|
|
||||||
|
25
default.nix
25
default.nix
@ -1,14 +1,11 @@
|
|||||||
(
|
(import (
|
||||||
import
|
let
|
||||||
(
|
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
|
||||||
let
|
in
|
||||||
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
|
fetchTarball {
|
||||||
in
|
url =
|
||||||
fetchTarball {
|
lock.nodes.flake-compat.locked.url
|
||||||
url = lock.nodes.flake-compat.locked.url or "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
|
or "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
|
||||||
sha256 = lock.nodes.flake-compat.locked.narHash;
|
sha256 = lock.nodes.flake-compat.locked.narHash;
|
||||||
}
|
}
|
||||||
)
|
) { src = ./.; }).defaultNix
|
||||||
{src = ./.;}
|
|
||||||
)
|
|
||||||
.defaultNix
|
|
||||||
|
18
flake.lock
generated
18
flake.lock
generated
@ -2,11 +2,11 @@
|
|||||||
"nodes": {
|
"nodes": {
|
||||||
"crane": {
|
"crane": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1739936662,
|
"lastModified": 1741148495,
|
||||||
"narHash": "sha256-x4syUjNUuRblR07nDPeLDP7DpphaBVbUaSoeZkFbGSk=",
|
"narHash": "sha256-EV8KUaIZ2/CdBXlutXrHoZYbWPeB65p5kKZk71gvDRI=",
|
||||||
"owner": "ipetkov",
|
"owner": "ipetkov",
|
||||||
"repo": "crane",
|
"repo": "crane",
|
||||||
"rev": "19de14aaeb869287647d9461cbd389187d8ecdb7",
|
"rev": "75390a36cd0c2cdd5f1aafd8a9f827d7107f2e53",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -32,11 +32,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1740695751,
|
"lastModified": 1741246872,
|
||||||
"narHash": "sha256-D+R+kFxy1KsheiIzkkx/6L63wEHBYX21OIwlFV8JvDs=",
|
"narHash": "sha256-Q6pMP4a9ed636qilcYX8XUguvKl/0/LGXhHcRI91p0U=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "6313551cd05425cd5b3e63fe47dbc324eabb15e4",
|
"rev": "10069ef4cf863633f57238f179a0297de84bd8d3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -61,11 +61,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1740882709,
|
"lastModified": 1741314698,
|
||||||
"narHash": "sha256-VC+8GxWK4p08jjIbmsNfeFQajW2lsiOR/XQiOOvqgvs=",
|
"narHash": "sha256-6Yp0CTwAY/jq/F81Sa8NM0Zi1EwxAdASO6y4A5neGuc=",
|
||||||
"owner": "oxalica",
|
"owner": "oxalica",
|
||||||
"repo": "rust-overlay",
|
"repo": "rust-overlay",
|
||||||
"rev": "f4d5a693c18b389f0d58f55b6f7be6ef85af186f",
|
"rev": "4e9af61c1a631886cdc7e13032af4fc9e75bb76b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -50,12 +50,11 @@
|
|||||||
in
|
in
|
||||||
{
|
{
|
||||||
packages = forAllSystems (pkgs: {
|
packages = forAllSystems (pkgs: {
|
||||||
zed-editor = pkgs.zed-editor;
|
|
||||||
default = pkgs.zed-editor;
|
default = pkgs.zed-editor;
|
||||||
});
|
});
|
||||||
|
|
||||||
devShells = forAllSystems (pkgs: {
|
devShells = forAllSystems (pkgs: {
|
||||||
default = import ./nix/shell.nix { inherit pkgs; };
|
default = pkgs.callPackage ./nix/shell.nix { };
|
||||||
});
|
});
|
||||||
|
|
||||||
formatter = forAllSystems (pkgs: pkgs.nixfmt-rfc-style);
|
formatter = forAllSystems (pkgs: pkgs.nixfmt-rfc-style);
|
||||||
|
341
nix/build.nix
341
nix/build.nix
@ -2,11 +2,12 @@
|
|||||||
lib,
|
lib,
|
||||||
crane,
|
crane,
|
||||||
rustToolchain,
|
rustToolchain,
|
||||||
fetchpatch,
|
rustPlatform,
|
||||||
clang,
|
|
||||||
cmake,
|
cmake,
|
||||||
copyDesktopItems,
|
copyDesktopItems,
|
||||||
|
fetchFromGitHub,
|
||||||
curl,
|
curl,
|
||||||
|
clang,
|
||||||
perl,
|
perl,
|
||||||
pkg-config,
|
pkg-config,
|
||||||
protobuf,
|
protobuf,
|
||||||
@ -29,11 +30,12 @@
|
|||||||
cargo-about,
|
cargo-about,
|
||||||
cargo-bundle,
|
cargo-bundle,
|
||||||
git,
|
git,
|
||||||
|
livekit-libwebrtc,
|
||||||
apple-sdk_15,
|
apple-sdk_15,
|
||||||
|
darwin,
|
||||||
darwinMinVersionHook,
|
darwinMinVersionHook,
|
||||||
makeWrapper,
|
makeWrapper,
|
||||||
nodejs_22,
|
nodejs_22,
|
||||||
nix-gitignore,
|
|
||||||
|
|
||||||
withGLES ? false,
|
withGLES ? false,
|
||||||
}:
|
}:
|
||||||
@ -41,176 +43,208 @@
|
|||||||
assert withGLES -> stdenv.hostPlatform.isLinux;
|
assert withGLES -> stdenv.hostPlatform.isLinux;
|
||||||
|
|
||||||
let
|
let
|
||||||
includeFilter =
|
mkIncludeFilter =
|
||||||
path: type:
|
root': path: type:
|
||||||
let
|
let
|
||||||
baseName = baseNameOf (toString path);
|
# note: under lazy-trees this introduces an extra copy
|
||||||
parentDir = dirOf path;
|
root = toString root' + "/";
|
||||||
inRootDir = type == "directory" && parentDir == ../.;
|
relPath = lib.removePrefix root path;
|
||||||
|
topLevelIncludes = [
|
||||||
|
"crates"
|
||||||
|
"assets"
|
||||||
|
"extensions"
|
||||||
|
"script"
|
||||||
|
"tooling"
|
||||||
|
"Cargo.toml"
|
||||||
|
".config" # nextest?
|
||||||
|
];
|
||||||
|
firstComp = builtins.head (lib.path.subpath.components relPath);
|
||||||
in
|
in
|
||||||
!(
|
builtins.elem firstComp topLevelIncludes;
|
||||||
inRootDir
|
|
||||||
&& (baseName == "docs" || baseName == ".github" || baseName == ".git" || baseName == "target")
|
|
||||||
);
|
|
||||||
craneLib = crane.overrideToolchain rustToolchain;
|
craneLib = crane.overrideToolchain rustToolchain;
|
||||||
commonSrc = lib.cleanSourceWith {
|
gpu-lib = if withGLES then libglvnd else vulkan-loader;
|
||||||
src = nix-gitignore.gitignoreSource [ ] ../.;
|
commonArgs =
|
||||||
filter = includeFilter;
|
let
|
||||||
name = "source";
|
zedCargoLock = builtins.fromTOML (builtins.readFile ../crates/zed/Cargo.toml);
|
||||||
};
|
in
|
||||||
commonArgs = rec {
|
rec {
|
||||||
pname = "zed-editor";
|
pname = "zed-editor";
|
||||||
version = "nightly";
|
version = zedCargoLock.package.version + "-nightly";
|
||||||
|
src = builtins.path {
|
||||||
src = commonSrc;
|
path = ../.;
|
||||||
|
filter = mkIncludeFilter ../.;
|
||||||
nativeBuildInputs =
|
name = "source";
|
||||||
[
|
|
||||||
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")
|
|
||||||
];
|
|
||||||
|
|
||||||
env = {
|
|
||||||
ZSTD_SYS_USE_PKG_CONFIG = true;
|
|
||||||
FONTCONFIG_FILE = makeFontsConf {
|
|
||||||
fontDirectories = [
|
|
||||||
"${src}/assets/fonts/plex-mono"
|
|
||||||
"${src}/assets/fonts/plex-sans"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
ZED_UPDATE_EXPLANATION = "Zed has been installed using Nix. Auto-updates have thus been disabled.";
|
|
||||||
RELEASE_VERSION = version;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
cargoArtifacts = craneLib.buildDepsOnly commonArgs;
|
|
||||||
in
|
|
||||||
craneLib.buildPackage (
|
|
||||||
commonArgs
|
|
||||||
// rec {
|
|
||||||
inherit cargoArtifacts;
|
|
||||||
|
|
||||||
patches =
|
cargoLock = ../Cargo.lock;
|
||||||
[
|
|
||||||
# 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";
|
nativeBuildInputs =
|
||||||
|
|
||||||
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 ]}
|
|
||||||
'';
|
|
||||||
|
|
||||||
RUSTFLAGS = if withGLES then "--cfg gles" else "";
|
|
||||||
gpu-lib = if withGLES then libglvnd else vulkan-loader;
|
|
||||||
|
|
||||||
preCheck = ''
|
|
||||||
export HOME=$(mktemp -d);
|
|
||||||
'';
|
|
||||||
|
|
||||||
cargoTestExtraArgs =
|
|
||||||
"-- "
|
|
||||||
+ lib.concatStringsSep " " (
|
|
||||||
[
|
[
|
||||||
# Flaky: unreliably fails on certain hosts (including Hydra)
|
clang # TODO: use pkgs.clangStdenv or ignore cargo config?
|
||||||
"--skip=zed::tests::test_window_edit_state_restoring_enabled"
|
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=";
|
||||||
|
};
|
||||||
|
}))
|
||||||
|
];
|
||||||
|
|
||||||
|
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 [
|
++ lib.optionals stdenv.hostPlatform.isLinux [
|
||||||
# Fails on certain hosts (including Hydra) for unclear reason
|
alsa-lib
|
||||||
"--skip=test_open_paths_action"
|
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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
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 (
|
||||||
|
lib.recursiveUpdate commonArgs {
|
||||||
|
inherit cargoArtifacts;
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
# 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
|
||||||
|
'';
|
||||||
|
|
||||||
|
# TODO: try craneLib.cargoNextest separate output and doCheck=false
|
||||||
|
# do we even care about running our test suite in the nix sandbox?
|
||||||
|
|
||||||
|
# see crane bug: https://github.com/ipetkov/crane/issues/808
|
||||||
|
doNotRemoveReferencesToRustToolchain = true;
|
||||||
|
doNotRemoveReferencesToVendorDir = true;
|
||||||
|
|
||||||
installPhase =
|
installPhase =
|
||||||
if stdenv.hostPlatform.isDarwin then
|
if stdenv.hostPlatform.isDarwin then
|
||||||
''
|
''
|
||||||
runHook preInstall
|
runHook preInstall
|
||||||
|
|
||||||
# cargo-bundle expects the binary in target/release
|
|
||||||
mv target/release/zed target/release/zed
|
|
||||||
|
|
||||||
pushd crates/zed
|
pushd crates/zed
|
||||||
|
sed -i "s/package.metadata.bundle-nightly/package.metadata.bundle/" Cargo.toml
|
||||||
# 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
|
export CARGO_BUNDLE_SKIP_BUILD=true
|
||||||
app_path=$(cargo bundle --release | xargs)
|
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
|
|
||||||
|
|
||||||
popd
|
popd
|
||||||
|
|
||||||
mkdir -p $out/Applications $out/bin
|
mkdir -p $out/Applications $out/bin
|
||||||
# Zed expects git next to its own binary
|
# Zed expects git next to its own binary
|
||||||
ln -s ${git}/bin/git $app_path/Contents/MacOS/git
|
ln -s ${git}/bin/git "$app_path/Contents/MacOS/git"
|
||||||
mv target/release/cli $app_path/Contents/MacOS/cli
|
mv target/release/cli "$app_path/Contents/MacOS/cli"
|
||||||
mv $app_path $out/Applications/
|
mv "$app_path" $out/Applications/
|
||||||
|
|
||||||
# Physical location of the CLI must be inside the app bundle as this is used
|
# Physical location of the CLI must be inside the app bundle as this is used
|
||||||
# to determine which app to start
|
# 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
|
runHook postInstall
|
||||||
''
|
''
|
||||||
else
|
else
|
||||||
|
# TODO: icons should probably be named "zed-nightly". fix bundle-linux first
|
||||||
''
|
''
|
||||||
runHook preInstall
|
runHook preInstall
|
||||||
|
|
||||||
@ -218,24 +252,31 @@ craneLib.buildPackage (
|
|||||||
cp target/release/zed $out/libexec/zed-editor
|
cp target/release/zed $out/libexec/zed-editor
|
||||||
cp target/release/cli $out/bin/zed
|
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 "crates/zed/resources/app-icon-nightly@2x.png" \
|
||||||
install -D ${commonSrc}/crates/zed/resources/app-icon.png $out/share/icons/hicolor/512x512/apps/zed.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)
|
# extracted from ../script/bundle-linux (envsubst) and
|
||||||
# and https://github.com/zed-industries/zed/blob/v0.141.2/script/install.sh (final desktop file name)
|
# ../script/install.sh (final desktop file name)
|
||||||
(
|
(
|
||||||
export DO_STARTUP_NOTIFY="true"
|
export DO_STARTUP_NOTIFY="true"
|
||||||
export APP_CLI="zed"
|
export APP_CLI="zed"
|
||||||
export APP_ICON="zed"
|
export APP_ICON="zed"
|
||||||
export APP_NAME="Zed"
|
export APP_NAME="Zed Nightly"
|
||||||
export APP_ARGS="%U"
|
export APP_ARGS="%U"
|
||||||
mkdir -p "$out/share/applications"
|
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
|
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 = {
|
meta = {
|
||||||
description = "High-performance, multiplayer code editor from the creators of Atom and Tree-sitter";
|
description = "High-performance, multiplayer code editor from the creators of Atom and Tree-sitter";
|
||||||
homepage = "https://zed.dev";
|
homepage = "https://zed.dev";
|
||||||
|
111
nix/shell.nix
111
nix/shell.nix
@ -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
|
let
|
||||||
inherit (pkgs) lib;
|
moldStdenv = stdenvAdapters.useMoldLinker stdenv;
|
||||||
|
mkShell' =
|
||||||
|
if stdenv.hostPlatform.isLinux then mkShell.override { stdenv = moldStdenv; } else mkShell;
|
||||||
in
|
in
|
||||||
pkgs.mkShell rec {
|
mkShell' {
|
||||||
packages =
|
inputsFrom = [ zed-editor ];
|
||||||
[
|
packages = [
|
||||||
pkgs.clang
|
rust-analyzer
|
||||||
pkgs.curl
|
cargo-nextest
|
||||||
pkgs.cmake
|
nixfmt-rfc-style
|
||||||
pkgs.perl
|
# TODO: package protobuf-language-server for editing zed.proto
|
||||||
pkgs.pkg-config
|
# TODO: add other tools used in our scripts
|
||||||
pkgs.protobuf
|
|
||||||
pkgs.rustPlatform.bindgenHook
|
|
||||||
pkgs.rust-analyzer
|
|
||||||
]
|
|
||||||
++ lib.optionals pkgs.stdenv.hostPlatform.isLinux [
|
|
||||||
pkgs.mold
|
|
||||||
];
|
|
||||||
|
|
||||||
buildInputs =
|
# `build.nix` adds this to the `zed-editor` wrapper (see `postFixup`)
|
||||||
[
|
# we'll just put it on `$PATH`:
|
||||||
pkgs.bzip2
|
nodejs_22
|
||||||
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;
|
# 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";
|
||||||
|
'';
|
||||||
|
|
||||||
PROTOC="${pkgs.protobuf}/bin/protoc";
|
env =
|
||||||
|
let
|
||||||
# We set SDKROOT and DEVELOPER_DIR to the Xcode ones instead of the nixpkgs ones,
|
baseEnvs =
|
||||||
# because we need Swift 6.0 and nixpkgs doesn't have it.
|
(zed-editor.overrideAttrs (attrs: {
|
||||||
# Xcode is required for development anyways
|
passthru = { inherit (attrs) env; };
|
||||||
shellHook = lib.optionalString pkgs.stdenv.hostPlatform.isDarwin ''
|
})).env; # exfil `env`; it's not in drvAttrs
|
||||||
export SDKROOT="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk";
|
in
|
||||||
export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer";
|
# unsetting this var so we download the staticlib during the build
|
||||||
'';
|
(removeAttrs baseEnvs [ "LK_CUSTOM_WEBRTC" ])
|
||||||
|
// {
|
||||||
FONTCONFIG_FILE = pkgs.makeFontsConf {
|
# note: different than `$FONTCONFIG_FILE` in `build.nix` – this refers to relative paths
|
||||||
fontDirectories = [
|
# outside the nix store instead of to `$src`
|
||||||
"./assets/fonts/zed-mono"
|
FONTCONFIG_FILE = makeFontsConf {
|
||||||
"./assets/fonts/zed-sans"
|
fontDirectories = [
|
||||||
];
|
"./assets/fonts/plex-mono"
|
||||||
};
|
"./assets/fonts/plex-sans"
|
||||||
ZSTD_SYS_USE_PKG_CONFIG = true;
|
];
|
||||||
|
};
|
||||||
|
PROTOC = "${protobuf}/bin/protoc";
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
@ -2,4 +2,11 @@
|
|||||||
channel = "1.85"
|
channel = "1.85"
|
||||||
profile = "minimal"
|
profile = "minimal"
|
||||||
components = [ "rustfmt", "clippy" ]
|
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
|
set -e
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
channel=$(cat crates/zed/RELEASE_CHANNEL)
|
channel=$(cat crates/zed/RELEASE_CHANNEL)
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
|
||||||
set -exuo pipefail
|
set -exuo pipefail
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Notes for fixing this script if it's broken:
|
# 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
|
# - 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
|
set -e
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -eu
|
set -eu
|
||||||
source script/lib/deploy-helpers.sh
|
source script/lib/deploy-helpers.sh
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -eu
|
set -eu
|
||||||
source script/lib/deploy-helpers.sh
|
source script/lib/deploy-helpers.sh
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
databases=$(psql --tuples-only --command "
|
databases=$(psql --tuples-only --command "
|
||||||
SELECT
|
SELECT
|
||||||
|
@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
CARGO_ABOUT_VERSION="0.6.6"
|
CARGO_ABOUT_VERSION="0.6"
|
||||||
OUTPUT_FILE="${1:-$(pwd)/assets/licenses.md}"
|
OUTPUT_FILE="${1:-$(pwd)/assets/licenses.md}"
|
||||||
TEMPLATE_FILE="script/licenses/template.md.hbs"
|
TEMPLATE_FILE="script/licenses/template.md.hbs"
|
||||||
|
|
||||||
echo -n "" > "$OUTPUT_FILE"
|
echo -n "" >"$OUTPUT_FILE"
|
||||||
|
|
||||||
{
|
{
|
||||||
echo -e "# ###### THEME LICENSES ######\n"
|
echo -e "# ###### THEME LICENSES ######\n"
|
||||||
@ -16,21 +16,24 @@ echo -n "" > "$OUTPUT_FILE"
|
|||||||
cat assets/icons/LICENSES
|
cat assets/icons/LICENSES
|
||||||
|
|
||||||
echo -e "\n# ###### CODE LICENSES ######\n"
|
echo -e "\n# ###### CODE LICENSES ######\n"
|
||||||
} >> "$OUTPUT_FILE"
|
} >>"$OUTPUT_FILE"
|
||||||
|
|
||||||
if ! cargo install --list | grep "cargo-about v$CARGO_ABOUT_VERSION" > /dev/null; then
|
if ! cargo about --version | grep "cargo-about $CARGO_ABOUT_VERSION" >/dev/null; then
|
||||||
echo "Installing cargo-about@$CARGO_ABOUT_VERSION..."
|
echo "Installing cargo-about@^$CARGO_ABOUT_VERSION..."
|
||||||
cargo install "cargo-about@$CARGO_ABOUT_VERSION"
|
cargo install "cargo-about@^$CARGO_ABOUT_VERSION"
|
||||||
else
|
else
|
||||||
echo "cargo-about@$CARGO_ABOUT_VERSION is already installed."
|
echo "cargo-about@^$CARGO_ABOUT_VERSION is already installed."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Generating cargo licenses"
|
echo "Generating cargo licenses"
|
||||||
|
if [ -z "${ALLOW_MISSING_LICENSES-}" ]; then FAIL_FLAG=--fail; else FAIL_FLAG=""; fi
|
||||||
|
set -x
|
||||||
cargo about generate \
|
cargo about generate \
|
||||||
--fail \
|
$FAIL_FLAG \
|
||||||
|
--frozen \
|
||||||
-c script/licenses/zed-licenses.toml \
|
-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"
|
||||||
sed -i.bak 's/'/'\''/g' "$OUTPUT_FILE" # The ` '\'' ` thing ends the string, appends a single quote, and re-opens the string
|
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
|
set -euo pipefail
|
||||||
|
|
||||||
CARGO_ABOUT_VERSION="0.6.6"
|
CARGO_ABOUT_VERSION="0.6"
|
||||||
OUTPUT_FILE="${1:-$(pwd)/assets/licenses.csv}"
|
OUTPUT_FILE="${1:-$(pwd)/assets/licenses.csv}"
|
||||||
TEMPLATE_FILE="script/licenses/template.csv.hbs"
|
TEMPLATE_FILE="script/licenses/template.csv.hbs"
|
||||||
|
|
||||||
if ! cargo install --list | grep "cargo-about v$CARGO_ABOUT_VERSION" > /dev/null; then
|
if ! cargo about --version | grep "cargo-about $CARGO_ABOUT_VERSION" > /dev/null; then
|
||||||
echo "Installing cargo-about@$CARGO_ABOUT_VERSION..."
|
echo "Installing cargo-about@^$CARGO_ABOUT_VERSION..."
|
||||||
cargo install "cargo-about@$CARGO_ABOUT_VERSION"
|
cargo install "cargo-about@^$CARGO_ABOUT_VERSION"
|
||||||
else
|
else
|
||||||
echo "cargo-about@$CARGO_ABOUT_VERSION is already installed."
|
echo "cargo-about@^$CARGO_ABOUT_VERSION is already installed."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Generating cargo licenses"
|
echo "Generating cargo licenses"
|
||||||
|
set -x
|
||||||
cargo about generate \
|
cargo about generate \
|
||||||
--fail \
|
--fail \
|
||||||
|
--frozen \
|
||||||
-c script/licenses/zed-licenses.toml \
|
-c script/licenses/zed-licenses.toml \
|
||||||
"$TEMPLATE_FILE" \
|
$TEMPLATE_FILE \
|
||||||
| awk 'NR==1{print;next} NF{print | "sort"}' \
|
| awk 'NR==1{print;next} NF{print | "sort"}' \
|
||||||
> "$OUTPUT_FILE"
|
> "$OUTPUT_FILE"
|
||||||
|
set +x
|
||||||
|
|
||||||
echo "generate-licenses-csv completed. See $OUTPUT_FILE"
|
echo "generate-licenses-csv completed. See $OUTPUT_FILE"
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
channel="$1"
|
channel="$1"
|
||||||
|
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
cargo run -p theme_importer -- "$@"
|
cargo run -p theme_importer -- "$@"
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
if [[ $# -ne 1 ]]; then
|
if [[ $# -ne 1 ]]; then
|
||||||
echo "Usage: $0 [production|staging|...]"
|
echo "Usage: $0 [production|staging|...]"
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
export GPUTOOLS_LOAD_GTMTLCAPTURE=1
|
export GPUTOOLS_LOAD_GTMTLCAPTURE=1
|
||||||
export DYLD_LIBRARY_PATH="/usr/lib/system/introspection"
|
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
|
# Try to make sure we are in the zed repo root
|
||||||
if [ ! -d "crates" ] || [ ! -d "script" ]; then
|
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.
|
# 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)
|
which minio > /dev/null || (echo "installing minio..."; brew install minio/stable/minio)
|
||||||
mkdir -p .blob_store/the-extensions-bucket
|
mkdir -p .blob_store/the-extensions-bucket
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
cargo run -p collab migrate
|
cargo run -p collab migrate
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
if [ -z "$1" ]; then
|
if [ -z "$1" ]; then
|
||||||
cargo run -p storybook
|
cargo run -p storybook
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
which gh >/dev/null || brew install gh
|
which gh >/dev/null || brew install gh
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -eu
|
set -eu
|
||||||
source script/lib/deploy-helpers.sh
|
source script/lib/deploy-helpers.sh
|
||||||
|
25
shell.nix
25
shell.nix
@ -1,14 +1,11 @@
|
|||||||
(
|
(import (
|
||||||
import
|
let
|
||||||
(
|
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
|
||||||
let
|
in
|
||||||
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
|
fetchTarball {
|
||||||
in
|
url =
|
||||||
fetchTarball {
|
lock.nodes.flake-compat.locked.url
|
||||||
url = lock.nodes.flake-compat.locked.url or "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
|
or "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
|
||||||
sha256 = lock.nodes.flake-compat.locked.narHash;
|
sha256 = lock.nodes.flake-compat.locked.narHash;
|
||||||
}
|
}
|
||||||
)
|
) { src = ./.; }).shellNix
|
||||||
{src = ./.;}
|
|
||||||
)
|
|
||||||
.shellNix
|
|
||||||
|
Loading…
Reference in New Issue
Block a user