From be9fb9278e18e48093693e74b894eccf96e1b549 Mon Sep 17 00:00:00 2001 From: Lukas Wurzinger Date: Fri, 11 Apr 2025 14:24:41 +0200 Subject: [PATCH] export symfony cli --- flake.lock | 36 ++++++++++----------- flake.nix | 14 +++++--- symfony-cli/package.nix | 72 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 100 insertions(+), 22 deletions(-) create mode 100644 symfony-cli/package.nix diff --git a/flake.lock b/flake.lock index 1f4c50c..af8f13e 100644 --- a/flake.lock +++ b/flake.lock @@ -95,11 +95,11 @@ "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1743783972, - "narHash": "sha256-5wPsNCnWmeLpLxavsftA9L7tnYgtlexV7FwLegxtpy4=", + "lastModified": 1744298740, + "narHash": "sha256-m5RnbHQqYQhQA4ntohXlJsiIsOAKx+pz/vOC+E+FmHg=", "owner": "cachix", "repo": "devenv", - "rev": "2f53e2f867e0c2ba18b880e66169366e5f8ca554", + "rev": "028c6a38fb0284c96691176bd31626bf36981129", "type": "github" }, "original": { @@ -350,11 +350,11 @@ }, "hardware": { "locked": { - "lastModified": 1743420942, - "narHash": "sha256-b/exDDQSLmENZZgbAEI3qi9yHkuXAXCPbormD8CSJXo=", + "lastModified": 1744366945, + "narHash": "sha256-OuLhysErPHl53BBifhesrRumJNhrlSgQDfYOTXfgIMg=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "de6fc5551121c59c01e2a3d45b277a6d05077bc4", + "rev": "1fe3cc2bc5d2dc9c81cb4e63d2f67c1543340df1", "type": "github" }, "original": { @@ -504,11 +504,11 @@ "rust-overlay": "rust-overlay_2" }, "locked": { - "lastModified": 1744137608, - "narHash": "sha256-KEuKL7lM2ZqKzvaGIptVDAce29CAR4ZSgWtFD3PnpB0=", + "lastModified": 1744369853, + "narHash": "sha256-rVW9J8gMUFj8PsFV2TgNiNuJd8+O+FUizEQgl1ooQFY=", "owner": "lilyinstarlight", "repo": "nixos-cosmic", - "rev": "d20b15f629985fe6900925bef462f947e4a75b2f", + "rev": "c2b4dd2f85d558c7147bc06c6417f87aa1775ad5", "type": "github" }, "original": { @@ -581,11 +581,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1743975612, - "narHash": "sha256-o4FjFOUmjSRMK7dn0TFdAT0RRWUWD+WsspPHa+qEQT8=", + "lastModified": 1744168086, + "narHash": "sha256-S9M4HddBCxbbX1CKSyDYgZ8NCVyHcbKnBfoUXeRu2jQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a880f49904d68b5e53338d1e8c7bf80f59903928", + "rev": "60e405b241edb6f0573f3d9f944617fe33ac4a73", "type": "github" }, "original": { @@ -677,11 +677,11 @@ }, "nixpkgs_7": { "locked": { - "lastModified": 1743964447, - "narHash": "sha256-nEo1t3Q0F+0jQ36HJfbJtiRU4OI+/0jX/iITURKe3EE=", + "lastModified": 1744098102, + "narHash": "sha256-tzCdyIJj9AjysC3OuKA+tMD/kDEDAF9mICPDU7ix0JA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "063dece00c5a77e4a0ea24e5e5a5bd75232806f8", + "rev": "c8cd81426f45942bb2906d5ed2fe21d2f19d95b7", "type": "github" }, "original": { @@ -802,11 +802,11 @@ ] }, "locked": { - "lastModified": 1744079607, - "narHash": "sha256-5cog6Qd6w/bINdLO5mOysAHOHey8PwFXk4IWo+y+Czg=", + "lastModified": 1744338850, + "narHash": "sha256-pwMIVmsb8fjjT92n5XFDqCsplcX70qVMMT7NulumPXs=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "f6b62cc99c25e79a1c17e9fca91dc6b6faebec6c", + "rev": "5e64aecc018e6f775572609e7d7485fdba6985a7", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 3ff0627..357ce0e 100644 --- a/flake.nix +++ b/flake.nix @@ -70,10 +70,16 @@ ]; }; - packages = lib.packagesFromDirectoryRecursive { - inherit (pkgs) callPackage; - directory = ./packages; - }; + packages = + lib.packagesFromDirectoryRecursive { + inherit (pkgs) callPackage; + directory = ./packages; + } + // { + symfony-cli = pkgs.callPackage ./symfony-cli/package.nix { + fossarPhps = inputs'.phps.packages; + }; + }; }; }; } diff --git a/symfony-cli/package.nix b/symfony-cli/package.nix new file mode 100644 index 0000000..4f2101c --- /dev/null +++ b/symfony-cli/package.nix @@ -0,0 +1,72 @@ +{ + lib, + fossarPhps, + symlinkJoin, + symfony-cli, + makeWrapper, +}: let + supportedPhps = [ + "php72" + "php73" + "php74" + "php80" + "php81" + "php82" + "php83" + "php84" + ]; + + extraConfig = '' + memory_limit = -1 + + xdebug.mode = develop,coverage,gcstats,profile,debug,trace + xdebug.discover_client_host = 1 + xdebug.client_host = localhost + ''; + + # Wrap all PHP versions with the extensions I need and bundle composer + phps = lib.genAttrs supportedPhps ( + phpName: let + phpBase = fossarPhps.${phpName}; + phpWithEnv = phpBase.buildEnv { + extensions = { + enabled, + all, + }: + enabled + ++ [all.xdebug] + ++ ( + if (lib.versionAtLeast phpBase.version "8") + then [all.amqp] + else [] + ); + inherit extraConfig; + }; + phpWithTools = symlinkJoin { + inherit (phpWithEnv) name version meta passthru; + paths = [ + phpWithEnv + phpWithEnv.packages.composer + ]; + }; + in + phpWithTools + ); + + package = symfony-cli; +in + # Tell Symfony's CLI where it can access the different PHP versions + symlinkJoin { + inherit (package) pname version meta; + + paths = [package]; + + buildInputs = [makeWrapper]; + + postBuild = '' + wrapProgram $out/bin/${package.meta.mainProgram} \ + --suffix PATH : ${lib.makeBinPath ( + builtins.attrValues phps + )} + ''; + }