shell.nix

 1{pkgs ? import <nixpkgs> {}}: let
 2  stdenv = pkgs.stdenvAdapters.useMoldLinker pkgs.llvmPackages_18.stdenv;
 3in
 4  if pkgs.stdenv.isDarwin
 5  then
 6    # See https://github.com/NixOS/nixpkgs/issues/320084
 7    throw "zed: nix dev-shell isn't supported on darwin yet."
 8  else let
 9    buildInputs = with pkgs; [
10      curl
11      fontconfig
12      freetype
13      libgit2
14      openssl
15      sqlite
16      zlib
17      zstd
18      alsa-lib
19      libxkbcommon
20      wayland
21      xorg.libxcb
22      vulkan-loader
23      rustToolchain
24    ];
25  in
26    pkgs.mkShell.override {inherit stdenv;} {
27      nativeBuildInputs = with pkgs; [
28        clang
29        curl
30        cmake
31        perl
32        pkg-config
33        protobuf
34        rustPlatform.bindgenHook
35      ];
36
37      inherit buildInputs;
38
39      shellHook = ''
40        export LD_LIBRARY_PATH="${pkgs.lib.makeLibraryPath buildInputs}:$LD_LIBRARY_PATH"
41        export PROTOC="${pkgs.protobuf}/bin/protoc"
42      '';
43
44      FONTCONFIG_FILE = pkgs.makeFontsConf {
45        fontDirectories = [
46          "./assets/fonts/zed-mono"
47          "./assets/fonts/zed-sans"
48        ];
49      };
50      ZSTD_SYS_USE_PKG_CONFIG = true;
51    }