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    ];
24  in
25    pkgs.mkShell.override {inherit stdenv;} {
26      nativeBuildInputs = with pkgs; [
27        clang
28        curl
29        perl
30        pkg-config
31        protobuf
32        rustPlatform.bindgenHook
33      ];
34
35      inherit buildInputs;
36
37      shellHook = ''
38        export LD_LIBRARY_PATH="${pkgs.lib.makeLibraryPath ([
39            pkgs.vulkan-loader
40          ]
41          ++ buildInputs)}:$LD_LIBRARY_PATH"
42        export PROTOC="${pkgs.protobuf}/bin/protoc"
43      '';
44
45      FONTCONFIG_FILE = pkgs.makeFontsConf {
46        fontDirectories = [
47          "./assets/fonts/zed-mono"
48          "./assets/fonts/zed-sans"
49        ];
50      };
51      ZSTD_SYS_USE_PKG_CONFIG = true;
52    }