-
-
Notifications
You must be signed in to change notification settings - Fork 38
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added nix flake for local development (#1468)
* Added nix flake for local development * Refactored version by @drupol * Added starship configuration to nix develop with few other tools * Cleanup flake.nix * Removed non critical applications from develpment shell * Added documentation * Moved from Flake to Nix Shell for local development due to lack of support for arguments in flakes * Allow to select different php version * Added symfony webserver for local website development
- Loading branch information
1 parent
3057ab8
commit eb244da
Showing
16 changed files
with
397 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
php.ini | ||
blackfire.ini | ||
xdebug.ini |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
[blackfire] | ||
; On Windows use the following configuration: | ||
; extension=php_blackfire.dll | ||
|
||
; Sets fine-grained configuration for Probe. | ||
; This should be left blank in most cases. For most installs, | ||
; the server credentials should only be set in the agent. | ||
;blackfire.server_id = | ||
|
||
; Sets fine-grained configuration for Probe. | ||
; This should be left blank in most cases. For most installs, | ||
; the server credentials should only be set in the agent. | ||
;blackfire.server_token = | ||
|
||
; Log verbosity level: | ||
; 4: debug | ||
; 3: info | ||
; 2: warning; | ||
; 1: error | ||
;blackfire.log_level = 1 | ||
|
||
; Log file (STDERR by default) | ||
;blackfire.log_file = /tmp/blackfire.log | ||
|
||
; Add the stacktrace to the probe logs when a segmentation fault occurs. | ||
; Debug option inactive on Windows and Alpine. | ||
;blackfire.debug.sigsegv_handler = 0 | ||
|
||
; Sets the socket where the agent is listening. | ||
; Possible value can be a unix socket or a TCP address. | ||
; Defaults values are: | ||
; - Linux: unix:///var/run/blackfire/agent.sock | ||
; - macOS amd64: unix:///usr/local/var/run/blackfire-agent.sock | ||
; - macOS arm64 (M1): unix:///opt/homebrew/var/run/blackfire-agent.sock | ||
; - Windows: tcp://127.0.0.1:8307 | ||
;blackfire.agent_socket = unix:///var/run/blackfire/agent.sock | ||
|
||
; Enables Blackfire Monitoring | ||
; Enabled by default since version 1.61.0 | ||
;blackfire.apm_enabled = 1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
[pcov] | ||
; pcov.enabled=1 | ||
; pcov.directory=. | ||
; pcov.exclude= | ||
; pcov.initial.memory=65536 | ||
; pcov.initial.files=64 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
date.timezone = UTC | ||
max_execution_time = 1800 | ||
max_input_time = 3600 | ||
max_input_nesting_level = 64 | ||
memory_limit = -1 | ||
post_max_size = 200M | ||
upload_max_filesize = 150M | ||
file_uploads = On | ||
max_file_uploads = 20 | ||
short_open_tag = off |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
[xdebug] | ||
xdebug.mode=debug |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
{ | ||
php, | ||
php-snappy, | ||
php-lz4, | ||
php-brotli, | ||
php-zstd, | ||
with-pcov ? true, | ||
with-xdebug ? false, | ||
with-blackfire ? false | ||
}: | ||
|
||
let | ||
flowPHP = php.withExtensions ( | ||
{ enabled, all }: | ||
with all; | ||
enabled | ||
++ [ | ||
bcmath | ||
dom | ||
mbstring | ||
(php-brotli.override { inherit php; }) | ||
(php-lz4.override { inherit php; }) | ||
(php-snappy.override { inherit php; }) | ||
(php-zstd.override { inherit php; }) | ||
xmlreader | ||
xmlwriter | ||
zlib | ||
] | ||
++ (if with-xdebug then [xdebug] else []) | ||
++ (if with-pcov then [pcov] else []) | ||
++ (if with-blackfire then [blackfire] else []) | ||
); | ||
in | ||
flowPHP.buildEnv { | ||
extraConfig = "" | ||
+ ( | ||
if builtins.pathExists ./../../php/lib/php.ini | ||
then builtins.readFile ./../../php/lib/php.ini | ||
else builtins.readFile ./../../php/lib/php.ini.dist | ||
) | ||
+ "\n" | ||
+ ( | ||
if with-xdebug | ||
then | ||
if builtins.pathExists ./../../php/lib/xdebug.ini | ||
then builtins.readFile ./../../php/lib/xdebug.ini | ||
else builtins.readFile ./../../php/lib/xdebug.ini.dist | ||
else "" | ||
) | ||
+ "\n" | ||
+ ( | ||
if with-blackfire | ||
then | ||
if builtins.pathExists ./../../php/lib/blackfire.ini | ||
then builtins.readFile ./../../php/lib/blackfire.ini | ||
else builtins.readFile ./../../php/lib/blackfire.ini.dist | ||
else "" | ||
) | ||
+ "\n" | ||
+ ( | ||
if with-pcov | ||
then | ||
if builtins.pathExists ./../../php/lib/pcov.ini | ||
then builtins.readFile ./../../php/lib/pcov.ini | ||
else builtins.readFile ./../../php/lib/pcov.ini.dist | ||
else "" | ||
); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
{ | ||
php, | ||
fetchFromGitHub, | ||
}: | ||
|
||
php.buildPecl { | ||
pname = "brotli"; | ||
version = "0.13.1"; | ||
|
||
src = fetchFromGitHub { | ||
owner = "kjdev"; | ||
repo = "php-ext-brotli"; | ||
tag = "0.13.1"; | ||
hash = "sha256-bdnTEEJUPe+VvXjncKbIi4wfnEn9UH7OBTKiUCET+qQ="; | ||
fetchSubmodules = true; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
{ php, fetchFromGitHub }: | ||
|
||
php.buildPecl { | ||
pname = "lz4"; | ||
version = "0.4.4"; | ||
|
||
src = fetchFromGitHub { | ||
owner = "kjdev"; | ||
repo = "php-ext-lz4"; | ||
tag = "0.4.4"; | ||
hash = "sha256-iKgMN77W5iR3jwOwKNwIpuLwkeDkQVTIppEp4fF1oZw="; | ||
fetchSubmodules = true; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
{ php, fetchFromGitHub }: | ||
|
||
php.buildPecl { | ||
pname = "snappy"; | ||
version = "0.2.1"; | ||
|
||
src = fetchFromGitHub { | ||
owner = "kjdev"; | ||
repo = "php-ext-snappy"; | ||
tag = "0.2.1"; | ||
hash = "sha256-PAKdIcpJKH6d74EulYQepP4XbQvccrj1nEuir47vro4="; | ||
fetchSubmodules = true; | ||
}; | ||
|
||
env.NIX_CXXFLAGS_COMPILE = "-std=c++11"; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
{ php, fetchFromGitHub }: | ||
|
||
php.buildPecl { | ||
pname = "zstd"; | ||
version = "0.14.0"; | ||
|
||
src = fetchFromGitHub { | ||
owner = "kjdev"; | ||
repo = "php-ext-zstd"; | ||
tag = "0.14.0"; | ||
hash = "sha256-oIbvaLYQ6Tp20Y/UEN7i1dtMnxGdMNcIjv6xRCyVYdE="; | ||
fetchSubmodules = true; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
starship.toml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
#!/usr/bin/env bash | ||
|
||
# Directory of this script | ||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||
|
||
# Check if starship.toml exists, otherwise use starship.toml.dist | ||
if [ -f "$SCRIPT_DIR/starship.toml" ]; then | ||
export STARSHIP_CONFIG="$SCRIPT_DIR/starship.toml" | ||
else | ||
export STARSHIP_CONFIG="$SCRIPT_DIR/starship.toml.dist" | ||
fi | ||
|
||
# Initialize Starship prompt | ||
eval "$(${pkgs.starship}/bin/starship init bash)" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
[php] | ||
style = "blue" | ||
format = 'via [$symbol($version )]($style)' | ||
|
||
[aws] | ||
disabled = true | ||
[azure] | ||
disabled = true | ||
[gcloud] | ||
disabled = true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
# Nix - Development Environment | ||
|
||
Nix is probably the easiest way of setting up the development environment. | ||
|
||
Before you start please make sure you have Nix installed. | ||
If you don't have it installed, you can install it by following official documentation. | ||
|
||
[Nix installation instructions](https://nixos.org/download/) | ||
|
||
Once you have Nix installed, you can start your development environment | ||
by going to the project folder and running following command: | ||
|
||
```bash | ||
nix-shell | ||
``` | ||
|
||
> If you are using Nix for the first time, it might take a while to download all the dependencies. | ||
> To achieve full isolation, use `nix-shell --pure` command. This way nix will isolate your development environment from the system. | ||
That's all, after running this command you will have all the necessary tools and dependencies. | ||
Nix will create a new shell with all the necessary tools and dependencies for the project. | ||
|
||
By default, we’re using [Starship](https://starship.rs/) to provide a nice bash prompt. | ||
You can override it by creating `/.nix/shell/starship.toml` based on `/.nix/shell/starship.toml.dist` | ||
file. | ||
|
||
Once you apply your modification you can run `nix-shell` again to apply changes. | ||
|
||
To use the php version from nix inside your IDE please start a nix shell `nix-shell` | ||
and type: | ||
|
||
```shell | ||
type php | ||
``` | ||
|
||
This should return you path to your php version that is used inside of the nix shell. | ||
It will look like this: | ||
|
||
```shell | ||
php is /nix/store/p2m5bamh01ncpwjxscdl11p2m9xy8aq6-php-with-extensions-8.2.27/bin/php | ||
``` | ||
|
||
## php.ini | ||
|
||
Nix shell comes with predefined php.ini, but if for any reason | ||
it wouldn't be enough for you, you can create your own php.ini file in path: | ||
|
||
`./.nix/php/lib/php.ini` | ||
|
||
If that file is not present, the default php.ini.dist from the same location will be used. | ||
|
||
## Pcov | ||
|
||
- `pcov` - required for code coverage | ||
|
||
To skip installing pcov extension, you can run nix shell with `--arg with-pco false` flag: | ||
|
||
```shell | ||
|
||
nix-shell --arg with-pcov false | ||
``` | ||
|
||
To configure pcov, you can create a file `./.nix/php/lib/pcov.ini` with your xdebug configuration. | ||
|
||
## Xdebug | ||
|
||
- `xdebug` - required for debugging | ||
|
||
To install xdebug extension, you can run nix shell with `--arg with-xdebug true` flag: | ||
|
||
```shell | ||
nix-shell --arg with-xdebug true | ||
``` | ||
|
||
To configure xdebug, you can create a file `./.nix/php/lib/xdebug.ini` with your xdebug configuration. | ||
|
||
## Blackfire | ||
|
||
- `blackfire` - required for profiling | ||
|
||
To install blackfire extension, you can run nix shell with `--arg with-blackfire true` flag: | ||
|
||
```shell | ||
nix-shell --arg with-blackfire true | ||
``` | ||
|
||
To configure blackfire, you can create a file `./.nix/php/lib/blackfire.ini` with your blackfire configuration. | ||
|
||
## Changing PHP Versions | ||
|
||
To change the PHP version, you can run nix shell with `--arg php-version 8.3` flag: | ||
|
||
```shell | ||
nix-shell --arg php-version 8.3 | ||
``` | ||
|
||
> In general, it's not recommended to change the PHP version, as development should always | ||
> be done on the lowest supported PHP version. | ||
> | ||
> This feature is mostly for testing new integrations | ||
> or lowest/highest versions of dependencies. | ||
## Local Webserver | ||
|
||
To run the local webserver for Flow Website development, please use Symfony CLI app | ||
that is also available in nix shell. | ||
|
||
```shell | ||
cd web/landing | ||
symfony proxy:start | ||
symfony server:start -d | ||
``` | ||
|
||
You can read more about it here: | ||
|
||
- [How to use .wip domain for development](https://symfony.com/doc/current/setup/symfony_server.html#setting-up-the-local-proxy) |
Oops, something went wrong.