1{
2 pkgs ? import <nixpkgs> { },
3}:
4let
5 inherit (pkgs) lib;
6in
7pkgs.mkShell rec {
8 packages =
9 [
10 pkgs.clang
11 pkgs.curl
12 pkgs.cmake
13 pkgs.perl
14 pkgs.pkg-config
15 pkgs.protobuf
16 pkgs.rustPlatform.bindgenHook
17 pkgs.rust-analyzer
18 ]
19 ++ lib.optionals pkgs.stdenv.hostPlatform.isLinux [
20 pkgs.mold
21 ];
22
23 buildInputs =
24 [
25 pkgs.bzip2
26 pkgs.curl
27 pkgs.fontconfig
28 pkgs.freetype
29 pkgs.libgit2
30 pkgs.openssl
31 pkgs.sqlite
32 pkgs.stdenv.cc.cc
33 pkgs.zlib
34 pkgs.zstd
35 pkgs.rustToolchain
36 ]
37 ++ lib.optionals pkgs.stdenv.hostPlatform.isLinux [
38 pkgs.alsa-lib
39 pkgs.libxkbcommon
40 pkgs.wayland
41 pkgs.xorg.libxcb
42 pkgs.vulkan-loader
43 ]
44 ++ lib.optional pkgs.stdenv.hostPlatform.isDarwin pkgs.apple-sdk_15;
45
46 LD_LIBRARY_PATH = lib.makeLibraryPath buildInputs;
47
48 PROTOC="${pkgs.protobuf}/bin/protoc";
49
50 # We set SDKROOT and DEVELOPER_DIR to the Xcode ones instead of the nixpkgs ones,
51 # because we need Swift 6.0 and nixpkgs doesn't have it.
52 # Xcode is required for development anyways
53 shellHook = lib.optionalString pkgs.stdenv.hostPlatform.isDarwin ''
54 export SDKROOT="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk";
55 export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer";
56 '';
57
58 FONTCONFIG_FILE = pkgs.makeFontsConf {
59 fontDirectories = [
60 "./assets/fonts/zed-mono"
61 "./assets/fonts/zed-sans"
62 ];
63 };
64 ZSTD_SYS_USE_PKG_CONFIG = true;
65}