-
-
Notifications
You must be signed in to change notification settings - Fork 50
Expand file tree
/
Copy pathshell.nix
More file actions
130 lines (119 loc) · 4.14 KB
/
shell.nix
File metadata and controls
130 lines (119 loc) · 4.14 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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
{
php-version ? 8.3,
with-blackfire ? false,
with-xdebug ? false,
with-pcov ? !with-blackfire,
with-pg-query-ext ? !with-c,
with-arrow-ext ? !with-rust,
with-c ? false,
with-rust ? false,
with-terraform ? false,
with-wasm ? false,
with-grpc ? false
}:
assert (!(with-rust && with-arrow-ext)) || builtins.throw "Cannot use --arg with-rust true and --arg with-arrow-ext true together. Use: --arg with-arrow-ext false --arg with-rust true";
assert (!(with-c && with-pg-query-ext)) || builtins.throw "Cannot use --arg with-c true and --arg with-pg-query-ext true together. Use: --arg with-pg-query-ext false --arg with-c true";
let
nixpkgs = fetchTarball {
url = "https://github.com/NixOS/nixpkgs/archive/03158cb739fc4a09babe7949900bfc221871d642.tar.gz";
sha256 = "0vl4iwqcpbczhzb3xbckjb86brcsxkcz4wcbqzidia2fyhm9llmx";
};
pkgs = import nixpkgs {
config = {
allowUnfree = true;
};
};
base-php = if php-version == 8.3 then
pkgs.php83
else if php-version == 8.4 then
pkgs.php84
else if php-version == 8.5 then
pkgs.php85
else
throw "Unknown php version ${php-version}";
php-brotli = pkgs.callPackage ./.nix/pkgs/php-brotli/package.nix { php = base-php; };
php-snappy = pkgs.callPackage ./.nix/pkgs/php-snappy/package.nix { php = base-php; };
php-lz4 = pkgs.callPackage ./.nix/pkgs/php-lz4/package.nix { php = base-php; };
php-zstd = pkgs.callPackage ./.nix/pkgs/php-zstd/package.nix { php = base-php; };
php-pg-query-ext = pkgs.callPackage ./.nix/pkgs/php-pg-query-ext/package.nix { php = base-php; };
php-arrow-ext = pkgs.callPackage ./.nix/pkgs/php-arrow-ext/package.nix { php = base-php; };
php = pkgs.callPackage ./.nix/pkgs/flow-php/package.nix {
php = base-php;
inherit php-snappy php-lz4 php-brotli php-zstd php-pg-query-ext php-arrow-ext
with-pcov with-xdebug with-blackfire with-pg-query-ext with-arrow-ext with-grpc;
};
in
pkgs.mkShell {
buildInputs = [
php
php.packages.composer
pkgs.starship
pkgs.figlet
pkgs.symfony-cli
pkgs.act
pkgs.hyperfine
pkgs.actionlint
]
++ pkgs.lib.optional with-blackfire pkgs.blackfire
++ pkgs.lib.optionals with-wasm [
# WASM build tools
pkgs.emscripten
pkgs.autoconf
pkgs.cmake
pkgs.wget
pkgs.gnutar
pkgs.xz
pkgs.libxml2
pkgs.pkg-config
]
++ pkgs.lib.optionals with-terraform [
# Terraform
pkgs.terraform
pkgs.nodejs_24
]
++ pkgs.lib.optionals with-c [
# C development tools for pg-query-ext extension development
pkgs.gcc
pkgs.gnumake
pkgs.autoconf
pkgs.automake
pkgs.libtool
pkgs.protobuf
pkgs.protobufc
pkgs.git
php.unwrapped.dev
]
++ pkgs.lib.optionals with-rust [
# Rust development tools for arrow-ext extension development
pkgs.rustc
pkgs.cargo
pkgs.rustfmt
pkgs.clippy
pkgs.clang
pkgs.llvmPackages.libclang
pkgs.pkg-config
php.unwrapped.dev
]
;
shellHook = ''
if [ -f "$PWD/.nix/shell/starship.toml" ]; then
export STARSHIP_CONFIG="$PWD/.nix/shell/starship.toml"
else
export STARSHIP_CONFIG="$PWD/.nix/shell/starship.toml.dist"
fi
${pkgs.lib.optionalString with-c ''
# Setup for pg-query-ext C extension development
export PHP_CONFIG="${php.unwrapped.dev}/bin/php-config"
export PHPIZE="${php.unwrapped.dev}/bin/phpize"
''}
${pkgs.lib.optionalString with-rust ''
# Setup for arrow-ext Rust extension development
export LIBCLANG_PATH="${pkgs.llvmPackages.libclang.lib}/lib"
export PHP_CONFIG="${php.unwrapped.dev}/bin/php-config"
export PHPIZE="${php.unwrapped.dev}/bin/phpize"
''}
eval "$(${pkgs.starship}/bin/starship init bash)"
clear
figlet "Flow PHP"
'';
}