puter/hosts/headful/work/phps.nix
2025-01-22 20:38:41 +01:00

74 lines
1.5 KiB
Nix

{
lib,
inputs,
pkgs,
...
}: let
supportedPhps = [
"php72"
"php73"
"php74"
"php80"
"php81"
"php82"
"php83"
"php84"
];
selectedPhp = lib.last supportedPhps;
extraConfig = ''
memory_limit = -1
xdebug.mode = develop,coverage,gcstats,profile,debug,trace
xdebug.discover_client_host = 1
xdebug.client_host = localhost
'';
phps = lib.genAttrs supportedPhps (
phpName: let
phpBase = inputs.phps.packages.${pkgs.system}.${phpName};
phpWithEnv = phpBase.buildEnv {
extensions = {
enabled,
all,
}:
enabled
++ [all.xdebug]
++ (
if (lib.versionAtLeast phpBase.version "8")
then [all.amqp]
else []
);
inherit extraConfig;
};
phpWithTools = pkgs.symlinkJoin {
inherit (phpWithEnv) name version meta passthru;
paths = [
phpWithEnv
phpWithEnv.packages.composer
pkgs.symfony-cli
];
};
in
phpWithTools
);
prefix = "/var/lib/phps";
in {
nix.settings = {
substituters = ["https://fossar.cachix.org/"];
trusted-public-keys = ["fossar.cachix.org-1:Zv6FuqIboeHPWQS7ysLCJ7UT7xExb4OE8c4LyGb5AsE="];
};
systemd.tmpfiles.settings =
builtins.mapAttrs (name: drv: {
"${prefix}/${name}"."L+".argument = drv.outPath;
})
phps;
environment.systemPackages = [
phps.${selectedPhp}.packages.composer
];
}