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.zlib
33 pkgs.zstd
34 pkgs.rustToolchain
35 ]
36 ++ lib.optionals pkgs.stdenv.hostPlatform.isLinux [
37 pkgs.alsa-lib
38 pkgs.libxkbcommon
39 pkgs.wayland
40 pkgs.xorg.libxcb
41 pkgs.vulkan-loader
42 ]
43 ++ lib.optional pkgs.stdenv.hostPlatform.isDarwin pkgs.apple-sdk_15;
44
45 LD_LIBRARY_PATH = "${pkgs.stdenv.cc.cc.lib}/lib";
46
47 # We set SDKROOT and DEVELOPER_DIR to the Xcode ones instead of the nixpkgs ones,
48 # because we need Swift 6.0 and nixpkgs doesn't have it.
49 # Xcode is required for development anyways
50 shellHook =
51 ''
52 export LD_LIBRARY_PATH="${lib.makeLibraryPath buildInputs}:$LD_LIBRARY_PATH"
53 export PROTOC="${pkgs.protobuf}/bin/protoc"
54 ''
55 + lib.optionalString pkgs.stdenv.hostPlatform.isDarwin ''
56 export SDKROOT="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk";
57 export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer";
58 '';
59
60 FONTCONFIG_FILE = pkgs.makeFontsConf {
61 fontDirectories = [
62 "./assets/fonts/zed-mono"
63 "./assets/fonts/zed-sans"
64 ];
65 };
66 ZSTD_SYS_USE_PKG_CONFIG = true;
67}