at master 1.4 kB view raw
1{ 2 lib, 3 fetchurl, 4 fetchFromGitHub, 5 php, 6 versionCheckHook, 7 runCommand, 8}: 9 10let 11 version = "6.13.1"; 12 13 # The PHAR file is only required to get the `composer.lock` file 14 psalm-phar = fetchurl { 15 url = "https://github.com/vimeo/psalm/releases/download/${version}/psalm.phar"; 16 hash = "sha256-bOxm5LYiQDCY0hU998Wnnp2+x44sidfCf/OqlQ+1gvA="; 17 }; 18in 19php.buildComposerProject2 (finalAttrs: { 20 pname = "psalm"; 21 inherit version; 22 23 src = fetchFromGitHub { 24 owner = "vimeo"; 25 repo = "psalm"; 26 tag = finalAttrs.version; 27 hash = "sha256-QsANvg/QXJucjxwM6IF20mZu4DPw/RcBJV6+5tJkZB0="; 28 }; 29 30 composerLock = runCommand "composer.lock" { } '' 31 ${lib.getExe php} -r '$phar = new Phar("${psalm-phar}"); $phar->extractTo(".", "composer.lock");' 32 cp composer.lock $out 33 ''; 34 vendorHash = "sha256-18FAMuOO6rWAQEIJOLGxj/Avr5ZQRuI4ao2RL2nJlYc="; 35 36 doInstallCheck = true; 37 nativeInstallCheckInputs = [ versionCheckHook ]; 38 versionCheckProgramArg = "--version"; 39 40 meta = { 41 broken = lib.versionOlder php.version "8.2"; 42 changelog = "https://github.com/vimeo/psalm/releases/tag/${finalAttrs.version}"; 43 description = "Static analysis tool for finding errors in PHP applications"; 44 homepage = "https://github.com/vimeo/psalm"; 45 license = lib.licenses.mit; 46 mainProgram = "psalm"; 47 maintainers = [ lib.maintainers.patka ]; 48 }; 49})