1{ lib, stdenvNoCC, fetchFromGitHub, php, phpPackages }:
2
3let
4 version = "2023.01.21";
5
6 src = fetchFromGitHub {
7 owner = "phpactor";
8 repo = "phpactor";
9 rev = version;
10 hash = "sha256-jWZgBEaffjQ5wCStSEe+eIi7BJt6XAQFEjmq5wvW5V8=";
11 };
12
13 vendor = stdenvNoCC.mkDerivation rec {
14 pname = "phpactor-vendor";
15 inherit src version;
16
17
18 # See https://github.com/NixOS/nix/issues/6660
19 dontPatchShebangs = true;
20
21 nativeBuildInputs = [
22 php
23 phpPackages.composer
24 ];
25
26 buildPhase = ''
27 runHook preBuild
28
29 substituteInPlace composer.json \
30 --replace '"config": {' '"config": { "autoloader-suffix": "Phpactor",' \
31 --replace '"name": "phpactor/phpactor",' '"name": "phpactor/phpactor", "version": "${version}",'
32 composer install --no-interaction --optimize-autoloader --no-dev --no-scripts
33
34 runHook postBuild
35 '';
36
37 installPhase = ''
38 runHook preInstall
39
40 mkdir -p $out
41 cp -ar ./vendor $out/
42
43 runHook postInstall
44 '';
45
46 outputHashMode = "recursive";
47 outputHashAlgo = "sha256";
48 outputHash = "sha256-7R6nadWFv7A5Hv14D9egsTD/zcKK5uK9LQlHmwtbKdE=";
49 };
50in
51stdenvNoCC.mkDerivation {
52 pname = "phpactor";
53 inherit src version;
54
55 buildInputs = [
56 php
57 ];
58
59 dontBuild = true;
60
61 installPhase = ''
62 runHook preInstall
63
64 mkdir -p $out/share/php/phpactor $out/bin
65 cp -r . $out/share/php/phpactor
66 cp -r ${vendor}/vendor $out/share/php/phpactor
67 ln -s $out/share/php/phpactor/bin/phpactor $out/bin/phpactor
68
69 runHook postInstall
70 '';
71
72 meta = {
73 description = "Mainly a PHP Language Server";
74 homepage = "https://github.com/phpactor/phpactor";
75 license = lib.licenses.mit;
76 maintainers = lib.teams.php.members ++ [ lib.maintainers.ryantm ];
77 };
78
79}