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