Skip to content

Commit

Permalink
Let users provide a custom .php.ini file.
Browse files Browse the repository at this point in the history
  • Loading branch information
drupol committed Nov 25, 2021
1 parent 48d48da commit e60e902
Show file tree
Hide file tree
Showing 14 changed files with 105 additions and 163 deletions.
57 changes: 30 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@
## Description

This is a totally experimental package to centralize
[develpment environment][46] files tailored for PHP development.
[development environment][46] files tailored for PHP development.

This package provides then a couple of `flakes` ready to use
This package provides a Nix `flakes` ready to use
for PHP development.

Each `shell` environment provides the following tools:
Each available environment provides the following tools:

* PHP with extensions, `xdebug` and `pcov`
* Custom `php.ini`
Expand All @@ -28,46 +28,49 @@ Each `shell` environment provides the following tools:

## Usage

* First get `composer`

```shell
nix-shell -p phpPackages.composer
nix develop github:loophp/nix-shell#php80
```

* Now that `composer` is available, make sure to require this package
Available PHP versions are:

```shell
composer require loophp/nix-shell --dev
```
* `php56`
* `php70`
* `php71`
* `php72`
* `php73`
* `php74`
* `php74-nodebug`
* `php80`
* `php80-nodebug`

### Customize PHP

* Optionally, quit the current shell
To customize the PHP configuration, you can do it like this:

