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