2ba7926959
Rework withExtensions / buildEnv to handle currently enabled extensions better and make them compatible with override. They now accept a function with the named arguments enabled and all, where enabled is a list of currently enabled extensions and all is the set of all extensions. This gives us several nice properties: - You always get the right version of the list of currently enabled extensions - Invocations chain - It works well with overridden PHP packages - you always get the correct versions of extensions As a contrived example of what's possible, you can add ImageMagick, then override the version and disable fpm, then disable cgi, and lastly remove the zip extension like this: { pkgs ? (import <nixpkgs>) {} }: with pkgs; let phpWithImagick = php74.withExtensions ({ all, enabled }: enabled ++ [ all.imagick ]); phpWithImagickWithoutFpm743 = phpWithImagick.override { version = "7.4.3"; sha256 = "wVF7pJV4+y3MZMc6Ptx21PxQfEp6xjmYFYTMfTtMbRQ="; fpmSupport = false; }; phpWithImagickWithoutFpmZip743 = phpWithImagickWithoutFpm743.withExtensions ( { enabled, all }: lib.filter (e: e != all.zip) enabled); phpWithImagickWithoutFpmZipCgi743 = phpWithImagickWithoutFpmZip743.override { cgiSupport = false; }; in phpWithImagickWithoutFpmZipCgi743 |
||
---|---|---|
.. | ||
android.section.md | ||
beam.xml | ||
bower.xml | ||
coq.xml | ||
crystal.section.md | ||
dotnet.section.md | ||
emscripten.section.md | ||
gnome.xml | ||
go.xml | ||
haskell.section.md | ||
idris.section.md | ||
index.xml | ||
ios.section.md | ||
java.xml | ||
lua.xml | ||
node.section.md | ||
ocaml.xml | ||
perl.xml | ||
php.section.md | ||
python.section.md | ||
qt.xml | ||
r.section.md | ||
ruby.section.md | ||
ruby.xml | ||
rust.section.md | ||
texlive.xml | ||
titanium.section.md | ||
vim.section.md |