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