forked from node-webrtc/node-webrtc
-
Notifications
You must be signed in to change notification settings - Fork 27
Expand file tree
/
Copy pathshell.nix
More file actions
89 lines (86 loc) · 2.25 KB
/
shell.nix
File metadata and controls
89 lines (86 loc) · 2.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
{
pkgs ? import <nixpkgs> { },
system ? builtins.currentSystem,
}:
let
lib = pkgs.lib;
is-darwin = lib.strings.hasSuffix "darwin" system;
env =
pkgs:
(
let
apple-sdk = if is-darwin then pkgs.apple-sdk_13 else null;
llvm =
pkgs:
pkgs.llvmPackages_17.override {
inherit apple-sdk;
};
clang = (llvm pkgs).clang;
in
{
stdenv = (llvm pkgs).stdenv;
nativeBuildInputs =
(with pkgs; [
cmake
ninja
nodejs_24
pkg-config
zlib
# For stripping binaries for release
patchelf
])
++ (with (llvm pkgs); [
clang
clang-tools
libllvm
])
++ (lib.optionals is-darwin [
apple-sdk
pkgs.xcbuild
])
++ (lib.optionals (!is-darwin) [
(llvm pkgs.pkgsCross.aarch64-multiplatform.buildPackages).clang
]);
# Build variables based on documentation from https://github.com/timniederhausen/gn-build/blob/01c96fd9981b111a3a028356284968acd77fa435/README.md
shellHook = ''
cat <<EOF > nix.gni
is_clang=true
use_lld=false
clang_use_chrome_plugins=false
''
+ (lib.optionalString is-darwin ''
clang_base_path="${clang}"
mac_sdk_path="${apple-sdk}/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk"
'')
+ ''
EOF
cat <<EOF > .lazy.lua
-- Override the version of clang used for clangd
return {
{
"neovim/nvim-lspconfig",
opts = {
servers = {
clangd = {
cmd = { "clangd", "--query-driver=${clang}/bin/clang++" },
},
},
},
},
}
EOF
'';
}
);
in
if is-darwin then
pkgs.mkShell {
inherit (env pkgs) nativeBuildInputs shellHook;
}
else
(pkgs.buildFHSEnv.override { inherit (env pkgs) stdenv; } {
name = "node-webrtc-env";
targetPkgs = pkgs: (env pkgs).nativeBuildInputs;
profile = (env pkgs).shellHook;
runScript = "bash";
}).env