```shell
exit
nix develop github:loophp/nix-shell#php80
php -c /path/to/the/config.ini <<command>>
```
* Run `nix develop` again (*mind the trailing slash at the end!*)
Another option would be to create a `.php.ini` file within your
current working directory before running the PHP environment,
as such:
```shell
nix develop .#php
```ini
max_execution_time = 0
memory_limit = 2048M
```
Replace the last part by the PHP version that you want to use:
Then run:
```shell
nix develop .#php56
nix develop github:loophp/nix-shell#php80 --impure
```
Available PHP versions are:

* `php56`
* `php70`
* `php71`
* `php72`
* `php73`
* `php74`
* `php80`
* `php81`
The `--impure` flag is important to make sure that your custom
`.php.ini` file is correctly taken in account.
## Contributing
Expand Down
82 changes: 70 additions & 12 deletions flake.nix
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
description = "PHP/Composer";
description = "PHP/Composer/SymfonyCLi/GithubCLi/git/sqlite/make/docker-compose";

inputs = {
nixpkgs.url = github:NixOS/nixpkgs/nixos-unstable;
Expand All @@ -16,17 +16,75 @@
};
in {
devShells = {
default = import ./resources/dev/php {pkgs = pkgs; phps = phps.packages.${system};};
php56 = import ./resources/dev/php56 {pkgs = pkgs; phps = phps.packages.${system};};
php70 = import ./resources/dev/php70 {pkgs = pkgs; phps = phps.packages.${system};};
php71 = import ./resources/dev/php71 {pkgs = pkgs; phps = phps.packages.${system};};
php72 = import ./resources/dev/php72 {pkgs = pkgs; phps = phps.packages.${system};};
php73 = import ./resources/dev/php73 {pkgs = pkgs; phps = phps.packages.${system};};
php74 = import ./resources/dev/php74 {pkgs = pkgs; phps = phps.packages.${system};};
php74-nodebug = import ./resources/dev/php74-nodebug {pkgs = pkgs; phps = phps.packages.${system};};
php80 = import ./resources/dev/php80 {pkgs = pkgs; phps = phps.packages.${system};};
php80-nodebug = import ./resources/dev/php80-nodebug {pkgs = pkgs; phps = phps.packages.${system};};
php81-nodebug = import ./resources/dev/php81-nodebug {pkgs = pkgs; phps = phps.packages.${system};};
default = import ./resources/dev/common.nix {
pkgs = pkgs;
phps = phps.packages.${system};
version = "php80";
phpExtensions = default: { all, ... }: builtins.filter (x: !builtins.elem x []) (default all);
};

php56 = import ./resources/dev/common.nix {
pkgs = pkgs;
phps = phps.packages.${system};
version = "php56";
phpExtensions = default: { all, ... }: builtins.filter (x: !builtins.elem x []) (default all);
};

php70 = import ./resources/dev/common.nix {
pkgs = pkgs;
phps = phps.packages.${system};
version = "php70";
phpExtensions = default: { all, ... }: builtins.filter (x: !builtins.elem x []) (default all);
};

php71 = import ./resources/dev/common.nix {
pkgs = pkgs;
phps = phps.packages.${system};
version = "php71";
phpExtensions = default: { all, ... }: builtins.filter (x: !builtins.elem x []) (default all);
};

php72 = import ./resources/dev/common.nix {
pkgs = pkgs;
phps = phps.packages.${system};
version = "php72";
phpExtensions = default: { all, ... }: builtins.filter (x: !builtins.elem x []) (default all);
};

php73 = import ./resources/dev/common.nix {
pkgs = pkgs;
phps = phps.packages.${system};
version = "php73";
phpExtensions = default: { all, ... }: builtins.filter (x: !builtins.elem x []) (default all);
};

php74 = import ./resources/dev/common.nix {
pkgs = pkgs;
phps = phps.packages.${system};
version = "php74";
phpExtensions = default: { all, ... }: builtins.filter (x: !builtins.elem x []) (default all);
};

php74-nodebug = import ./resources/dev/common.nix {
pkgs = pkgs;
phps = phps.packages.${system};
version = "php74-nodebug";
phpExtensions = default: { all, ... }: builtins.filter (x: !builtins.elem x [all.xdebug all.pcov]) (default all);
};

php80 = import ./resources/dev/common.nix {
pkgs = pkgs;
phps = phps.packages.${system};
version = "php80";
phpExtensions = default: { all, ... }: builtins.filter (x: !builtins.elem x []) (default all);
};

php80-nodebug = import ./resources/dev/common.nix {
pkgs = pkgs;
phps = phps.packages.${system};
version = "php80-nodebug";
phpExtensions = default: { all, ... }: builtins.filter (x: !builtins.elem x [all.xdebug all.pcov]) (default all);
};
};
}
);
Expand Down
12 changes: 5 additions & 7 deletions resources/dev/common.nix
Original file line number Diff line number Diff line change
@@ -1,12 +1,7 @@
{
pkgs,
phps,
version ? "php74",
phpIni ? ''
max_execution_time = 0
xdebug.mode=debug
memory_limit=2048M
'',
version,
phpExtensions ? { all, ... }: with all; [],
defaultExtensions ? { all, ... }: with all; []
}:
Expand Down Expand Up @@ -48,9 +43,12 @@ let
zlib
];

# This is the reason why we use --impure flag.
phpIniFile = "${builtins.getEnv "PWD"}/.php.ini";

phpOverride = phps.${version}.buildEnv {
extensions = phpExtensions defaultPhpExtensions;
extraConfig = phpIni;
extraConfig = if builtins.pathExists "${phpIniFile}" then builtins.readFile "${phpIniFile}" else "";
};

mkShellNoCC = pkgs.mkShell.override { stdenv = pkgs.stdenvNoCC; };
Expand Down
11 changes: 0 additions & 11 deletions resources/dev/php/default.nix

This file was deleted.

10 changes: 0 additions & 10 deletions resources/dev/php56/default.nix

This file was deleted.

10 changes: 0 additions & 10 deletions resources/dev/php70/default.nix

This file was deleted.

10 changes: 0 additions & 10 deletions resources/dev/php71/default.nix

This file was deleted.

10 changes: 0 additions & 10 deletions resources/dev/php72/default.nix

This file was deleted.

11 changes: 0 additions & 11 deletions resources/dev/php73/default.nix

This file was deleted.

11 changes: 0 additions & 11 deletions resources/dev/php74-nodebug/default.nix

This file was deleted.

11 changes: 0 additions & 11 deletions resources/dev/php74/default.nix

This file was deleted.

11 changes: 0 additions & 11 deletions resources/dev/php80-nodebug/default.nix

This file was deleted.

11 changes: 0 additions & 11 deletions resources/dev/php80/default.nix

This file was deleted.

11 changes: 0 additions & 11 deletions resources/dev/php81-nodebug/default.nix

This file was deleted.

0 comments on commit e60e902

Please sign in to comment.