mirror of
https://github.com/zed-industries/zed.git
synced 2026-05-25 14:44:28 +00:00
Release Notes: Refactored: - Use [flake-parts](https://flake.parts/index.html) modules - `nix/shell.nix` -> `nix/modules/devshells.nix` Added: - Use [flake-parts.partitions](https://flake.parts/options/flake-parts-partitions.html) to isolate dev dependencies so that flakes that use `zed-editor` don't fetch dev-only inputs such as `treefmt-nix` - [treefmt-nix](https://github.com/numtide/treefmt-nix) - nixfmt - rustfmt Fixed: - `shell.nix` and `default.nix` fetching `flake-compat` from `flake.lock` which added an extra and unnecessary input/dependency to `flake.nix`. Fixed by setting a fixed rev and sha256 instead. - `nixfmt-rfc-style` is deprecated and is now `nixfmt` - Fixes #45338 by using rust-overlay toolchain directly - Previously, the devShell included `rustup` which caused slow startup times as Nix would build rustup from source (including running its test suite). Additionally, rust tooling (cargo, rustfmt, clippy, rust-analyzer) wasn't available in the dev shell. - cargo, rustc, and rust-toolchain.toml components included in `rustToolchain` Chore: - Update `flake.lock` - Format Rust code with `rustfmt` via `treefmt-nix` --------- Co-authored-by: Jakub Konka <kubkon@jakubkonka.com>
60 lines
2 KiB
Nix
60 lines
2 KiB
Nix
{ inputs, ... }:
|
||
{
|
||
perSystem =
|
||
{ pkgs, ... }:
|
||
let
|
||
# NOTE: Duplicated because this is in a separate flake-parts partition
|
||
# than ./packages.nix
|
||
mkZed = import ../toolchain.nix { inherit inputs; };
|
||
zed-editor = mkZed pkgs;
|
||
|
||
rustBin = inputs.rust-overlay.lib.mkRustBin { } pkgs;
|
||
rustToolchain = rustBin.fromRustupToolchainFile ../../rust-toolchain.toml;
|
||
|
||
baseEnv =
|
||
(zed-editor.overrideAttrs (attrs: {
|
||
passthru.env = attrs.env;
|
||
})).env; # exfil `env`; it's not in drvAttrs
|
||
in
|
||
{
|
||
devShells.default = (pkgs.mkShell.override { inherit (zed-editor) stdenv; }) {
|
||
name = "zed-editor-dev";
|
||
inputsFrom = [ zed-editor ];
|
||
|
||
packages = with pkgs; [
|
||
rustToolchain # cargo, rustc, and rust-toolchain.toml components included
|
||
cargo-nextest
|
||
cargo-hakari
|
||
cargo-machete
|
||
cargo-zigbuild
|
||
# 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
|
||
zig
|
||
];
|
||
|
||
env =
|
||
(removeAttrs baseEnv [
|
||
"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 = pkgs.makeFontsConf {
|
||
fontDirectories = [
|
||
"./assets/fonts/lilex"
|
||
"./assets/fonts/ibm-plex-sans"
|
||
];
|
||
};
|
||
PROTOC = "${pkgs.protobuf}/bin/protoc";
|
||
ZED_ZSTD_MUSL_LIB = "${pkgs.pkgsCross.musl64.pkgsStatic.zstd.out}/lib";
|
||
};
|
||
};
|
||
};
|
||
}
|