From 3fdb0346d778334c44a36e7d371df5dcec832c61 Mon Sep 17 00:00:00 2001 From: Ryan Mulligan Date: Thu, 6 Apr 2023 14:32:17 -0700 Subject: [PATCH] phpactor: init at 2023.01.21 Initialized as a fixed output derivation because composer needs to access the internet to download dependencies. I've tested the reproducibility of it following my steps here: https://discourse.nixos.org/t/reproducibility-checking-with-new-cli-and-fixed-output-derivations/27053 composer2nix didn't work for this package and it seemed simpler to do this. --- pkgs/development/tools/phpactor/default.nix | 79 +++++++++++++++++++++ pkgs/top-level/all-packages.nix | 1 + 2 files changed, 80 insertions(+) create mode 100644 pkgs/development/tools/phpactor/default.nix diff --git a/pkgs/development/tools/phpactor/default.nix b/pkgs/development/tools/phpactor/default.nix new file mode 100644 index 00000000000..b657b9d8a49 --- /dev/null +++ b/pkgs/development/tools/phpactor/default.nix @@ -0,0 +1,79 @@ +{ lib, stdenvNoCC, fetchFromGitHub, php, phpPackages }: + +let + version = "2023.01.21"; + + src = fetchFromGitHub { + owner = "phpactor"; + repo = "phpactor"; + rev = version; + hash = "sha256-jWZgBEaffjQ5wCStSEe+eIi7BJt6XAQFEjmq5wvW5V8="; + }; + + vendor = stdenvNoCC.mkDerivation rec { + pname = "phpactor-vendor"; + inherit src version; + + + # See https://github.com/NixOS/nix/issues/6660 + dontPatchShebangs = true; + + nativeBuildInputs = [ + php + phpPackages.composer + ]; + + buildPhase = '' + runHook preBuild + + substituteInPlace composer.json \ + --replace '"config": {' '"config": { "autoloader-suffix": "Phpactor",' \ + --replace '"name": "phpactor/phpactor",' '"name": "phpactor/phpactor", "version": "${version}",' + composer install --no-interaction --optimize-autoloader --no-dev --no-scripts + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out + cp -ar ./vendor $out/ + + runHook postInstall + ''; + + outputHashMode = "recursive"; + outputHashAlgo = "sha256"; + outputHash = "sha256-7R6nadWFv7A5Hv14D9egsTD/zcKK5uK9LQlHmwtbKdE="; + }; +in +stdenvNoCC.mkDerivation { + pname = "phpactor"; + inherit src version; + + buildInputs = [ + php + ]; + + dontBuild = true; + + installPhase = '' + runHook preInstall + + mkdir -p $out/share/php/phpactor $out/bin + cp -r . $out/share/php/phpactor + cp -r ${vendor}/vendor $out/share/php/phpactor + ln -s $out/share/php/phpactor/bin/phpactor $out/bin/phpactor + + runHook postInstall + ''; + + meta = { + description = "Mainly a PHP Language Server"; + homepage = "https://github.com/phpactor/phpactor"; + license = lib.licenses.mit; + maintainers = lib.teams.php.members ++ [ lib.maintainers.ryantm ]; + }; + +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 73a8cbffd9e..ab87a14b24c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -16755,6 +16755,7 @@ with pkgs; php80Extensions = recurseIntoAttrs php80.extensions; php80Packages = recurseIntoAttrs php80.packages; + phpactor = callPackage ../development/tools/phpactor { }; picoc = callPackage ../development/interpreters/picoc { };