Hi there! I’m trying to make php and composer work. I have this in environment.systemPackages:

    (pkgs.php82.buildEnv {
      extensions = ({ enabled, all }: enabled ++ (with all; [
        xdebug
        redis
      ]));
      extraConfig = ''
        memory_limit=2G
        xdebug.mode=debug
      '';
    })
    php82Extensions.redis

The problem is that while running php -m correctly prints that redis extension is installed, composer does not, because it uses a different php:

  • file $(which php) prints the path /nix/store/igx8j4qjxy9jyj8kjyccwarnzqq5vsml-php-with-extensions-8.2.9/bin/php
  • cat $(which composer) shows that it’s a wrapper for '/nix/store/lv4prxa52zifr54ws56iz3b9kdhs1b5w-php-with-extensions-8.2.9/bin/php' --add-flags '/nix/store/avqj0662f4gg2s875zlbbjajx6fm6bl0-php-composer-2.5.5/libexec/composer/composer.phar'

Note that the path to php is different. Is there any way to correct it on my side? I’d like to avoid having to install composer manually

    • aanderse
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      Looks like you almost had it figured out. composer belongs to the phpPackages set, an alias for php.packages, and any package under that set should use the php package you specify. This way you can customize the php configuration for various programs.

      And how could I find out something like this?

      I briefly looked at the documentation and I’m not sure that this is specifically mentioned. Unless I missed it this would be nice to add to our documentation.