From 862d0ffd8408ead760d37aa1c839c1ccf2effe28 Mon Sep 17 00:00:00 2001 From: bezmuth Date: Tue, 13 Sep 2022 17:42:12 +0100 Subject: [PATCH 01/49] pixelfed: init at 0.11.5 --- .../web-apps/pixelfed/composer-env.nix | 244 +++ .../servers/web-apps/pixelfed/composition.nix | 14 + pkgs/servers/web-apps/pixelfed/default.nix | 47 + .../web-apps/pixelfed/php-packages.nix | 1848 +++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 5 files changed, 2155 insertions(+) create mode 100644 pkgs/servers/web-apps/pixelfed/composer-env.nix create mode 100644 pkgs/servers/web-apps/pixelfed/composition.nix create mode 100644 pkgs/servers/web-apps/pixelfed/default.nix create mode 100644 pkgs/servers/web-apps/pixelfed/php-packages.nix diff --git a/pkgs/servers/web-apps/pixelfed/composer-env.nix b/pkgs/servers/web-apps/pixelfed/composer-env.nix new file mode 100644 index 000000000000..71714b764008 --- /dev/null +++ b/pkgs/servers/web-apps/pixelfed/composer-env.nix @@ -0,0 +1,244 @@ +# This file originates from composer2nix + +{ stdenv, lib, writeTextFile, fetchurl, php, unzip, phpPackages }: + +let + inherit (phpPackages) composer; + + filterSrc = src: + builtins.filterSource (path: type: type != "directory" || (baseNameOf path != ".git" && baseNameOf path != ".git" && baseNameOf path != ".svn")) src; + + buildZipPackage = { name, src }: + stdenv.mkDerivation { + inherit name src; + nativeBuildInputs = [ unzip ]; + buildCommand = '' + shopt -s dotglob + unzip $src + baseDir=$(find . -type d -mindepth 1 -maxdepth 1) + cd $baseDir + mkdir -p $out + mv * $out + ''; + }; + + buildPackage = + { name + , src + , packages ? {} + , devPackages ? {} + , buildInputs ? [] + , symlinkDependencies ? false + , executable ? false + , removeComposerArtifacts ? false + , postInstall ? "" + , noDev ? false + , composerExtraArgs ? "" + , unpackPhase ? "true" + , buildPhase ? "true" + , ...}@args: + + let + reconstructInstalled = writeTextFile { + name = "reconstructinstalled.php"; + executable = true; + text = '' + #! ${php}/bin/php + + ''; + }; + + constructBin = writeTextFile { + name = "constructbin.php"; + executable = true; + text = '' + #! ${php}/bin/php + + ''; + }; + + bundleDependencies = dependencies: + lib.concatMapStrings (dependencyName: + let + dependency = dependencies.${dependencyName}; + in + '' + ${if dependency.targetDir == "" then '' + vendorDir="$(dirname ${dependencyName})" + mkdir -p "$vendorDir" + ${if symlinkDependencies then + ''ln -s "${dependency.src}" "$vendorDir/$(basename "${dependencyName}")"'' + else + ''cp -av "${dependency.src}" "$vendorDir/$(basename "${dependencyName}")"'' + } + '' else '' + namespaceDir="${dependencyName}/$(dirname "${dependency.targetDir}")" + mkdir -p "$namespaceDir" + ${if symlinkDependencies then + ''ln -s "${dependency.src}" "$namespaceDir/$(basename "${dependency.targetDir}")"'' + else + ''cp -av "${dependency.src}" "$namespaceDir/$(basename "${dependency.targetDir}")"'' + } + ''} + '') (builtins.attrNames dependencies); + + extraArgs = removeAttrs args [ "packages" "devPackages" "buildInputs" ]; + in + stdenv.mkDerivation ({ + buildInputs = [ php composer ] ++ buildInputs; + + inherit unpackPhase buildPhase; + + installPhase = '' + ${if executable then '' + mkdir -p $out/share/php + cp -av $src $out/share/php/$name + chmod -R u+w $out/share/php/$name + cd $out/share/php/$name + '' else '' + cp -av $src $out + chmod -R u+w $out + cd $out + ''} + + # Remove unwanted files + rm -f *.nix + + export HOME=$TMPDIR + + # Remove the provided vendor folder if it exists + rm -Rf vendor + + # If there is no composer.lock file, compose a dummy file. + # Otherwise, composer attempts to download the package.json file from + # the registry which we do not want. + if [ ! -f composer.lock ] + then + cat > composer.lock < vendor/composer/installed.json + + # Copy or symlink the provided dependencies + cd vendor + ${bundleDependencies packages} + ${lib.optionalString (!noDev) (bundleDependencies devPackages)} + cd .. + + # Reconstruct autoload scripts + # We use the optimize feature because Nix packages cannot change after they have been built + # Using the dynamic loader for a Nix package is useless since there is nothing to dynamically reload. + composer dump-autoload --optimize ${lib.optionalString noDev "--no-dev"} ${composerExtraArgs} + + # Run the install step as a validation to confirm that everything works out as expected + composer install --optimize-autoloader ${lib.optionalString noDev "--no-dev"} ${composerExtraArgs} + + ${lib.optionalString executable '' + # Reconstruct the bin/ folder if we deploy an executable project + ${php}/bin/php ${constructBin} composer.json + ln -s $(pwd)/vendor/bin $out/bin + ''} + + ${lib.optionalString (!symlinkDependencies) '' + # Patch the shebangs if possible + if [ -d $(pwd)/vendor/bin ] + then + # Look for all executables in bin/ + for i in $(pwd)/vendor/bin/* + do + # Look for their location + realFile=$(readlink -f "$i") + + # Restore write permissions + chmod u+wx "$(dirname "$realFile")" + chmod u+w "$realFile" + + # Patch shebang + sed -e "s|#!/usr/bin/php|#!${php}/bin/php|" \ + -e "s|#!/usr/bin/env php|#!${php}/bin/php|" \ + "$realFile" > tmp + mv tmp "$realFile" + chmod u+x "$realFile" + done + fi + ''} + + if [ "$removeComposerArtifacts" = "1" ] + then + # Remove composer stuff + rm -f composer.json composer.lock + fi + + # Execute post install hook + runHook postInstall + ''; + } // extraArgs); +in +{ + inherit filterSrc; + composer = lib.makeOverridable composer; + buildZipPackage = lib.makeOverridable buildZipPackage; + buildPackage = lib.makeOverridable buildPackage; +} diff --git a/pkgs/servers/web-apps/pixelfed/composition.nix b/pkgs/servers/web-apps/pixelfed/composition.nix new file mode 100644 index 000000000000..2519bd84626e --- /dev/null +++ b/pkgs/servers/web-apps/pixelfed/composition.nix @@ -0,0 +1,14 @@ +{pkgs ? import { + inherit system; + }, system ? builtins.currentSystem, noDev ? false, php ? pkgs.php, phpPackages ? pkgs.phpPackages}: + +let + composerEnv = import ./composer-env.nix { + inherit (pkgs) stdenv lib writeTextFile fetchurl unzip; + inherit php phpPackages; + }; +in +import ./php-packages.nix { + inherit composerEnv noDev; + inherit (pkgs) fetchurl fetchgit fetchhg fetchsvn; +} diff --git a/pkgs/servers/web-apps/pixelfed/default.nix b/pkgs/servers/web-apps/pixelfed/default.nix new file mode 100644 index 000000000000..fb9b68f4af51 --- /dev/null +++ b/pkgs/servers/web-apps/pixelfed/default.nix @@ -0,0 +1,47 @@ +{ lib +, stdenv +, fetchFromGitHub +, php +, pkgs +, dataDir ? "/var/lib/pixelfed" +, runtimeDir ? "/run/pixelfed" +}: + +let + package = (import ./composition.nix { + inherit pkgs; + inherit (stdenv.hostPlatform) system; + noDev = true; # Disable development dependencies + }).overrideAttrs (attrs : { + installPhase = attrs.installPhase + '' + rm -R $out/bootstrap/cache + # Move static contents for the NixOS module to pick it up, if needed. + mv $out/bootstrap $out/bootstrap-static + mv $out/storage $out/storage-static + ln -s ${dataDir}/.env $out/.env + ln -s ${dataDir}/storage $out/ + ln -s ${dataDir}/storage/app/public $out/public/storage + ln -s ${runtimeDir} $out/bootstrap + chmod +x $out/artisan + ''; + }); +in package.override rec { + pname = "pixelfed"; + version = "0.11.5"; + + # GitHub distribution does not include vendored files + src = fetchFromGitHub { + owner = "pixelfed"; + repo = pname; + rev = "v${version}"; + hash = "sha256-ZrvYKMSx5WymWR46/UKr5jCsclXXzBeY21ju22zeqN0="; + }; + + meta = with lib; { + description = "A federated image sharing platform"; + license = licenses.agpl3Only; + homepage = "https://pixelfed.org/"; + maintainers = with maintainers; [ raitobezarius ]; + platforms = php.meta.platforms; + }; +} diff --git a/pkgs/servers/web-apps/pixelfed/php-packages.nix b/pkgs/servers/web-apps/pixelfed/php-packages.nix new file mode 100644 index 000000000000..1b1643af27fc --- /dev/null +++ b/pkgs/servers/web-apps/pixelfed/php-packages.nix @@ -0,0 +1,1848 @@ +{composerEnv, fetchurl, fetchgit ? null, fetchhg ? null, fetchsvn ? null, noDev ? false}: + +let + packages = { + "asm89/stack-cors" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "asm89-stack-cors-73e5b88775c64ccc0b84fb60836b30dc9d92ac4a"; + src = fetchurl { + url = "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a"; + sha256 = "1idpisw39ba2dic9jl2s2yrkdgbyny9dfxf0qdr5i0wfvvlmbdih"; + }; + }; + }; + "aws/aws-crt-php" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "aws-aws-crt-php-1926277fc71d253dfa820271ac5987bdb193ccf5"; + src = fetchurl { + url = "https://api.github.com/repos/awslabs/aws-crt-php/zipball/1926277fc71d253dfa820271ac5987bdb193ccf5"; + sha256 = "037rdpys895vmk80zgb6r2c77ss2l545qsfma7q55kx9jm39habl"; + }; + }; + }; + "aws/aws-sdk-php" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "aws-aws-sdk-php-42ca7ade60a775fc5eb103d4631df3d366b48a29"; + src = fetchurl { + url = "https://api.github.com/repos/aws/aws-sdk-php/zipball/42ca7ade60a775fc5eb103d4631df3d366b48a29"; + sha256 = "07bcpwsx0by2h5bgrd3bjl6fndzgpbsnaz9g65ga4yb5d36799br"; + }; + }; + }; + "bacon/bacon-qr-code" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "bacon-bacon-qr-code-8674e51bb65af933a5ffaf1c308a660387c35c22"; + src = fetchurl { + url = "https://api.github.com/repos/Bacon/BaconQrCode/zipball/8674e51bb65af933a5ffaf1c308a660387c35c22"; + sha256 = "0hb0w6m5rwzghw2im3yqn6ly2kvb3jgrv8jwra1lwd0ik6ckrngl"; + }; + }; + }; + "beyondcode/laravel-websockets" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "beyondcode-laravel-websockets-9ab87be1d96340979e67b462ea5fd6a8b06e6a02"; + src = fetchurl { + url = "https://api.github.com/repos/beyondcode/laravel-websockets/zipball/9ab87be1d96340979e67b462ea5fd6a8b06e6a02"; + sha256 = "08iz2v882v0nhh23w92nv8yb66kbp03f2nqhz4y5nik04l3kyhrs"; + }; + }; + }; + "brick/math" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "brick-math-ca57d18f028f84f777b2168cd1911b0dee2343ae"; + src = fetchurl { + url = "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae"; + sha256 = "1nr1grrb9g5g3ihx94yk0amp8zx8prkkvg2934ygfc3rrv03cq9w"; + }; + }; + }; + "buzz/laravel-h-captcha" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "buzz-laravel-h-captcha-502a4a15953cde6e0a17df6fec1459a565504d9b"; + src = fetchurl { + url = "https://api.github.com/repos/thinhbuzz/laravel-h-captcha/zipball/502a4a15953cde6e0a17df6fec1459a565504d9b"; + sha256 = "1ki38b3cjxgydn3845d9a7zrxdiqmdq5ahsl7r3nwcf0m0xj9yby"; + }; + }; + }; + "cboden/ratchet" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "cboden-ratchet-5012dc954541b40c5599d286fd40653f5716a38f"; + src = fetchurl { + url = "https://api.github.com/repos/ratchetphp/Ratchet/zipball/5012dc954541b40c5599d286fd40653f5716a38f"; + sha256 = "0bi118mhc74cb4695kdhnh9k3im75zh3fvll12mzz7hfjmsivs17"; + }; + }; + }; + "dasprid/enum" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "dasprid-enum-8e6b6ea76eabbf19ea2bf5b67b98e1860474012f"; + src = fetchurl { + url = "https://api.github.com/repos/DASPRiD/Enum/zipball/8e6b6ea76eabbf19ea2bf5b67b98e1860474012f"; + sha256 = "0cckq42c9iyjfv7xmy6rl4xj3dn80v9k8qzc3ppdjm4wgj43rrkz"; + }; + }; + }; + "defuse/php-encryption" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "defuse-php-encryption-77880488b9954b7884c25555c2a0ea9e7053f9d2"; + src = fetchurl { + url = "https://api.github.com/repos/defuse/php-encryption/zipball/77880488b9954b7884c25555c2a0ea9e7053f9d2"; + sha256 = "1lcvpg56nw72cxyh6sga7fx94qw9l0l1y78z7y7ny3hgdniwhihx"; + }; + }; + }; + "dflydev/dot-access-data" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "dflydev-dot-access-data-f41715465d65213d644d3141a6a93081be5d3549"; + src = fetchurl { + url = "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/f41715465d65213d644d3141a6a93081be5d3549"; + sha256 = "1vgbjrq8qh06r26y5nlxfin4989r3h7dib1jifb2l3cjdn1r5bmj"; + }; + }; + }; + "doctrine/cache" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "doctrine-cache-1ca8f21980e770095a31456042471a57bc4c68fb"; + src = fetchurl { + url = "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb"; + sha256 = "1p8ia9g3mqz71bv4x8q1ng1fgcidmyksbsli1fjbialpgjk9k1ss"; + }; + }; + }; + "doctrine/dbal" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "doctrine-dbal-c480849ca3ad6706a39c970cdfe6888fa8a058b8"; + src = fetchurl { + url = "https://api.github.com/repos/doctrine/dbal/zipball/c480849ca3ad6706a39c970cdfe6888fa8a058b8"; + sha256 = "15j98h80li6m1aj53p8ddy0lkbkanc5kdy6xrikpdd6zhmsfgq9k"; + }; + }; + }; + "doctrine/deprecations" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "doctrine-deprecations-0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de"; + src = fetchurl { + url = "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de"; + sha256 = "1sk1f020n0w7p7r4rsi7wnww85vljrim1i5h9wb0qiz2c4l8jj09"; + }; + }; + }; + "doctrine/event-manager" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "doctrine-event-manager-95aa4cb529f1e96576f3fda9f5705ada4056a520"; + src = fetchurl { + url = "https://api.github.com/repos/doctrine/event-manager/zipball/95aa4cb529f1e96576f3fda9f5705ada4056a520"; + sha256 = "0xi2s28jmmvrndg1yd0r5s10d9a0q6j2dxdbazvcbws9waf0yrvj"; + }; + }; + }; + "doctrine/inflector" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "doctrine-inflector-d9d313a36c872fd6ee06d9a6cbcf713eaa40f024"; + src = fetchurl { + url = "https://api.github.com/repos/doctrine/inflector/zipball/d9d313a36c872fd6ee06d9a6cbcf713eaa40f024"; + sha256 = "1z6y0mxqadarw76whppcl0h0cj7p5n6k7mxihggavq46i2wf7nhj"; + }; + }; + }; + "doctrine/lexer" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "doctrine-lexer-84a527db05647743d50373e0ec53a152f2cde568"; + src = fetchurl { + url = "https://api.github.com/repos/doctrine/lexer/zipball/84a527db05647743d50373e0ec53a152f2cde568"; + sha256 = "1wn3p8vjq3hqzn0k6dmwxdj2ykwk3653h5yw7a57avz9qkb86z70"; + }; + }; + }; + "dragonmantank/cron-expression" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "dragonmantank-cron-expression-782ca5968ab8b954773518e9e49a6f892a34b2a8"; + src = fetchurl { + url = "https://api.github.com/repos/dragonmantank/cron-expression/zipball/782ca5968ab8b954773518e9e49a6f892a34b2a8"; + sha256 = "18pxn1v3b2yhwzky22p4wn520h89rcrihl7l6hd0p769vk1b2qg9"; + }; + }; + }; + "egulias/email-validator" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "egulias-email-validator-3a85486b709bc384dae8eb78fb2eec649bdb64ff"; + src = fetchurl { + url = "https://api.github.com/repos/egulias/EmailValidator/zipball/3a85486b709bc384dae8eb78fb2eec649bdb64ff"; + sha256 = "1vbwd4fgg6910pfy0dpzkaf5djwzpx5nqr43hy2qpmkp11mkbbxw"; + }; + }; + }; + "evenement/evenement" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "evenement-evenement-531bfb9d15f8aa57454f5f0285b18bec903b8fb7"; + src = fetchurl { + url = "https://api.github.com/repos/igorw/evenement/zipball/531bfb9d15f8aa57454f5f0285b18bec903b8fb7"; + sha256 = "02mi1lrga41caa25whr6sj9hmmlfjp10l0d0fq8kc3d4483pm9rr"; + }; + }; + }; + "ezyang/htmlpurifier" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "ezyang-htmlpurifier-523407fb06eb9e5f3d59889b3978d5bfe94299c8"; + src = fetchurl { + url = "https://api.github.com/repos/ezyang/htmlpurifier/zipball/523407fb06eb9e5f3d59889b3978d5bfe94299c8"; + sha256 = "1g65bndiwd2dmq5p6f29lh66x8lwxhpp1pmd619qbm8bnsy7hvki"; + }; + }; + }; + "facade/ignition-contracts" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "facade-ignition-contracts-3c921a1cdba35b68a7f0ccffc6dffc1995b18267"; + src = fetchurl { + url = "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267"; + sha256 = "1nsjwd1k9q8qmfvh7m50rs42yxzxyq4f56r6dq205gwcmqsjb2j0"; + }; + }; + }; + "fig/http-message-util" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "fig-http-message-util-9d94dc0154230ac39e5bf89398b324a86f63f765"; + src = fetchurl { + url = "https://api.github.com/repos/php-fig/http-message-util/zipball/9d94dc0154230ac39e5bf89398b324a86f63f765"; + sha256 = "1cbhchmvh8alqdaf31rmwldyrpi5cgmzgair1gnjv6nxn99m3pqf"; + }; + }; + }; + "firebase/php-jwt" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "firebase-php-jwt-4dd1e007f22a927ac77da5a3fbb067b42d3bc224"; + src = fetchurl { + url = "https://api.github.com/repos/firebase/php-jwt/zipball/4dd1e007f22a927ac77da5a3fbb067b42d3bc224"; + sha256 = "0wl5glq7bzqrph6pm6js05qnydp0rlchc494cjhbv54rawyb6wfs"; + }; + }; + }; + "fruitcake/laravel-cors" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "fruitcake-laravel-cors-783a74f5e3431d7b9805be8afb60fd0a8f743534"; + src = fetchurl { + url = "https://api.github.com/repos/fruitcake/laravel-cors/zipball/783a74f5e3431d7b9805be8afb60fd0a8f743534"; + sha256 = "13mqhjks048fb5042l0rfrr52rz7knp9gjn8qviw9cx76kllw2c9"; + }; + }; + }; + "fruitcake/php-cors" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "fruitcake-php-cors-58571acbaa5f9f462c9c77e911700ac66f446d4e"; + src = fetchurl { + url = "https://api.github.com/repos/fruitcake/php-cors/zipball/58571acbaa5f9f462c9c77e911700ac66f446d4e"; + sha256 = "18xm69q4dk9zqfwgp938y2byhlyy9lr5x5qln4k2mg8cq8xr2sm1"; + }; + }; + }; + "graham-campbell/result-type" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "graham-campbell-result-type-672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831"; + src = fetchurl { + url = "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831"; + sha256 = "156zbfs19r9g543phlpjwhqin3k2x4dsvr5p0wk7rk4j0wwp8l2v"; + }; + }; + }; + "guzzlehttp/guzzle" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "guzzlehttp-guzzle-b50a2a1251152e43f6a37f0fa053e730a67d25ba"; + src = fetchurl { + url = "https://api.github.com/repos/guzzle/guzzle/zipball/b50a2a1251152e43f6a37f0fa053e730a67d25ba"; + sha256 = "0cy828r0kafx58jh0k1cy17y77qh248d9kfk9ncn9pyq2q5v9p9p"; + }; + }; + }; + "guzzlehttp/promises" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "guzzlehttp-promises-b94b2807d85443f9719887892882d0329d1e2598"; + src = fetchurl { + url = "https://api.github.com/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598"; + sha256 = "1vvac7y5ax955qjg7dyjmaw3vab9v2lypjygap0040rv3z4x9vz8"; + }; + }; + }; + "guzzlehttp/psr7" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "guzzlehttp-psr7-3cf1b6d4f0c820a2cf8bcaec39fc698f3443b5cf"; + src = fetchurl { + url = "https://api.github.com/repos/guzzle/psr7/zipball/3cf1b6d4f0c820a2cf8bcaec39fc698f3443b5cf"; + sha256 = "1zgnykvv9fz2adava0gb2sm8wgnxkqj1jy2fky1v6vk1r7xdmr3j"; + }; + }; + }; + "guzzlehttp/uri-template" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "guzzlehttp-uri-template-b945d74a55a25a949158444f09ec0d3c120d69e2"; + src = fetchurl { + url = "https://api.github.com/repos/guzzle/uri-template/zipball/b945d74a55a25a949158444f09ec0d3c120d69e2"; + sha256 = "02vd4r2di8xh9n5awfjy1lyb7vn5gkaynbiiqilm8did0r89qdhf"; + }; + }; + }; + "intervention/image" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "intervention-image-04be355f8d6734c826045d02a1079ad658322dad"; + src = fetchurl { + url = "https://api.github.com/repos/Intervention/image/zipball/04be355f8d6734c826045d02a1079ad658322dad"; + sha256 = "1cbg43hm2jgwb7gm1r9xcr4cpx8ng1zr93zx6shk9xhjlssnv0bx"; + }; + }; + }; + "jaybizzle/crawler-detect" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "jaybizzle-crawler-detect-62d0e6b38f6715c673e156ffb0fc894791de3452"; + src = fetchurl { + url = "https://api.github.com/repos/JayBizzle/Crawler-Detect/zipball/62d0e6b38f6715c673e156ffb0fc894791de3452"; + sha256 = "19wqayfrb38609hn90bb3y7zkr9rmpk17w7a430gxg6408hrpfm7"; + }; + }; + }; + "jenssegers/agent" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "jenssegers-agent-daa11c43729510b3700bc34d414664966b03bffe"; + src = fetchurl { + url = "https://api.github.com/repos/jenssegers/agent/zipball/daa11c43729510b3700bc34d414664966b03bffe"; + sha256 = "0f0wy69w9mdsajfgriwlnpqhqxp83q44p6ggcd6h1bi8ri3h0897"; + }; + }; + }; + "laravel/framework" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "laravel-framework-9239128cfb4d22afefb64060dfecf53e82987267"; + src = fetchurl { + url = "https://api.github.com/repos/laravel/framework/zipball/9239128cfb4d22afefb64060dfecf53e82987267"; + sha256 = "1lpkhhhga9g5njig1qf8n2fs0szni5al19cr3ilnlqhy55dmmrb6"; + }; + }; + }; + "laravel/helpers" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "laravel-helpers-4dd0f9436d3911611622a6ced8329a1710576f60"; + src = fetchurl { + url = "https://api.github.com/repos/laravel/helpers/zipball/4dd0f9436d3911611622a6ced8329a1710576f60"; + sha256 = "1vqfrxf9q2mmgj5ckfnayryx0ia1fvyp6jpp8b689wb4a4vgpa8c"; + }; + }; + }; + "laravel/horizon" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "laravel-horizon-b49be302566365e0e4d517aac9995a8fe20b580e"; + src = fetchurl { + url = "https://api.github.com/repos/laravel/horizon/zipball/b49be302566365e0e4d517aac9995a8fe20b580e"; + sha256 = "0q2f9q670cfxnzdaij4g5h1h5nd8xjh72hksqcxl469nxnnz0f16"; + }; + }; + }; + "laravel/passport" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "laravel-passport-4bfdb9610575a0c84a6810701f4fd45fb8ab3888"; + src = fetchurl { + url = "https://api.github.com/repos/laravel/passport/zipball/4bfdb9610575a0c84a6810701f4fd45fb8ab3888"; + sha256 = "0nkp1gkvyp16i1cpb7wn5slbichyv12rpjfq35s7riyaynhbpkzr"; + }; + }; + }; + "laravel/serializable-closure" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "laravel-serializable-closure-f23fe9d4e95255dacee1bf3525e0810d1a1b0f37"; + src = fetchurl { + url = "https://api.github.com/repos/laravel/serializable-closure/zipball/f23fe9d4e95255dacee1bf3525e0810d1a1b0f37"; + sha256 = "0dyvqph5q1lb6gl6ga4b1xkziqzj6s2ia5pbd7h40anm4sh3z8dl"; + }; + }; + }; + "laravel/tinker" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "laravel-tinker-04a2d3bd0d650c0764f70bf49d1ee39393e4eb10"; + src = fetchurl { + url = "https://api.github.com/repos/laravel/tinker/zipball/04a2d3bd0d650c0764f70bf49d1ee39393e4eb10"; + sha256 = "06rivrmcf8m8hm4vn9s7wwpfmgl89p73b78dm0qx26rs0lpr36p0"; + }; + }; + }; + "laravel/ui" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "laravel-ui-65ec5c03f7fee2c8ecae785795b829a15be48c2c"; + src = fetchurl { + url = "https://api.github.com/repos/laravel/ui/zipball/65ec5c03f7fee2c8ecae785795b829a15be48c2c"; + sha256 = "0hr8kkbxvxxidnw86r1i92938wajhskv68zjn1627h1i16b10ysm"; + }; + }; + }; + "lcobucci/clock" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "lcobucci-clock-039ef98c6b57b101d10bd11d8fdfda12cbd996dc"; + src = fetchurl { + url = "https://api.github.com/repos/lcobucci/clock/zipball/039ef98c6b57b101d10bd11d8fdfda12cbd996dc"; + sha256 = "03hlh6vl04jhhjkk6ps4wikypkg849wq8pdg221359l82ivz16hg"; + }; + }; + }; + "lcobucci/jwt" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "lcobucci-jwt-4d7de2fe0d51a96418c0d04004986e410e87f6b4"; + src = fetchurl { + url = "https://api.github.com/repos/lcobucci/jwt/zipball/4d7de2fe0d51a96418c0d04004986e410e87f6b4"; + sha256 = "0ripqfq90zf5xgap22zkhw2n5m8ip872lj39bd7fvwcchfjc5rx0"; + }; + }; + }; + "league/commonmark" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "league-commonmark-d44a24690f16b8c1808bf13b1bd54ae4c63ea048"; + src = fetchurl { + url = "https://api.github.com/repos/thephpleague/commonmark/zipball/d44a24690f16b8c1808bf13b1bd54ae4c63ea048"; + sha256 = "1qx99m1qa2g3l6r2fim3rak6qh28zjj8sqjj86nq743dm3yszygw"; + }; + }; + }; + "league/config" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "league-config-754b3604fb2984c71f4af4a9cbe7b57f346ec1f3"; + src = fetchurl { + url = "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3"; + sha256 = "0yjb85cd0qa0mra995863dij2hmcwk9x124vs8lrwiylb0l3mn8s"; + }; + }; + }; + "league/event" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "league-event-d2cc124cf9a3fab2bb4ff963307f60361ce4d119"; + src = fetchurl { + url = "https://api.github.com/repos/thephpleague/event/zipball/d2cc124cf9a3fab2bb4ff963307f60361ce4d119"; + sha256 = "1fc8aj0mpbrnh3b93gn8pypix28nf2gfvi403kfl7ibh5iz6ds5l"; + }; + }; + }; + "league/flysystem" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "league-flysystem-81e87e74dd5213795c7846d65089712d2dda90ce"; + src = fetchurl { + url = "https://api.github.com/repos/thephpleague/flysystem/zipball/81e87e74dd5213795c7846d65089712d2dda90ce"; + sha256 = "1lhcl71nbbkq27ssd92ilwbjicddnlwwf4ggihxwwv213847bdl9"; + }; + }; + }; + "league/flysystem-aws-s3-v3" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "league-flysystem-aws-s3-v3-645e14e4a80bd2da8b01e57388e7296a695a80c2"; + src = fetchurl { + url = "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/645e14e4a80bd2da8b01e57388e7296a695a80c2"; + sha256 = "0dqyjdxwcdfb2jmi4739mz2g6rgnkana5lfbm3a4hz9xnxlw77wq"; + }; + }; + }; + "league/iso3166" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "league-iso3166-74a08ffe08d4e0dd8ab0aac8c34ea5a641d57669"; + src = fetchurl { + url = "https://api.github.com/repos/thephpleague/iso3166/zipball/74a08ffe08d4e0dd8ab0aac8c34ea5a641d57669"; + sha256 = "0mh0rz7imb3zwi7lfhxinwfwqlrn7anp1xhskx6pg19w3jjm5rn4"; + }; + }; + }; + "league/mime-type-detection" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "league-mime-type-detection-ff6248ea87a9f116e78edd6002e39e5128a0d4dd"; + src = fetchurl { + url = "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ff6248ea87a9f116e78edd6002e39e5128a0d4dd"; + sha256 = "1a63nvqd6cz3vck3y8vjswn6c3cfwh13p0cn0ci5pqdf0bgjvvfz"; + }; + }; + }; + "league/oauth2-server" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "league-oauth2-server-eed31d86d8cc8e6e9c9f58fbb2113494f8b41e24"; + src = fetchurl { + url = "https://api.github.com/repos/thephpleague/oauth2-server/zipball/eed31d86d8cc8e6e9c9f58fbb2113494f8b41e24"; + sha256 = "19rz6gbvm3hj2l3hcwhdaqqgw5k3yr0yp47bl0bd7pm0wc4hdqk0"; + }; + }; + }; + "league/uri" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "league-uri-a700b4656e4c54371b799ac61e300ab25a2d1d39"; + src = fetchurl { + url = "https://api.github.com/repos/thephpleague/uri/zipball/a700b4656e4c54371b799ac61e300ab25a2d1d39"; + sha256 = "1sjh26mapy1jrlryp6c55s7ghsamwabak1psz5lfs5d7z06vbasy"; + }; + }; + }; + "league/uri-interfaces" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "league-uri-interfaces-00e7e2943f76d8cb50c7dfdc2f6dee356e15e383"; + src = fetchurl { + url = "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/00e7e2943f76d8cb50c7dfdc2f6dee356e15e383"; + sha256 = "01jllf6n9fs4yjcf6sjc4ivqp7k7dkqhbpz354bq9mr14njsjv6x"; + }; + }; + }; + "mobiledetect/mobiledetectlib" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "mobiledetect-mobiledetectlib-fc9cccd4d3706d5a7537b562b59cc18f9e4c0cb1"; + src = fetchurl { + url = "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/fc9cccd4d3706d5a7537b562b59cc18f9e4c0cb1"; + sha256 = "1qmkrbdrfnxgd7lcgw7g30r8qc6yg1c9lkdam54zhgxhcc2ryxqs"; + }; + }; + }; + "monolog/monolog" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "monolog-monolog-f259e2b15fb95494c83f52d3caad003bbf5ffaa1"; + src = fetchurl { + url = "https://api.github.com/repos/Seldaek/monolog/zipball/f259e2b15fb95494c83f52d3caad003bbf5ffaa1"; + sha256 = "0lz7lgr1bcxsh4c63z8k26bxawkx14h689wgdiap8992rf97kbk2"; + }; + }; + }; + "mtdowling/jmespath.php" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "mtdowling-jmespath.php-9b87907a81b87bc76d19a7fb2d61e61486ee9edb"; + src = fetchurl { + url = "https://api.github.com/repos/jmespath/jmespath.php/zipball/9b87907a81b87bc76d19a7fb2d61e61486ee9edb"; + sha256 = "1ig3gi6f8gisagcn876598ps48s86s6m0c82diyksylarg3yn0yd"; + }; + }; + }; + "nesbot/carbon" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "nesbot-carbon-496712849902241f04902033b0441b269effe001"; + src = fetchurl { + url = "https://api.github.com/repos/briannesbitt/Carbon/zipball/496712849902241f04902033b0441b269effe001"; + sha256 = "1bs1a0cji8fyjw7bys23da6162hymwps0pzm0mqib5rx4g0f1v0x"; + }; + }; + }; + "nette/schema" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "nette-schema-abbdbb70e0245d5f3bf77874cea1dfb0c930d06f"; + src = fetchurl { + url = "https://api.github.com/repos/nette/schema/zipball/abbdbb70e0245d5f3bf77874cea1dfb0c930d06f"; + sha256 = "16i8gim0jpmmbq0pp4faw8kn2448yvpgsd1zvipbv9xrk37vah5q"; + }; + }; + }; + "nette/utils" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "nette-utils-cacdbf5a91a657ede665c541eda28941d4b09c1e"; + src = fetchurl { + url = "https://api.github.com/repos/nette/utils/zipball/cacdbf5a91a657ede665c541eda28941d4b09c1e"; + sha256 = "0v3as5xdmr9j7d4q4ly18f7g8g0sjcy25l4ispsdp60byldi7m8h"; + }; + }; + }; + "nikic/php-parser" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "nikic-php-parser-6bb5176bc4af8bcb7d926f88718db9b96a2d4290"; + src = fetchurl { + url = "https://api.github.com/repos/nikic/PHP-Parser/zipball/6bb5176bc4af8bcb7d926f88718db9b96a2d4290"; + sha256 = "1q7a8wmjn9x28v5snxxriiih3vj12aqc3za0w6pdhbxs9ywxsg9n"; + }; + }; + }; + "nunomaduro/termwind" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "nunomaduro-termwind-8ab0b32c8caa4a2e09700ea32925441385e4a5dc"; + src = fetchurl { + url = "https://api.github.com/repos/nunomaduro/termwind/zipball/8ab0b32c8caa4a2e09700ea32925441385e4a5dc"; + sha256 = "1g75vpq7014s5yd6bvj78b88ia31slkikdhjv8iprz987qm5dnl7"; + }; + }; + }; + "nyholm/psr7" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "nyholm-psr7-f734364e38a876a23be4d906a2a089e1315be18a"; + src = fetchurl { + url = "https://api.github.com/repos/Nyholm/psr7/zipball/f734364e38a876a23be4d906a2a089e1315be18a"; + sha256 = "0w8i5l1qg8dkc1zsyz1gpwn2awgkhlm295l1b8smmzabqdc65dcx"; + }; + }; + }; + "paragonie/constant_time_encoding" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "paragonie-constant_time_encoding-58c3f47f650c94ec05a151692652a868995d2938"; + src = fetchurl { + url = "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/58c3f47f650c94ec05a151692652a868995d2938"; + sha256 = "0i9km0lzvc7df9758fm1p3y0679pzvr5m9x3mrz0d2hxlppsm764"; + }; + }; + }; + "paragonie/random_compat" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "paragonie-random_compat-996434e5492cb4c3edcb9168db6fbb1359ef965a"; + src = fetchurl { + url = "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a"; + sha256 = "0ky7lal59dihf969r1k3pb96ql8zzdc5062jdbg69j6rj0scgkyx"; + }; + }; + }; + "paragonie/sodium_compat" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "paragonie-sodium_compat-cb15e403ecbe6a6cc515f855c310eb6b1872a933"; + src = fetchurl { + url = "https://api.github.com/repos/paragonie/sodium_compat/zipball/cb15e403ecbe6a6cc515f855c310eb6b1872a933"; + sha256 = "01jxl868i8bkx5szgp2fp6mi438ani80bqkdcc7rnn9z22lrsm78"; + }; + }; + }; + "pbmedia/laravel-ffmpeg" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "pbmedia-laravel-ffmpeg-820e7f1290918233a59d85f25bc78796dc3f57bb"; + src = fetchurl { + url = "https://api.github.com/repos/protonemedia/laravel-ffmpeg/zipball/820e7f1290918233a59d85f25bc78796dc3f57bb"; + sha256 = "1lp7wz2jrfwcnzpi1nv1rixqqmr244lqbjz6zw3p6pxkb50wdwsd"; + }; + }; + }; + "php-ffmpeg/php-ffmpeg" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "php-ffmpeg-php-ffmpeg-eace6f174ff6d206ba648483ebe59760f7f6a0e1"; + src = fetchurl { + url = "https://api.github.com/repos/PHP-FFMpeg/PHP-FFMpeg/zipball/eace6f174ff6d206ba648483ebe59760f7f6a0e1"; + sha256 = "0x0cp8r8vdcsyj92wyfk4khq6w5a6522imqyf83q00xf9fcxgm0a"; + }; + }; + }; + "php-http/message-factory" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "php-http-message-factory-a478cb11f66a6ac48d8954216cfed9aa06a501a1"; + src = fetchurl { + url = "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1"; + sha256 = "13drpc83bq332hz0b97whibkm7jpk56msq4yppw9nmrchzwgy7cs"; + }; + }; + }; + "phpoption/phpoption" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "phpoption-phpoption-dd3a383e599f49777d8b628dadbb90cae435b87e"; + src = fetchurl { + url = "https://api.github.com/repos/schmittjoh/php-option/zipball/dd3a383e599f49777d8b628dadbb90cae435b87e"; + sha256 = "029gpfa66hwg395jvf7swcvrj085wsw5fw6041nrl5kbc36fvwlb"; + }; + }; + }; + "phpseclib/phpseclib" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "phpseclib-phpseclib-665d289f59e646a259ebf13f29be7f6f54cab24b"; + src = fetchurl { + url = "https://api.github.com/repos/phpseclib/phpseclib/zipball/665d289f59e646a259ebf13f29be7f6f54cab24b"; + sha256 = "15l7plmvgq51dly43vsqa66v03m93hcfndapmmjrqywqhb2g4jwv"; + }; + }; + }; + "pixelfed/fractal" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "pixelfed-fractal-faff10c9f3e3300b1571ef41926f933a9cce4782"; + src = fetchurl { + url = "https://api.github.com/repos/pixelfed/fractal/zipball/faff10c9f3e3300b1571ef41926f933a9cce4782"; + sha256 = "054zbf39ghxk7xydphikxpgkw7hivxmjqzwpcqnpw2vpn3giwfay"; + }; + }; + }; + "pixelfed/laravel-snowflake" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "pixelfed-laravel-snowflake-69255870dcbf949feac889dfc09180a6fef77f6d"; + src = fetchurl { + url = "https://api.github.com/repos/pixelfed/laravel-snowflake/zipball/69255870dcbf949feac889dfc09180a6fef77f6d"; + sha256 = "1wsgl9066z1zs751msqn5ydc6mz9m22wchy56qk9igjnjmk6g2pj"; + }; + }; + }; + "pixelfed/zttp" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "pixelfed-zttp-e78af39d75171f360ab4c32eed1c7a71b67b5e3b"; + src = fetchurl { + url = "https://api.github.com/repos/pixelfed/zttp/zipball/e78af39d75171f360ab4c32eed1c7a71b67b5e3b"; + sha256 = "0rm4rfkx9kirjfyx0rpvhl7885w4b576f0dra9wjxjz6l3gk2bp0"; + }; + }; + }; + "pragmarx/google2fa" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "pragmarx-google2fa-80c3d801b31fe165f8fe99ea085e0a37834e1be3"; + src = fetchurl { + url = "https://api.github.com/repos/antonioribeiro/google2fa/zipball/80c3d801b31fe165f8fe99ea085e0a37834e1be3"; + sha256 = "0qfjgkl02ifc0zicv3d5d6zs8mwpq68bg211jy3psgghnqpxyhlm"; + }; + }; + }; + "predis/predis" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "predis-predis-a77a43913a74f9331f637bb12867eb8e274814e5"; + src = fetchurl { + url = "https://api.github.com/repos/predis/predis/zipball/a77a43913a74f9331f637bb12867eb8e274814e5"; + sha256 = "17xby6nk7nv1gww7hgsd1rzm40ghxx6xg6pfb3zqm40vsg25grrg"; + }; + }; + }; + "psr/cache" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "psr-cache-aa5030cfa5405eccfdcb1083ce040c2cb8d253bf"; + src = fetchurl { + url = "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf"; + sha256 = "07rnyjwb445sfj30v5ny3gfsgc1m7j7cyvwjgs2cm9slns1k1ml8"; + }; + }; + }; + "psr/clock" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "psr-clock-e41a24703d4560fd0acb709162f73b8adfc3aa0d"; + src = fetchurl { + url = "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d"; + sha256 = "0wz5b8hgkxn3jg88cb3901hj71axsj0fil6pwl413igghch6i8kj"; + }; + }; + }; + "psr/container" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "psr-container-c71ecc56dfe541dbd90c5360474fbc405f8d5963"; + src = fetchurl { + url = "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963"; + sha256 = "1mvan38yb65hwk68hl0p7jymwzr4zfnaxmwjbw7nj3rsknvga49i"; + }; + }; + }; + "psr/event-dispatcher" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "psr-event-dispatcher-dbefd12671e8a14ec7f180cab83036ed26714bb0"; + src = fetchurl { + url = "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0"; + sha256 = "05nicsd9lwl467bsv4sn44fjnnvqvzj1xqw2mmz9bac9zm66fsjd"; + }; + }; + }; + "psr/http-client" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "psr-http-client-2dfb5f6c5eff0e91e20e913f8c5452ed95b86621"; + src = fetchurl { + url = "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621"; + sha256 = "0cmkifa3ji1r8kn3y1rwg81rh8g2crvnhbv2am6d688dzsbw967v"; + }; + }; + }; + "psr/http-factory" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "psr-http-factory-12ac7fcd07e5b077433f5f2bee95b3a771bf61be"; + src = fetchurl { + url = "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be"; + sha256 = "0inbnqpc5bfhbbda9dwazsrw9xscfnc8rdx82q1qm3r446mc1vds"; + }; + }; + }; + "psr/http-message" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "psr-http-message-f6561bf28d520154e4b0ec72be95418abe6d9363"; + src = fetchurl { + url = "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363"; + sha256 = "195dd67hva9bmr52iadr4kyp2gw2f5l51lplfiay2pv6l9y4cf45"; + }; + }; + }; + "psr/log" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "psr-log-fe5ea303b0887d5caefd3d431c3e61ad47037001"; + src = fetchurl { + url = "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001"; + sha256 = "0a0rwg38vdkmal3nwsgx58z06qkfl85w2yvhbgwg45anr0b3bhmv"; + }; + }; + }; + "psr/simple-cache" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "psr-simple-cache-764e0b3939f5ca87cb904f570ef9be2d78a07865"; + src = fetchurl { + url = "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865"; + sha256 = "0hgcanvd9gqwkaaaq41lh8fsfdraxmp2n611lvqv69jwm1iy76g8"; + }; + }; + }; + "psy/psysh" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "psy-psysh-722317c9f5627e588788e340f29b923e58f92f54"; + src = fetchurl { + url = "https://api.github.com/repos/bobthecow/psysh/zipball/722317c9f5627e588788e340f29b923e58f92f54"; + sha256 = "122fc66rcv2jwpw2c8di471r4yxcm1289wvpsnadaq345nj3v4bd"; + }; + }; + }; + "pusher/pusher-php-server" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "pusher-pusher-php-server-4ace4873873b06c25cecb2dd6d9fdcbf2f20b640"; + src = fetchurl { + url = "https://api.github.com/repos/pusher/pusher-http-php/zipball/4ace4873873b06c25cecb2dd6d9fdcbf2f20b640"; + sha256 = "0kkzhazdxqr6j225gyrbzmxfjc9zz89nckxbmx97bx8p4lrpdk9k"; + }; + }; + }; + "ralouphie/getallheaders" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "ralouphie-getallheaders-120b605dfeb996808c31b6477290a714d356e822"; + src = fetchurl { + url = "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822"; + sha256 = "1bv7ndkkankrqlr2b4kw7qp3fl0dxi6bp26bnim6dnlhavd6a0gg"; + }; + }; + }; + "ramsey/collection" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "ramsey-collection-a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5"; + src = fetchurl { + url = "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5"; + sha256 = "0y5s9rbs023sw94yzvxr8fn9rr7xw03f08zmc9n9jl49zlr5s52p"; + }; + }; + }; + "ramsey/uuid" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "ramsey-uuid-433b2014e3979047db08a17a205f410ba3869cf2"; + src = fetchurl { + url = "https://api.github.com/repos/ramsey/uuid/zipball/433b2014e3979047db08a17a205f410ba3869cf2"; + sha256 = "1yvdbbgblnzzv1zjzwggpayfb8n2kpbwki9dnxc42g4wrxissb8j"; + }; + }; + }; + "ratchet/rfc6455" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "ratchet-rfc6455-7c964514e93456a52a99a20fcfa0de242a43ccdb"; + src = fetchurl { + url = "https://api.github.com/repos/ratchetphp/RFC6455/zipball/7c964514e93456a52a99a20fcfa0de242a43ccdb"; + sha256 = "1jw7by1y4aky6v1xjr7fl2y4bwag57mnfqqsbn8sxcz99q0yjzlb"; + }; + }; + }; + "react/cache" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "react-cache-d47c472b64aa5608225f47965a484b75c7817d5b"; + src = fetchurl { + url = "https://api.github.com/repos/reactphp/cache/zipball/d47c472b64aa5608225f47965a484b75c7817d5b"; + sha256 = "0qz43ah5jrbixbzndzx70vyfg5mxg0qsha0bhc136jrrgp9sk4sp"; + }; + }; + }; + "react/dns" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "react-dns-a5427e7dfa47713e438016905605819d101f238c"; + src = fetchurl { + url = "https://api.github.com/repos/reactphp/dns/zipball/a5427e7dfa47713e438016905605819d101f238c"; + sha256 = "1dr6hwkxdmkg8pnj497v4x566fyn92h3qrkbfvgsrmhi3cc3gidb"; + }; + }; + }; + "react/event-loop" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "react-event-loop-187fb56f46d424afb6ec4ad089269c72eec2e137"; + src = fetchurl { + url = "https://api.github.com/repos/reactphp/event-loop/zipball/187fb56f46d424afb6ec4ad089269c72eec2e137"; + sha256 = "1nnxfdnigzx7zdc521s0fy4467z809dmw8488ig7r1yypv4ri1yc"; + }; + }; + }; + "react/http" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "react-http-aa7512ee17258c88466de30f9cb44ec5f9df3ff3"; + src = fetchurl { + url = "https://api.github.com/repos/reactphp/http/zipball/aa7512ee17258c88466de30f9cb44ec5f9df3ff3"; + sha256 = "08zwgskkf7c3ixqf70r4xld0lrcdj1nk4l2jg994z8pyi2j3biyq"; + }; + }; + }; + "react/promise" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "react-promise-234f8fd1023c9158e2314fa9d7d0e6a83db42910"; + src = fetchurl { + url = "https://api.github.com/repos/reactphp/promise/zipball/234f8fd1023c9158e2314fa9d7d0e6a83db42910"; + sha256 = "0p3n6jzlny75qcqwvrz0920ry3p902nq4v64cpg9ndd0g79dbdz4"; + }; + }; + }; + "react/promise-stream" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "react-promise-stream-e6d2805e09ad50c4896f65f5e8705fe4ee7731a3"; + src = fetchurl { + url = "https://api.github.com/repos/reactphp/promise-stream/zipball/e6d2805e09ad50c4896f65f5e8705fe4ee7731a3"; + sha256 = "0vkxqznj221qgqdndag9gx8dvmaqki37r7ipl6jwgn11hw8xpka9"; + }; + }; + }; + "react/promise-timer" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "react-promise-timer-aa7a73c74b8d8c0f622f5982ff7b0351bc29e495"; + src = fetchurl { + url = "https://api.github.com/repos/reactphp/promise-timer/zipball/aa7a73c74b8d8c0f622f5982ff7b0351bc29e495"; + sha256 = "1a7l9by70ygpp101arn217zvrpaddzsm2fywxd0nzc964jcq5mgd"; + }; + }; + }; + "react/socket" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "react-socket-81e1b4d7f5450ebd8d2e9a95bb008bb15ca95a7b"; + src = fetchurl { + url = "https://api.github.com/repos/reactphp/socket/zipball/81e1b4d7f5450ebd8d2e9a95bb008bb15ca95a7b"; + sha256 = "0s22mfcima1plb5i10dy8kd9zz4h0apxk9s8frydc3kd27vl6fvv"; + }; + }; + }; + "react/stream" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "react-stream-7a423506ee1903e89f1e08ec5f0ed430ff784ae9"; + src = fetchurl { + url = "https://api.github.com/repos/reactphp/stream/zipball/7a423506ee1903e89f1e08ec5f0ed430ff784ae9"; + sha256 = "1vcn792785hg0991vz3fhdmwl5y47z4g7hvly04y03zmbc0qx0mf"; + }; + }; + }; + "ringcentral/psr7" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "ringcentral-psr7-360faaec4b563958b673fb52bbe94e37f14bc686"; + src = fetchurl { + url = "https://api.github.com/repos/ringcentral/psr7/zipball/360faaec4b563958b673fb52bbe94e37f14bc686"; + sha256 = "1j59spmy83gyzc05wl2j92ly51d67bpvgd7nmxma8a8j8vrh063w"; + }; + }; + }; + "spatie/db-dumper" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "spatie-db-dumper-129b8254b2c9f10881a754a692bd9507b09a1893"; + src = fetchurl { + url = "https://api.github.com/repos/spatie/db-dumper/zipball/129b8254b2c9f10881a754a692bd9507b09a1893"; + sha256 = "0q0xi4kcqlsghy8pmlr7sx7h6fbrwxbrrhnppsfnczjbkx5y76fv"; + }; + }; + }; + "spatie/image-optimizer" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "spatie-image-optimizer-d997e01ba980b2769ddca2f00badd3b80c2a2512"; + src = fetchurl { + url = "https://api.github.com/repos/spatie/image-optimizer/zipball/d997e01ba980b2769ddca2f00badd3b80c2a2512"; + sha256 = "0pqyx30ylwsgdh1rz946crjphb0p4qvdvkw4lcbq99g6v36p7ngk"; + }; + }; + }; + "spatie/laravel-backup" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "spatie-laravel-backup-f073c8c9f5715272060e4bdceecedd02c29005f9"; + src = fetchurl { + url = "https://api.github.com/repos/spatie/laravel-backup/zipball/f073c8c9f5715272060e4bdceecedd02c29005f9"; + sha256 = "1p1v7wag0iqkq6h256k1xqmgf50wx4iygzi12wf942g6sgsf1yll"; + }; + }; + }; + "spatie/laravel-image-optimizer" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "spatie-laravel-image-optimizer-cd8945e47b9fd01bc7b770eecd57c56f46c47422"; + src = fetchurl { + url = "https://api.github.com/repos/spatie/laravel-image-optimizer/zipball/cd8945e47b9fd01bc7b770eecd57c56f46c47422"; + sha256 = "0zp3dnnj3l9xsz4f3w2c7pk20mvq8dcfy2zc943hlr5ffz7bjg6x"; + }; + }; + }; + "spatie/laravel-package-tools" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "spatie-laravel-package-tools-bab62023a4745a61170ad5424184533685e73c2d"; + src = fetchurl { + url = "https://api.github.com/repos/spatie/laravel-package-tools/zipball/bab62023a4745a61170ad5424184533685e73c2d"; + sha256 = "0y4zfyk6v12kkkgz4sp00h1n8gqsr1idir5blcvzy3f540wxl30y"; + }; + }; + }; + "spatie/laravel-signal-aware-command" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "spatie-laravel-signal-aware-command-46cda09a85aef3fd47fb73ddc7081f963e255571"; + src = fetchurl { + url = "https://api.github.com/repos/spatie/laravel-signal-aware-command/zipball/46cda09a85aef3fd47fb73ddc7081f963e255571"; + sha256 = "1h4qa1zrpwr6ly5lwvsjb60wya92ys608xij9x01v3nm69r99939"; + }; + }; + }; + "spatie/temporary-directory" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "spatie-temporary-directory-e2818d871783d520b319c2d38dc37c10ecdcde20"; + src = fetchurl { + url = "https://api.github.com/repos/spatie/temporary-directory/zipball/e2818d871783d520b319c2d38dc37c10ecdcde20"; + sha256 = "18zay4l05sh21zfnbs0l6l12192j4y0mn2yfvnsyhm617kr14vgj"; + }; + }; + }; + "stevebauman/purify" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "stevebauman-purify-e56289062ed8a25c78c88f35e9106f00d01369c1"; + src = fetchurl { + url = "https://api.github.com/repos/stevebauman/purify/zipball/e56289062ed8a25c78c88f35e9106f00d01369c1"; + sha256 = "0bqzk203c526sdz8dgpvm3kffxk9x67xy1qbjl4p13fl4cwyi8wb"; + }; + }; + }; + "symfony/cache" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-cache-01a36b32f930018764bcbde006fbbe421fa6b61e"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/cache/zipball/01a36b32f930018764bcbde006fbbe421fa6b61e"; + sha256 = "1i484nh0zy4nbq8p3j1wdw7jiz6rs387w8gyrhligfvhv6kkfd2f"; + }; + }; + }; + "symfony/cache-contracts" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-cache-contracts-eeb71f04b6f7f34ca6d15633df82e014528b1632"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/cache-contracts/zipball/eeb71f04b6f7f34ca6d15633df82e014528b1632"; + sha256 = "13dcrpy31arn3v1kns83zndhbyzngwc7ic3vc5c6x7kmv23s5l0x"; + }; + }; + }; + "symfony/console" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-console-cbad09eb8925b6ad4fb721c7a179344dc4a19d45"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/console/zipball/cbad09eb8925b6ad4fb721c7a179344dc4a19d45"; + sha256 = "0373y1dqy8mschqqhw2hvv906i1nc68h4yd5jm1dj4rf8qrynplb"; + }; + }; + }; + "symfony/css-selector" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-css-selector-aedf3cb0f5b929ec255d96bbb4909e9932c769e0"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/css-selector/zipball/aedf3cb0f5b929ec255d96bbb4909e9932c769e0"; + sha256 = "1sr492i55w1shyzp365a2xb50fsb0arkf2idckd8icck54k3zdgf"; + }; + }; + }; + "symfony/deprecation-contracts" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-deprecation-contracts-e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e"; + sha256 = "1z7akdycl5ar42vs1kc00ggm5rbqw0lx7i3acbcbfhnwmdxsmcxh"; + }; + }; + }; + "symfony/error-handler" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-error-handler-61e90f94eb014054000bc902257d2763fac09166"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/error-handler/zipball/61e90f94eb014054000bc902257d2763fac09166"; + sha256 = "1kxm9pzvvlrd2b1gwbq9b45qgq6sckl0xr078cis7vsbhw9kwbkn"; + }; + }; + }; + "symfony/event-dispatcher" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-event-dispatcher-404b307de426c1c488e5afad64403e5f145e82a5"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/event-dispatcher/zipball/404b307de426c1c488e5afad64403e5f145e82a5"; + sha256 = "0262hqisnnv3mzb7gn6yjyvr8dhgsqrs18a19s72nwcj0cs7k6mi"; + }; + }; + }; + "symfony/event-dispatcher-contracts" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-event-dispatcher-contracts-0ad3b6f1e4e2da5690fefe075cd53a238646d8dd"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ad3b6f1e4e2da5690fefe075cd53a238646d8dd"; + sha256 = "0yqg0h2kf4mij39nisshvg5gssn6aqyqphngi05z6jfd0q89a46x"; + }; + }; + }; + "symfony/finder" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-finder-20808dc6631aecafbe67c186af5dcb370be3a0eb"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/finder/zipball/20808dc6631aecafbe67c186af5dcb370be3a0eb"; + sha256 = "113yidfp8sjkv200kx4pi81zn0v0r9gmq8dw7p3zvhc23k1hinh8"; + }; + }; + }; + "symfony/http-client" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-http-client-0a5be6cbc570ae23b51b49d67341f378629d78e4"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/http-client/zipball/0a5be6cbc570ae23b51b49d67341f378629d78e4"; + sha256 = "1jkgy3k4g2x33952vnbw8n5lv6986fbq8qallpsl8rfcczyzliq3"; + }; + }; + }; + "symfony/http-client-contracts" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-http-client-contracts-df2ecd6cb70e73c1080e6478aea85f5f4da2c48b"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/http-client-contracts/zipball/df2ecd6cb70e73c1080e6478aea85f5f4da2c48b"; + sha256 = "0ch1kzfxszbaw75rrn9x8f26rx1ikjnygdckhgs8cgn5y1ivp0im"; + }; + }; + }; + "symfony/http-foundation" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-http-foundation-5fc3038d4a594223f9ea42e4e985548f3fcc9a3b"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/http-foundation/zipball/5fc3038d4a594223f9ea42e4e985548f3fcc9a3b"; + sha256 = "13wn8kgxakp9133sjgvn2bfr51r5rxymm6d8vhs8kjxxgkx050l5"; + }; + }; + }; + "symfony/http-kernel" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-http-kernel-ca0680ad1e2d678536cc20e0ae33f9e4e5d2becd"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/http-kernel/zipball/ca0680ad1e2d678536cc20e0ae33f9e4e5d2becd"; + sha256 = "14b700kcw4ibz9hackx9wvghmv5rnks18vhr4vjb5zskfdajp4qd"; + }; + }; + }; + "symfony/mailer" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-mailer-e4f84c633b72ec70efc50b8016871c3bc43e691e"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/mailer/zipball/e4f84c633b72ec70efc50b8016871c3bc43e691e"; + sha256 = "15bi1vy4162mv0k49wscdshwznjmmcwr9g7g03jgadanjq4afyzj"; + }; + }; + }; + "symfony/mailgun-mailer" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-mailgun-mailer-9e27b8ec2f6ee7575c6229a61be1578a5a4b21ee"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/mailgun-mailer/zipball/9e27b8ec2f6ee7575c6229a61be1578a5a4b21ee"; + sha256 = "14ny9mqvl8lqfa049cvxd0zqiqssidk82794sg80g6cl1irmj6rp"; + }; + }; + }; + "symfony/mime" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-mime-62e341f80699badb0ad70b31149c8df89a2d778e"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/mime/zipball/62e341f80699badb0ad70b31149c8df89a2d778e"; + sha256 = "1l56y494n4phiyafcgc7sa8vfxzsvz6lbzxhnqirdgv19y4zvbim"; + }; + }; + }; + "symfony/polyfill-ctype" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-polyfill-ctype-5bbc823adecdae860bb64756d639ecfec17b050a"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a"; + sha256 = "0vyv70z1yi2is727d1mkb961w5r1pb1v3wy1pvdp30h8ffy15wk6"; + }; + }; + }; + "symfony/polyfill-intl-grapheme" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-polyfill-intl-grapheme-511a08c03c1960e08a883f4cffcacd219b758354"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354"; + sha256 = "0ifsgsyxf0z0nkynqvr5259dm5dsmbgdpvyi5zfvy8935mi0ki0i"; + }; + }; + }; + "symfony/polyfill-intl-idn" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-polyfill-intl-idn-639084e360537a19f9ee352433b84ce831f3d2da"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da"; + sha256 = "1i2wcsbfbwdyrx8545yrrvbdaf4l2393pjvg9266q74611j6pzxj"; + }; + }; + }; + "symfony/polyfill-intl-normalizer" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-polyfill-intl-normalizer-19bd1e4fcd5b91116f14d8533c57831ed00571b6"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6"; + sha256 = "1d80jph5ykiw6ydv8fwd43s0aglh24qc1yrzds2f3aqanpbk1gr2"; + }; + }; + }; + "symfony/polyfill-mbstring" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-polyfill-mbstring-8ad114f6b39e2c98a8b0e3bd907732c207c2b534"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534"; + sha256 = "1ym84qp609i50lv4vkd4yz99y19kaxd5kmpdnh66mxx1a4a104mi"; + }; + }; + }; + "symfony/polyfill-php72" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-polyfill-php72-869329b1e9894268a8a61dabb69153029b7a8c97"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/polyfill-php72/zipball/869329b1e9894268a8a61dabb69153029b7a8c97"; + sha256 = "1h0lbh8d41sa4fymmw03yzws3v3z0lz4lv1kgcld7r53i2m3wfwp"; + }; + }; + }; + "symfony/polyfill-php80" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-polyfill-php80-7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936"; + sha256 = "16yydk7rsknlasrpn47n4b4js8svvp4rxzw99dkav52wr3cqmcwd"; + }; + }; + }; + "symfony/polyfill-uuid" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-polyfill-uuid-f3cf1a645c2734236ed1e2e671e273eeb3586166"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/polyfill-uuid/zipball/f3cf1a645c2734236ed1e2e671e273eeb3586166"; + sha256 = "1pjh861iwlf71frm9f9i7acw4bbiq40gkh96a5wd09nfd2c3w7mc"; + }; + }; + }; + "symfony/process" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-process-680e8a2ea6b3f87aecc07a6a65a203ae573d1902"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/process/zipball/680e8a2ea6b3f87aecc07a6a65a203ae573d1902"; + sha256 = "16g99h6ir2mf3v0kciqckjgjg4x8sqyl2b6r7rf9bw1rnfmh3xk7"; + }; + }; + }; + "symfony/psr-http-message-bridge" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-psr-http-message-bridge-a125b93ef378c492e274f217874906fb9babdebb"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/a125b93ef378c492e274f217874906fb9babdebb"; + sha256 = "1c23bv3j2zwbxklizvkvkzrgn2fd1164qb0smgswa15pshwmr0gw"; + }; + }; + }; + "symfony/routing" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-routing-fa643fa4c56de161f8bc8c0492a76a60140b50e4"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/routing/zipball/fa643fa4c56de161f8bc8c0492a76a60140b50e4"; + sha256 = "1kv9ijzligl3y6z6hwkk5kjf8h8lff5fh6y0f1ws1ivwxrid8r33"; + }; + }; + }; + "symfony/service-contracts" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-service-contracts-a8c9cedf55f314f3a186041d19537303766df09a"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/service-contracts/zipball/a8c9cedf55f314f3a186041d19537303766df09a"; + sha256 = "0gk4mpvm0v8a98p641wdxdvcinl4366fiqadq0za3w37zrwals53"; + }; + }; + }; + "symfony/string" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-string-67b8c1eec78296b85dc1c7d9743830160218993d"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/string/zipball/67b8c1eec78296b85dc1c7d9743830160218993d"; + sha256 = "1jvxxb6f5mf1hl1fl6pr46b0g79w8zinqxgw40c871lxw8xmk6hy"; + }; + }; + }; + "symfony/translation" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-translation-90db1c6138c90527917671cd9ffa9e8b359e3a73"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/translation/zipball/90db1c6138c90527917671cd9ffa9e8b359e3a73"; + sha256 = "1fwg6fwlkjv2zxxg7mjxp9i9c3slxfdiixykpl3r9rsddjvpvyjr"; + }; + }; + }; + "symfony/translation-contracts" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-translation-contracts-dfec258b9dd17a6b24420d464c43bffe347441c8"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/translation-contracts/zipball/dfec258b9dd17a6b24420d464c43bffe347441c8"; + sha256 = "1ns37kz4fc2z0kdzhk9kchsxffy5h7ls43z4carv2vzrkgzml8lx"; + }; + }; + }; + "symfony/uid" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-uid-d30c72a63897cfa043e1de4d4dd2ffa9ecefcdc0"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/uid/zipball/d30c72a63897cfa043e1de4d4dd2ffa9ecefcdc0"; + sha256 = "0lg3qxa011mvg41xznm69jqc6l02ysvw9jm48bb63gn1j70zy6ba"; + }; + }; + }; + "symfony/var-dumper" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-var-dumper-cf8d4ca1ddc1e3cc242375deb8fc23e54f5e2a1e"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/var-dumper/zipball/cf8d4ca1ddc1e3cc242375deb8fc23e54f5e2a1e"; + sha256 = "1l771q02a9m4j09dv96y4g1fb9lpmfxnz2hy11hmz57afscl3m7s"; + }; + }; + }; + "symfony/var-exporter" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "symfony-var-exporter-86062dd0103530e151588c8f60f5b85a139f1442"; + src = fetchurl { + url = "https://api.github.com/repos/symfony/var-exporter/zipball/86062dd0103530e151588c8f60f5b85a139f1442"; + sha256 = "1w13ww6qr7bra2c8j2da6wzrr96agp1ks4b81g1h8psyybvb48m6"; + }; + }; + }; + "tightenco/collect" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "tightenco-collect-d7381736dca44ac17d0805a25191b094e5a22446"; + src = fetchurl { + url = "https://api.github.com/repos/tighten/collect/zipball/d7381736dca44ac17d0805a25191b094e5a22446"; + sha256 = "0qzsr8q6x7ncwdpbp0w652gl260rwynxvrnsjvj86vjkbc4s0y8w"; + }; + }; + }; + "tijsverkoyen/css-to-inline-styles" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "tijsverkoyen-css-to-inline-styles-c42125b83a4fa63b187fdf29f9c93cb7733da30c"; + src = fetchurl { + url = "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/c42125b83a4fa63b187fdf29f9c93cb7733da30c"; + sha256 = "0ckk04hwwz0fdkfr20i7xrhdjcnnw1b0liknbb81qyr1y4b7x3dd"; + }; + }; + }; + "vlucas/phpdotenv" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "vlucas-phpdotenv-1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7"; + src = fetchurl { + url = "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7"; + sha256 = "13h4xyxhdjn1n7xcxbcdhj20rv5fsaigbsbz61x2i224hj76620a"; + }; + }; + }; + "voku/portable-ascii" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "voku-portable-ascii-b56450eed252f6801410d810c8e1727224ae0743"; + src = fetchurl { + url = "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743"; + sha256 = "0gwlv1hr6ycrf8ik1pnvlwaac8cpm8sa1nf4d49s8rp4k2y5anyl"; + }; + }; + }; + "webmozart/assert" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "webmozart-assert-11cb2199493b2f8a3b53e7f19068fc6aac760991"; + src = fetchurl { + url = "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991"; + sha256 = "18qiza1ynwxpi6731jx1w5qsgw98prld1lgvfk54z92b1nc7psix"; + }; + }; + }; + }; + devPackages = { + "brianium/paratest" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "brianium-paratest-51691208db882922c55d6c465be3e7d95028c449"; + src = fetchurl { + url = "https://api.github.com/repos/paratestphp/paratest/zipball/51691208db882922c55d6c465be3e7d95028c449"; + sha256 = "0gmp7zg3lfvsg4lqsh3q5zxl00iz004d5qbvnmya6y97skig2ja6"; + }; + }; + }; + "doctrine/instantiator" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "doctrine-instantiator-c6222283fa3f4ac679f8b9ced9a4e23f163e80d0"; + src = fetchurl { + url = "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0"; + sha256 = "059ahw73z0m24cal4f805j6h1i53f90mrmjr7s4f45yfxgwcqvcn"; + }; + }; + }; + "fakerphp/faker" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "fakerphp-faker-92efad6a967f0b79c499705c69b662f738cc9e4d"; + src = fetchurl { + url = "https://api.github.com/repos/FakerPHP/Faker/zipball/92efad6a967f0b79c499705c69b662f738cc9e4d"; + sha256 = "0yxl4vicv0yc5jxsfslxkhh7fjgryg3anmpvdvbqim2df5wv4pqg"; + }; + }; + }; + "fidry/cpu-core-counter" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "fidry-cpu-core-counter-b58e5a3933e541dc286cc91fc4f3898bbc6f1623"; + src = fetchurl { + url = "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/b58e5a3933e541dc286cc91fc4f3898bbc6f1623"; + sha256 = "154qkm931w5d3dy202w455wxfa0wsjx7mmfj23mb36zpp1gck19j"; + }; + }; + }; + "filp/whoops" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "filp-whoops-e864ac957acd66e1565f25efda61e37791a5db0b"; + src = fetchurl { + url = "https://api.github.com/repos/filp/whoops/zipball/e864ac957acd66e1565f25efda61e37791a5db0b"; + sha256 = "1q6lx0d2h1372flsh7qqacyb9gljhhlnasgbvydhil11v1mai50g"; + }; + }; + }; + "hamcrest/hamcrest-php" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "hamcrest-hamcrest-php-8c3d0a3f6af734494ad8f6fbbee0ba92422859f3"; + src = fetchurl { + url = "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3"; + sha256 = "1ixmmpplaf1z36f34d9f1342qjbcizvi5ddkjdli6jgrbla6a6hr"; + }; + }; + }; + "jean85/pretty-package-versions" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "jean85-pretty-package-versions-ae547e455a3d8babd07b96966b17d7fd21d9c6af"; + src = fetchurl { + url = "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af"; + sha256 = "07s7hl7705vgmyr5m7czja4426rsqrxqh8m362irn29vbc35k6q8"; + }; + }; + }; + "laravel/telescope" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "laravel-telescope-fafad2e32883eb9dc03b646d0f82b2987e8af880"; + src = fetchurl { + url = "https://api.github.com/repos/laravel/telescope/zipball/fafad2e32883eb9dc03b646d0f82b2987e8af880"; + sha256 = "1pr1a4b07nmwj05ck4c7c1ip1hhr32blr9pwcvapyrh862vv5p13"; + }; + }; + }; + "mockery/mockery" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "mockery-mockery-e92dcc83d5a51851baf5f5591d32cb2b16e3684e"; + src = fetchurl { + url = "https://api.github.com/repos/mockery/mockery/zipball/e92dcc83d5a51851baf5f5591d32cb2b16e3684e"; + sha256 = "0dvkr0ff37cn6s72s7sqw26j6i5fja780x980zhl099frflkw5s9"; + }; + }; + }; + "myclabs/deep-copy" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "myclabs-deep-copy-7284c22080590fb39f2ffa3e9057f10a4ddd0e0c"; + src = fetchurl { + url = "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c"; + sha256 = "16k44y94bcr439bsxm5158xvmlyraph2c6n17qa5y29b04jqdw5j"; + }; + }; + }; + "nunomaduro/collision" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "nunomaduro-collision-f05978827b9343cba381ca05b8c7deee346b6015"; + src = fetchurl { + url = "https://api.github.com/repos/nunomaduro/collision/zipball/f05978827b9343cba381ca05b8c7deee346b6015"; + sha256 = "09bpw23vq3yyilrkd6k798igrg0ypryxpw2bfbdgjvjwhs4ndf29"; + }; + }; + }; + "phar-io/manifest" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "phar-io-manifest-97803eca37d319dfa7826cc2437fc020857acb53"; + src = fetchurl { + url = "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53"; + sha256 = "107dsj04ckswywc84dvw42kdrqd4y6yvb2qwacigyrn05p075c1w"; + }; + }; + }; + "phar-io/version" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "phar-io-version-4f7fd7836c6f332bb2933569e566a0d6c4cbed74"; + src = fetchurl { + url = "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74"; + sha256 = "0mdbzh1y0m2vvpf54vw7ckcbcf1yfhivwxgc9j9rbb7yifmlyvsg"; + }; + }; + }; + "phpunit/php-code-coverage" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "phpunit-php-code-coverage-443bc6912c9bd5b409254a40f4b0f4ced7c80ea1"; + src = fetchurl { + url = "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/443bc6912c9bd5b409254a40f4b0f4ced7c80ea1"; + sha256 = "18v2xs142pw4dl9l6imcmkdvv5m18zd36ar41i586f4mg8d961d1"; + }; + }; + }; + "phpunit/php-file-iterator" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "phpunit-php-file-iterator-cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf"; + src = fetchurl { + url = "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf"; + sha256 = "1407d8f1h35w4sdikq2n6cz726css2xjvlyr1m4l9a53544zxcnr"; + }; + }; + }; + "phpunit/php-invoker" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "phpunit-php-invoker-5a10147d0aaf65b58940a0b72f71c9ac0423cc67"; + src = fetchurl { + url = "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67"; + sha256 = "1vqnnjnw94mzm30n9n5p2bfgd3wd5jah92q6cj3gz1nf0qigr4fh"; + }; + }; + }; + "phpunit/php-text-template" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "phpunit-php-text-template-5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28"; + src = fetchurl { + url = "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28"; + sha256 = "0ff87yzywizi6j2ps3w0nalpx16mfyw3imzn6gj9jjsfwc2bb8lq"; + }; + }; + }; + "phpunit/php-timer" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "phpunit-php-timer-5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2"; + src = fetchurl { + url = "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2"; + sha256 = "0g1g7yy4zk1bidyh165fsbqx5y8f1c8pxikvcahzlfsr9p2qxk6a"; + }; + }; + }; + "phpunit/phpunit" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "phpunit-phpunit-86e761949019ae83f49240b2f2123fb5ab3b2fc5"; + src = fetchurl { + url = "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/86e761949019ae83f49240b2f2123fb5ab3b2fc5"; + sha256 = "1jqsw5qd5cv07fzpbw6m31314s2b64zwz0hz3g83179yf5h4r99z"; + }; + }; + }; + "sebastian/cli-parser" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "sebastian-cli-parser-442e7c7e687e42adc03470c7b668bc4b2402c0b2"; + src = fetchurl { + url = "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2"; + sha256 = "074qzdq19k9x4svhq3nak5h348xska56v1sqnhk1aj0jnrx02h37"; + }; + }; + }; + "sebastian/code-unit" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "sebastian-code-unit-1fc9f64c0927627ef78ba436c9b17d967e68e120"; + src = fetchurl { + url = "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120"; + sha256 = "04vlx050rrd54mxal7d93pz4119pas17w3gg5h532anfxjw8j7pm"; + }; + }; + }; + "sebastian/code-unit-reverse-lookup" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "sebastian-code-unit-reverse-lookup-ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5"; + src = fetchurl { + url = "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5"; + sha256 = "1h1jbzz3zak19qi4mab2yd0ddblpz7p000jfyxfwd2ds0gmrnsja"; + }; + }; + }; + "sebastian/comparator" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "sebastian-comparator-fa0f136dd2334583309d32b62544682ee972b51a"; + src = fetchurl { + url = "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a"; + sha256 = "0m8ibkwaxw2q5v84rlvy7ylpkddscsa8hng0cjczy4bqpqavr83w"; + }; + }; + }; + "sebastian/complexity" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "sebastian-complexity-739b35e53379900cc9ac327b2147867b8b6efd88"; + src = fetchurl { + url = "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88"; + sha256 = "1y4yz8n8hszbhinf9ipx3pqyvgm7gz0krgyn19z0097yq3bbq8yf"; + }; + }; + }; + "sebastian/diff" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "sebastian-diff-3461e3fccc7cfdfc2720be910d3bd73c69be590d"; + src = fetchurl { + url = "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d"; + sha256 = "0967nl6cdnr0v0z83w4xy59agn60kfv8gb41aw3fpy1n2wpp62dj"; + }; + }; + }; + "sebastian/environment" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "sebastian-environment-830c43a844f1f8d5b7a1f6d6076b784454d8b7ed"; + src = fetchurl { + url = "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed"; + sha256 = "02045n3in01zk571v1phyhj0b2mvnvx8qnlqvw4j33r7qdd4clzn"; + }; + }; + }; + "sebastian/exporter" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "sebastian-exporter-ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d"; + src = fetchurl { + url = "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d"; + sha256 = "1a6yj8v8rwj3igip8xysdifvbd7gkzmwrj9whdx951pdq7add46j"; + }; + }; + }; + "sebastian/global-state" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "sebastian-global-state-0ca8db5a5fc9c8646244e629625ac486fa286bf2"; + src = fetchurl { + url = "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2"; + sha256 = "1csrfa5b7ivza712lfmbywp9jhwf4ls5lc0vn812xljkj7w24kg1"; + }; + }; + }; + "sebastian/lines-of-code" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "sebastian-lines-of-code-c1c2e997aa3146983ed888ad08b15470a2e22ecc"; + src = fetchurl { + url = "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc"; + sha256 = "0fay9s5cm16gbwr7qjihwrzxn7sikiwba0gvda16xng903argbk0"; + }; + }; + }; + "sebastian/object-enumerator" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "sebastian-object-enumerator-5c9eeac41b290a3712d88851518825ad78f45c71"; + src = fetchurl { + url = "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71"; + sha256 = "11853z07w8h1a67wsjy3a6ir5x7khgx6iw5bmrkhjkiyvandqcn1"; + }; + }; + }; + "sebastian/object-reflector" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "sebastian-object-reflector-b4f479ebdbf63ac605d183ece17d8d7fe49c15c7"; + src = fetchurl { + url = "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7"; + sha256 = "0g5m1fswy6wlf300x1vcipjdljmd3vh05hjqhqfc91byrjbk4rsg"; + }; + }; + }; + "sebastian/recursion-context" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "sebastian-recursion-context-e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1"; + src = fetchurl { + url = "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1"; + sha256 = "1ag6ysxffhxyg7g4rj9xjjlwq853r4x92mmin4f09hn5mqn9f0l1"; + }; + }; + }; + "sebastian/resource-operations" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "sebastian-resource-operations-0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8"; + src = fetchurl { + url = "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8"; + sha256 = "0p5s8rp7mrhw20yz5wx1i4k8ywf0h0ximcqan39n9qnma1dlnbyr"; + }; + }; + }; + "sebastian/type" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "sebastian-type-75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7"; + src = fetchurl { + url = "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7"; + sha256 = "0bvfvb62qbpy2hzxs4bjzb0xhks6h3cp6qx96z4qlyz6wl2fa1w5"; + }; + }; + }; + "sebastian/version" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "sebastian-version-c6c1022351a901512170118436c764e473f6de8c"; + src = fetchurl { + url = "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c"; + sha256 = "1bs7bwa9m0fin1zdk7vqy5lxzlfa9la90lkl27sn0wr00m745ig1"; + }; + }; + }; + "theseer/tokenizer" = { + targetDir = ""; + src = composerEnv.buildZipPackage { + name = "theseer-tokenizer-34a41e998c2183e22995f158c581e7b5e755ab9e"; + src = fetchurl { + url = "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e"; + sha256 = "1za4a017kjb4rw2ydglip4bp5q2y7mfiycj3fvnp145i84jc7n0q"; + }; + }; + }; + }; +in +composerEnv.buildPackage { + inherit packages devPackages noDev; + name = "pixelfed-pixelfed"; + src = composerEnv.filterSrc ./.; + executable = false; + symlinkDependencies = false; + meta = { + license = "AGPL-3.0-only"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 41eb746d1752..e19074c90a00 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -30627,6 +30627,8 @@ with pkgs; pixel2svg = python310Packages.callPackage ../tools/graphics/pixel2svg { }; + pixelfed = callPackage ../servers/web-apps/pixelfed { }; + pixelnuke = callPackage ../applications/graphics/pixelnuke { }; pixelorama = callPackage ../applications/editors/pixelorama { }; From 729d2eea291e74fab6e50d3ae95d4396f7784e28 Mon Sep 17 00:00:00 2001 From: Ryan Hendrickson Date: Fri, 21 Apr 2023 04:23:40 -0400 Subject: [PATCH 02/49] mindustry-wayland: set SDL environment variables `SDL_VIDEODRIVER=wayland` seems to be a requirement for GLEW to initialize when using glew-egl. `SDL_VIDEO_WAYLAND_WMCLASS` associates the application with the .desktop file (in GNOME Shell, at least, if not other Wayland desktops). --- pkgs/games/mindustry/default.nix | 16 ++++++++++++---- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/pkgs/games/mindustry/default.nix b/pkgs/games/mindustry/default.nix index 45991d7c5518..5a76f755a9b3 100644 --- a/pkgs/games/mindustry/default.nix +++ b/pkgs/games/mindustry/default.nix @@ -15,6 +15,7 @@ , alsa-lib , alsa-plugins , glew +, glew-egl # for soloud , libpulseaudio ? null @@ -30,6 +31,8 @@ , makeBuildVersion ? (v: v) , enableClient ? true , enableServer ? true + +, enableWayland ? false }: let @@ -37,6 +40,8 @@ let version = "142"; buildVersion = makeBuildVersion version; + selectedGlew = if enableWayland then glew-egl else glew; + Mindustry = fetchFromGitHub { owner = "Anuken"; repo = "Mindustry"; @@ -139,7 +144,7 @@ stdenv.mkDerivation rec { buildInputs = lib.optionals enableClient [ SDL2 - glew + selectedGlew alsa-lib ]; nativeBuildInputs = [ @@ -171,7 +176,7 @@ stdenv.mkDerivation rec { pushd ../Arc gradle --offline --no-daemon jnigenBuild -Pbuildversion=${buildVersion} gradle --offline --no-daemon jnigenJarNativesDesktop -Pbuildversion=${buildVersion} - glewlib=${lib.getLib glew}/lib/libGLEW.so + glewlib=${lib.getLib selectedGlew}/lib/libGLEW.so sdllib=${lib.getLib SDL2}/lib/libSDL2.so patchelf backends/backend-sdl/libs/linux64/libsdl-arc*.so \ --add-needed $glewlib \ @@ -194,7 +199,10 @@ stdenv.mkDerivation rec { makeWrapper ${jdk}/bin/java $out/bin/mindustry \ --add-flags "-jar $out/share/mindustry.jar" \ --suffix LD_LIBRARY_PATH : ${lib.makeLibraryPath [libpulseaudio alsa-lib libjack2]} \ - --set ALSA_PLUGIN_DIR ${alsa-plugins}/lib/alsa-lib/ + --set ALSA_PLUGIN_DIR ${alsa-plugins}/lib/alsa-lib/'' + optionalString enableWayland '' \ + --set SDL_VIDEODRIVER wayland \ + --set SDL_VIDEO_WAYLAND_WMCLASS Mindustry + '' + '' # Retain runtime depends to prevent them from being cleaned up. # Since a jar is a compressed archive, nix can't figure out that the dependency is actually in there, @@ -202,7 +210,7 @@ stdenv.mkDerivation rec { # This can cause issues. # See https://github.com/NixOS/nixpkgs/issues/109798. echo "# Retained runtime dependencies: " >> $out/bin/mindustry - for dep in ${SDL2.out} ${alsa-lib.out} ${glew.out}; do + for dep in ${SDL2.out} ${alsa-lib.out} ${selectedGlew.out}; do echo "# $dep" >> $out/bin/mindustry done diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1ce71032d5e7..dcdd3d8bd54e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -35754,7 +35754,7 @@ with pkgs; mindustry = callPackage ../games/mindustry { }; mindustry-wayland = callPackage ../games/mindustry { - glew = glew-egl; + enableWayland = true; }; mindustry-server = callPackage ../games/mindustry { From 51c5aae874bb78de29e8deb309147a1f026d818c Mon Sep 17 00:00:00 2001 From: bezmuth Date: Tue, 13 Sep 2022 17:47:43 +0100 Subject: [PATCH 03/49] nixos/pixelfed: init module --- .../manual/release-notes/rl-2305.section.md | 2 + nixos/modules/module-list.nix | 1 + nixos/modules/services/web-apps/pixelfed.nix | 478 ++++++++++++++++++ 3 files changed, 481 insertions(+) create mode 100644 nixos/modules/services/web-apps/pixelfed.nix diff --git a/nixos/doc/manual/release-notes/rl-2305.section.md b/nixos/doc/manual/release-notes/rl-2305.section.md index d80d3556e377..0159876c7b36 100644 --- a/nixos/doc/manual/release-notes/rl-2305.section.md +++ b/nixos/doc/manual/release-notes/rl-2305.section.md @@ -24,6 +24,8 @@ In addition to numerous new and upgraded packages, this release has the followin - [Akkoma](https://akkoma.social), an ActivityPub microblogging server. Available as [services.akkoma](options.html#opt-services.akkoma.enable). +- [Pixelfed](https://pixelfed.org/), an Instagram-like ActivityPub server. Available as [services.pixelfed](options.html#opt-services.pixelfed.enable). + - [blesh](https://github.com/akinomyoga/ble.sh), a line editor written in pure bash. Available as [programs.bash.blesh](#opt-programs.bash.blesh.enable). - [webhook](https://github.com/adnanh/webhook), a lightweight webhook server. Available as [services.webhook](#opt-services.webhook.enable). diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index f5daa37bf3cc..02ef9345af5c 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -1153,6 +1153,7 @@ ./services/web-apps/gerrit.nix ./services/web-apps/gotify-server.nix ./services/web-apps/grocy.nix + ./services/web-apps/pixelfed.nix ./services/web-apps/healthchecks.nix ./services/web-apps/hedgedoc.nix ./services/web-apps/hledger-web.nix diff --git a/nixos/modules/services/web-apps/pixelfed.nix b/nixos/modules/services/web-apps/pixelfed.nix new file mode 100644 index 000000000000..817d0f9b60f5 --- /dev/null +++ b/nixos/modules/services/web-apps/pixelfed.nix @@ -0,0 +1,478 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.pixelfed; + user = cfg.user; + group = cfg.group; + pixelfed = cfg.package.override { inherit (cfg) dataDir runtimeDir; }; + # https://github.com/pixelfed/pixelfed/blob/dev/app/Console/Commands/Installer.php#L185-L190 + extraPrograms = with pkgs; [ jpegoptim optipng pngquant gifsicle ffmpeg ]; + # Ensure PHP extensions: https://github.com/pixelfed/pixelfed/blob/dev/app/Console/Commands/Installer.php#L135-L147 + phpPackage = cfg.phpPackage.buildEnv { + extensions = { enabled, all }: + enabled + ++ (with all; [ bcmath ctype curl mbstring gd intl zip redis imagick ]); + }; + configFile = + pkgs.writeText "pixelfed-env" (lib.generators.toKeyValue { } cfg.settings); + # Management script + pixelfed-manage = pkgs.writeShellScriptBin "pixelfed-manage" '' + cd ${pixelfed} + sudo=exec + if [[ "$USER" != ${user} ]]; then + sudo='exec /run/wrappers/bin/sudo -u ${user}' + fi + $sudo ${cfg.phpPackage}/bin/php artisan "$@" + ''; + dbSocket = { + "pgsql" = "/run/postgresql"; + "mysql" = "/run/mysqld/mysqld.sock"; + }.${cfg.database.type}; + dbService = { + "pgsql" = "postgresql.service"; + "mysql" = "mysql.service"; + }.${cfg.database.type}; + redisService = "redis-pixelfed.service"; +in { + options.services = { + pixelfed = { + enable = mkEnableOption (lib.mdDoc "a Pixelfed instance"); + package = mkPackageOptionMD pkgs "pixelfed" { }; + phpPackage = mkPackageOptionMD pkgs "php81" { }; + + user = mkOption { + type = types.str; + default = "pixelfed"; + description = lib.mdDoc '' + User account under which pixelfed runs. + + ::: {.note} + If left as the default value this user will automatically be created + on system activation, otherwise you are responsible for + ensuring the user exists before the pixelfed application starts. + ::: + ''; + }; + + group = mkOption { + type = types.str; + default = "pixelfed"; + description = lib.mdDoc '' + Group account under which pixelfed runs. + + ::: {.note} + If left as the default value this group will automatically be created + on system activation, otherwise you are responsible for + ensuring the group exists before the pixelfed application starts. + ::: + ''; + }; + + domain = mkOption { + type = types.str; + description = lib.mdDoc '' + FQDN for the Pixelfed instance. + ''; + }; + + secretFile = mkOption { + type = types.path; + description = lib.mdDoc '' + A secret file to be sourced for the .env settings. + Place `APP_KEY` and other settings that should not end up in the Nix store here. + ''; + }; + + settings = mkOption { + type = with types; (attrsOf (oneOf [ bool int str ])); + description = lib.mdDoc '' + .env settings for Pixelfed. + Secrets should use `secretFile` option instead. + ''; + }; + + nginx = mkOption { + type = types.nullOr (types.submodule + (import ../web-servers/nginx/vhost-options.nix { + inherit config lib; + })); + default = null; + example = lib.literalExpression '' + { + serverAliases = [ + "pics.''${config.networking.domain}" + ]; + enableACME = true; + forceHttps = true; + } + ''; + description = lib.mdDoc '' + With this option, you can customize an nginx virtual host which already has sensible defaults for Dolibarr. + Set to {} if you do not need any customization to the virtual host. + If enabled, then by default, the {option}`serverName` is + `''${domain}`, + If this is set to null (the default), no nginx virtualHost will be configured. + ''; + }; + + redis.createLocally = mkEnableOption + (lib.mdDoc "a local Redis database using UNIX socket authentication") + // { + default = true; + }; + + database = { + createLocally = mkEnableOption + (lib.mdDoc "a local database using UNIX socket authentication") // { + default = true; + }; + automaticMigrations = mkEnableOption + (lib.mdDoc "automatic migrations for database schema and data") // { + default = true; + }; + + type = mkOption { + type = types.enum [ "mysql" "pgsql" ]; + example = "pgsql"; + default = "mysql"; + description = lib.mdDoc '' + Database engine to use. + Note that PGSQL is not well supported: https://github.com/pixelfed/pixelfed/issues/2727 + ''; + }; + + name = mkOption { + type = types.str; + default = "pixelfed"; + description = lib.mdDoc "Database name."; + }; + }; + + maxUploadSize = mkOption { + type = types.str; + default = "8M"; + description = lib.mdDoc '' + Max upload size with units. + ''; + }; + + poolConfig = mkOption { + type = with types; attrsOf (oneOf [ int str bool ]); + default = { }; + + description = lib.mdDoc '' + Options for Pixelfed's PHP-FPM pool. + ''; + }; + + dataDir = mkOption { + type = types.str; + default = "/var/lib/pixelfed"; + description = lib.mdDoc '' + State directory of the `pixelfed` user which holds + the application's state and data. + ''; + }; + + runtimeDir = mkOption { + type = types.str; + default = "/run/pixelfed"; + description = lib.mdDoc '' + Ruutime directory of the `pixelfed` user which holds + the application's caches and temporary files. + ''; + }; + + schedulerInterval = mkOption { + type = types.str; + default = "1d"; + description = lib.mdDoc "How often the Pixelfed cron task should run"; + }; + }; + }; + + config = mkIf cfg.enable { + users.users.pixelfed = mkIf (cfg.user == "pixelfed") { + isSystemUser = true; + group = cfg.group; + extraGroups = lib.optional cfg.redis.createLocally "redis-pixelfed"; + }; + users.groups.pixelfed = mkIf (cfg.group == "pixelfed") { }; + + services.redis.servers.pixelfed.enable = lib.mkIf cfg.redis.createLocally true; + services.pixelfed.settings = mkMerge [ + ({ + APP_ENV = mkDefault "production"; + APP_DEBUG = mkDefault false; + # https://github.com/pixelfed/pixelfed/blob/dev/app/Console/Commands/Installer.php#L312-L316 + APP_URL = mkDefault "https://${cfg.domain}"; + ADMIN_DOMAIN = mkDefault cfg.domain; + APP_DOMAIN = mkDefault cfg.domain; + SESSION_DOMAIN = mkDefault cfg.domain; + SESSION_SECURE_COOKIE = mkDefault true; + OPEN_REGISTRATION = mkDefault false; + # ActivityPub: https://github.com/pixelfed/pixelfed/blob/dev/app/Console/Commands/Installer.php#L360-L364 + ACTIVITY_PUB = mkDefault true; + AP_REMOTE_FOLLOW = mkDefault true; + AP_INBOX = mkDefault true; + AP_OUTBOX = mkDefault true; + AP_SHAREDINBOX = mkDefault true; + # Image optimization: https://github.com/pixelfed/pixelfed/blob/dev/app/Console/Commands/Installer.php#L367-L404 + PF_OPTIMIZE_IMAGES = mkDefault true; + IMAGE_DRIVER = mkDefault "imagick"; + # Mobile APIs + OAUTH_ENABLED = mkDefault true; + # https://github.com/pixelfed/pixelfed/blob/dev/app/Console/Commands/Installer.php#L351 + EXP_EMC = mkDefault true; + # Defer to systemd + LOG_CHANNEL = mkDefault "stderr"; + # TODO: find out the correct syntax? + # TRUST_PROXIES = mkDefault "127.0.0.1/8, ::1/128"; + }) + (mkIf (cfg.redis.createLocally) { + BROADCAST_DRIVER = mkDefault "redis"; + CACHE_DRIVER = mkDefault "redis"; + QUEUE_DRIVER = mkDefault "redis"; + SESSION_DRIVER = mkDefault "redis"; + WEBSOCKET_REPLICATION_MODE = mkDefault "redis"; + # Suppport phpredis and predis configuration-style. + REDIS_SCHEME = "unix"; + REDIS_HOST = config.services.redis.servers.pixelfed.unixSocket; + REDIS_PATH = config.services.redis.servers.pixelfed.unixSocket; + }) + (mkIf (cfg.database.createLocally) { + DB_CONNECTION = cfg.database.type; + DB_SOCKET = dbSocket; + DB_DATABASE = cfg.database.name; + DB_USERNAME = user; + # No TCP/IP connection. + DB_PORT = 0; + }) + ]; + + environment.systemPackages = [ pixelfed-manage ]; + + services.mysql = + mkIf (cfg.database.createLocally && cfg.database.type == "mysql") { + enable = mkDefault true; + package = mkDefault pkgs.mariadb; + ensureDatabases = [ cfg.database.name ]; + ensureUsers = [{ + name = user; + ensurePermissions = { "${cfg.database.name}.*" = "ALL PRIVILEGES"; }; + }]; + }; + + services.postgresql = + mkIf (cfg.database.createLocally && cfg.database.type == "pgsql") { + enable = mkDefault true; + ensureDatabases = [ cfg.database.name ]; + ensureUsers = [{ + name = user; + ensurePermissions = { }; + }]; + }; + + # Make each individual option overridable with lib.mkDefault. + services.pixelfed.poolConfig = lib.mapAttrs' (n: v: lib.nameValuePair n (lib.mkDefault v)) { + "pm" = "dynamic"; + "php_admin_value[error_log]" = "stderr"; + "php_admin_flag[log_errors]" = true; + "catch_workers_output" = true; + "pm.max_children" = "32"; + "pm.start_servers" = "2"; + "pm.min_spare_servers" = "2"; + "pm.max_spare_servers" = "4"; + "pm.max_requests" = "500"; + }; + + services.phpfpm.pools.pixelfed = { + inherit user group; + inherit phpPackage; + + phpOptions = '' + post_max_size = ${toString cfg.maxUploadSize} + upload_max_filesize = ${toString cfg.maxUploadSize} + max_execution_time = 600; + ''; + + settings = { + "listen.owner" = user; + "listen.group" = group; + "listen.mode" = "0660"; + "catch_workers_output" = "yes"; + } // cfg.poolConfig; + }; + + systemd.services.phpfpm-pixelfed.after = [ "pixelfed-data-setup.service" ]; + systemd.services.phpfpm-pixelfed.requires = + [ "pixelfed-horizon.service" "pixelfed-data-setup.service" ] + ++ lib.optional cfg.database.createLocally dbService + ++ lib.optional cfg.redis.createLocally redisService; + # Ensure image optimizations programs are available. + systemd.services.phpfpm-pixelfed.path = extraPrograms; + + systemd.services.pixelfed-horizon = { + description = "Pixelfed task queueing via Laravel Horizon framework"; + after = [ "network.target" "pixelfed-data-setup.service" ]; + requires = [ "pixelfed-data-setup.service" ] + ++ (lib.optional cfg.database.createLocally dbService) + ++ (lib.optional cfg.redis.createLocally redisService); + wantedBy = [ "multi-user.target" ]; + # Ensure image optimizations programs are available. + path = extraPrograms; + + serviceConfig = { + Type = "simple"; + ExecStart = "${pixelfed-manage}/bin/pixelfed-manage horizon"; + StateDirectory = + lib.mkIf (cfg.dataDir == "/var/lib/pixelfed") "pixelfed"; + User = user; + Group = group; + Restart = "on-failure"; + }; + }; + + systemd.timers.pixelfed-cron = { + description = "Pixelfed periodic tasks timer"; + after = [ "pixelfed-data-setup.service" ]; + requires = [ "phpfpm-pixelfed.service" ]; + wantedBy = [ "timers.target" ]; + + timerConfig = { + OnBootSec = cfg.schedulerInterval; + OnUnitActiveSec = cfg.schedulerInterval; + }; + }; + + systemd.services.pixelfed-cron = { + description = "Pixelfed periodic tasks"; + # Ensure image optimizations programs are available. + path = extraPrograms; + + serviceConfig = { + ExecStart = "${pixelfed-manage}/bin/pixelfed-manage schedule:run"; + User = user; + Group = group; + StateDirectory = cfg.dataDir; + }; + }; + + systemd.services.pixelfed-data-setup = { + description = + "Pixelfed setup: migrations, environment file update, cache reload, data changes"; + wantedBy = [ "multi-user.target" ]; + after = lib.optional cfg.database.createLocally dbService; + requires = lib.optional cfg.database.createLocally dbService; + path = with pkgs; [ bash pixelfed-manage rsync ] ++ extraPrograms; + + serviceConfig = { + Type = "oneshot"; + User = user; + Group = group; + StateDirectory = + lib.mkIf (cfg.dataDir == "/var/lib/pixelfed") "pixelfed"; + LoadCredential = "env-secrets:${cfg.secretFile}"; + UMask = "077"; + }; + + script = '' + # Concatenate non-secret .env and secret .env + rm -f ${cfg.dataDir}/.env + cp --no-preserve=all ${configFile} ${cfg.dataDir}/.env + echo -e '\n' >> ${cfg.dataDir}/.env + cat "$CREDENTIALS_DIRECTORY/env-secrets" >> ${cfg.dataDir}/.env + + # Link the static storage (package provided) to the runtime storage + # Necessary for cities.json and static images. + mkdir -p ${cfg.dataDir}/storage + rsync -av --no-perms ${pixelfed}/storage-static/ ${cfg.dataDir}/storage + chmod -R +w ${cfg.dataDir}/storage + + # Link the app.php in the runtime folder. + # We cannot link the cache folder only because bootstrap folder needs to be writeable. + ln -sf ${pixelfed}/bootstrap-static/app.php ${cfg.runtimeDir}/app.php + + # https://laravel.com/docs/10.x/filesystem#the-public-disk + # Creating the public/storage → storage/app/public link + # is unnecessary as it's part of the installPhase of pixelfed. + + # Install Horizon + # FIXME: require write access to public/ — should be done as part of install — pixelfed-manage horizon:publish + + # Before running any PHP program, cleanup the bootstrap. + # It's necessary if you upgrade the application otherwise you might + # try to import non-existent modules. + rm -rf ${cfg.runtimeDir}/bootstrap/* + + # Perform the first migration. + [[ ! -f ${cfg.dataDir}/.initial-migration ]] && pixelfed-manage migrate --force && touch ${cfg.dataDir}/.initial-migration + + ${lib.optionalString cfg.database.automaticMigrations '' + # Force migrate the database. + pixelfed-manage migrate --force + ''} + + # Import location data + pixelfed-manage import:cities + + ${lib.optionalString cfg.settings.ACTIVITY_PUB '' + # ActivityPub federation bookkeeping + [[ ! -f ${cfg.dataDir}/.instance-actor-created ]] && pixelfed-manage instance:actor && touch ${cfg.dataDir}/.instance-actor-created + ''} + + ${lib.optionalString cfg.settings.OAUTH_ENABLED '' + # Generate Passport encryption keys + [[ ! -f ${cfg.dataDir}/.passport-keys-generated ]] && pixelfed-manage passport:keys && touch ${cfg.dataDir}/.passport-keys-generated + ''} + + pixelfed-manage route:cache + pixelfed-manage view:cache + pixelfed-manage config:cache + ''; + }; + + systemd.tmpfiles.rules = [ + # Cache must live across multiple systemd units runtimes. + "d ${cfg.runtimeDir}/ 0700 ${user} ${group} - -" + "d ${cfg.runtimeDir}/cache 0700 ${user} ${group} - -" + ]; + + # Enable NGINX to access our phpfpm-socket. + users.users."${config.services.nginx.group}".extraGroups = [ cfg.group ]; + services.nginx = mkIf (cfg.nginx != null) { + enable = true; + virtualHosts."${cfg.domain}" = mkMerge [ + cfg.nginx + { + root = lib.mkForce "${pixelfed}/public/"; + locations."/".tryFiles = "$uri $uri/ /index.php?query_string"; + locations."/favicon.ico".extraConfig = '' + access_log off; log_not_found off; + ''; + locations."/robots.txt".extraConfig = '' + access_log off; log_not_found off; + ''; + locations."~ \\.php$".extraConfig = '' + fastcgi_split_path_info ^(.+\.php)(/.+)$; + fastcgi_pass unix:${config.services.phpfpm.pools.pixelfed.socket}; + fastcgi_index index.php; + ''; + locations."~ /\\.(?!well-known).*".extraConfig = '' + deny all; + ''; + extraConfig = '' + add_header X-Frame-Options "SAMEORIGIN"; + add_header X-XSS-Protection "1; mode=block"; + add_header X-Content-Type-Options "nosniff"; + index index.html index.htm index.php; + error_page 404 /index.php; + client_max_body_size ${toString cfg.maxUploadSize}; + ''; + } + ]; + }; + }; +} From f341151cfa872ff8d80d3c00e090380920cda8c5 Mon Sep 17 00:00:00 2001 From: Raito Bezarius Date: Sat, 25 Mar 2023 17:02:52 +0100 Subject: [PATCH 04/49] nixos/tests/pixelfed: init test --- nixos/tests/all-tests.nix | 1 + nixos/tests/web-apps/pixelfed/default.nix | 8 +++++ nixos/tests/web-apps/pixelfed/standard.nix | 38 ++++++++++++++++++++++ pkgs/servers/web-apps/pixelfed/default.nix | 3 ++ 4 files changed, 50 insertions(+) create mode 100644 nixos/tests/web-apps/pixelfed/default.nix create mode 100644 nixos/tests/web-apps/pixelfed/standard.nix diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 8386219f73d8..38ff9f8cca4c 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -392,6 +392,7 @@ in { man = handleTest ./man.nix {}; mariadb-galera = handleTest ./mysql/mariadb-galera.nix {}; mastodon = discoverTests (import ./web-apps/mastodon { inherit handleTestOn; }); + pixelfed = discoverTests (import ./web-apps/pixelfed { inherit handleTestOn; }); mate = handleTest ./mate.nix {}; matomo = handleTest ./matomo.nix {}; matrix-appservice-irc = handleTest ./matrix/appservice-irc.nix {}; diff --git a/nixos/tests/web-apps/pixelfed/default.nix b/nixos/tests/web-apps/pixelfed/default.nix new file mode 100644 index 000000000000..4464ebe43486 --- /dev/null +++ b/nixos/tests/web-apps/pixelfed/default.nix @@ -0,0 +1,8 @@ +{ system ? builtins.currentSystem, handleTestOn }: +let + supportedSystems = [ "x86_64-linux" "i686-linux" ]; + +in +{ + standard = handleTestOn supportedSystems ./standard.nix { inherit system; }; +} diff --git a/nixos/tests/web-apps/pixelfed/standard.nix b/nixos/tests/web-apps/pixelfed/standard.nix new file mode 100644 index 000000000000..9260e27af960 --- /dev/null +++ b/nixos/tests/web-apps/pixelfed/standard.nix @@ -0,0 +1,38 @@ +import ../../make-test-python.nix ({pkgs, ...}: +{ + name = "pixelfed-standard"; + meta.maintainers = with pkgs.lib.maintainers; [ raitobezarius ]; + + nodes = { + server = { pkgs, ... }: { + services.pixelfed = { + enable = true; + domain = "pixelfed.local"; + # Configure NGINX. + nginx = {}; + secretFile = (pkgs.writeText "secrets.env" '' + # Snakeoil secret, can be any random 32-chars secret via CSPRNG. + APP_KEY=adKK9EcY8Hcj3PLU7rzG9rJ6KKTOtYfA + ''); + settings."FORCE_HTTPS_URLS" = false; + }; + }; + }; + + testScript = '' + # Wait for Pixelfed PHP pool + server.wait_for_unit("phpfpm-pixelfed.service") + # Wait for NGINX + server.wait_for_unit("nginx.service") + # Wait for HTTP port + server.wait_for_open_port(80) + # Access the homepage. + server.succeed("curl -H 'Host: pixelfed.local' http://localhost") + # Create an account + server.succeed("pixelfed-manage user:create --name=test --username=test --email=test@test.com --password=test") + # Create a OAuth token. + # TODO: figure out how to use it to send a image/toot + # server.succeed("pixelfed-manage passport:client --personal") + # server.succeed("curl -H 'Host: pixefed.local' -H 'Accept: application/json' -H 'Authorization: Bearer secret' -F'status'='test' http://localhost/api/v1/statuses") + ''; +}) diff --git a/pkgs/servers/web-apps/pixelfed/default.nix b/pkgs/servers/web-apps/pixelfed/default.nix index fb9b68f4af51..5a8dfbabd395 100644 --- a/pkgs/servers/web-apps/pixelfed/default.nix +++ b/pkgs/servers/web-apps/pixelfed/default.nix @@ -3,6 +3,7 @@ , fetchFromGitHub , php , pkgs +, nixosTests , dataDir ? "/var/lib/pixelfed" , runtimeDir ? "/run/pixelfed" }: @@ -37,6 +38,8 @@ in package.override rec { hash = "sha256-ZrvYKMSx5WymWR46/UKr5jCsclXXzBeY21ju22zeqN0="; }; + passthru.tests = { inherit (nixosTests) pixelfed; }; + meta = with lib; { description = "A federated image sharing platform"; license = licenses.agpl3Only; From 21b6bec0ff14f55c37a655529d6ad2e81f1c4212 Mon Sep 17 00:00:00 2001 From: Mikaela Allan Date: Wed, 3 May 2023 16:11:45 -0400 Subject: [PATCH 05/49] nixos/config/swap: improve randomEncrytion * add sector size parameter to swap randomEncryption * add key size parameter to swap randomEncryption * allow deviceName to be overridden for encrypted swap * create test for swap random encryption * update release notes --- .../manual/release-notes/rl-2305.section.md | 20 +++++ nixos/modules/config/swap.nix | 39 ++++++++- nixos/tests/all-tests.nix | 1 + nixos/tests/swap-random-encryption.nix | 80 +++++++++++++++++++ 4 files changed, 137 insertions(+), 3 deletions(-) create mode 100644 nixos/tests/swap-random-encryption.nix diff --git a/nixos/doc/manual/release-notes/rl-2305.section.md b/nixos/doc/manual/release-notes/rl-2305.section.md index 51d8136e203a..25d60402cb97 100644 --- a/nixos/doc/manual/release-notes/rl-2305.section.md +++ b/nixos/doc/manual/release-notes/rl-2305.section.md @@ -363,6 +363,26 @@ In addition to numerous new and upgraded packages, this release has the followin - `nextcloud` has an option to enable SSE-C in S3. +- NixOS swap partitions with random encryption can now control the sector size, cipher, and key size used to setup the plain encryption device over the + underlying block device rather than allowing them to be determined by `cryptsetup(8)`. One can use these features like so: + + ```nix + { + swapDevices = [ + { + device = "/dev/disk/by-partlabel/swapspace"; + + randomEncryption = { + enable = true; + cipher = "aes-xts-plain64"; + keySize = 512; + sectorSize = 4096; + }; + } + ]; + } + ``` + - `services.peertube` now requires you to specify the secret file `secrets.secretsFile`. It can be generated by running `openssl rand -hex 32`. Before upgrading, read the release notes for PeerTube: - [Release v5.0.0](https://github.com/Chocobozzz/PeerTube/releases/tag/v5.0.0) diff --git a/nixos/modules/config/swap.nix b/nixos/modules/config/swap.nix index 2c9c4c9c1a2d..1b63741e86c4 100644 --- a/nixos/modules/config/swap.nix +++ b/nixos/modules/config/swap.nix @@ -38,6 +38,34 @@ let ''; }; + keySize = mkOption { + default = null; + example = "512"; + type = types.nullOr types.int; + description = lib.mdDoc '' + Set the encryption key size for the plain device. + + If not specified, the amount of data to read from `source` will be + determined by cryptsetup. + + See `cryptsetup-open(8)` for details. + ''; + }; + + sectorSize = mkOption { + default = null; + example = "4096"; + type = types.nullOr types.int; + description = lib.mdDoc '' + Set the sector size for the plain encrypted device type. + + If not specified, the default sector size is determined from the + underlying block device. + + See `cryptsetup-open(8)` for details. + ''; + }; + source = mkOption { default = "/dev/urandom"; example = "/dev/random"; @@ -157,11 +185,11 @@ let }; - config = rec { + config = { device = mkIf options.label.isDefined "/dev/disk/by-label/${config.label}"; deviceName = lib.replaceStrings ["\\"] [""] (escapeSystemdPath config.device); - realDevice = if config.randomEncryption.enable then "/dev/mapper/${deviceName}" else config.device; + realDevice = if config.randomEncryption.enable then "/dev/mapper/${config.deviceName}" else config.device; }; }; @@ -247,7 +275,12 @@ in ''} ${optionalString sw.randomEncryption.enable '' cryptsetup plainOpen -c ${sw.randomEncryption.cipher} -d ${sw.randomEncryption.source} \ - ${optionalString sw.randomEncryption.allowDiscards "--allow-discards"} ${sw.device} ${sw.deviceName} + '' + concatLines (filter (s: s != "") [ + (optionalString (sw.randomEncryption.sectorSize != null) "--sector-size=${toString sw.randomEncryption.sectorSize} \\") + (optionalString (sw.randomEncryption.keySize != null) "--key-size=${toString sw.randomEncryption.keySize} \\") + (optionalString sw.randomEncryption.allowDiscards "--allow-discards \\") + ]) + '' + ${sw.device} ${sw.deviceName} mkswap ${sw.realDevice} ''} ''; diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 9acb2dc7a45b..28ab2d46d67f 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -667,6 +667,7 @@ in { sudo = handleTest ./sudo.nix {}; swap-file-btrfs = handleTest ./swap-file-btrfs.nix {}; swap-partition = handleTest ./swap-partition.nix {}; + swap-random-encryption = handleTest ./swap-random-encryption.nix {}; sway = handleTest ./sway.nix {}; switchTest = handleTest ./switch-test.nix {}; sympa = handleTest ./sympa.nix {}; diff --git a/nixos/tests/swap-random-encryption.nix b/nixos/tests/swap-random-encryption.nix new file mode 100644 index 000000000000..9e919db65dde --- /dev/null +++ b/nixos/tests/swap-random-encryption.nix @@ -0,0 +1,80 @@ +import ./make-test-python.nix ({ lib, pkgs, ... }: +{ + name = "swap-random-encryption"; + + nodes.machine = + { config, pkgs, lib, ... }: + { + environment.systemPackages = [ pkgs.cryptsetup ]; + + virtualisation.useDefaultFilesystems = false; + + virtualisation.rootDevice = "/dev/vda1"; + + boot.initrd.postDeviceCommands = '' + if ! test -b /dev/vda1; then + ${pkgs.parted}/bin/parted --script /dev/vda -- mklabel msdos + ${pkgs.parted}/bin/parted --script /dev/vda -- mkpart primary 1MiB -250MiB + ${pkgs.parted}/bin/parted --script /dev/vda -- mkpart primary -250MiB 100% + sync + fi + + FSTYPE=$(blkid -o value -s TYPE /dev/vda1 || true) + if test -z "$FSTYPE"; then + ${pkgs.e2fsprogs}/bin/mke2fs -t ext4 -L root /dev/vda1 + fi + ''; + + virtualisation.fileSystems = { + "/" = { + device = "/dev/disk/by-label/root"; + fsType = "ext4"; + }; + }; + + swapDevices = [ + { + device = "/dev/vda2"; + + randomEncryption = { + enable = true; + cipher = "aes-xts-plain64"; + keySize = 512; + sectorSize = 4096; + }; + } + ]; + }; + + testScript = '' + machine.wait_for_unit("multi-user.target") + + with subtest("Swap is active"): + # Doesn't matter if the numbers reported by `free` are slightly off due to unit conversions. + machine.succeed("free -h | grep -E 'Swap:\s+2[45][0-9]Mi'") + + with subtest("Swap device has 4k sector size"): + import json + result = json.loads(machine.succeed("lsblk -Jo PHY-SEC,LOG-SEC /dev/mapper/dev-vda2")) + block_devices = result["blockdevices"] + if len(block_devices) != 1: + raise Exception ("lsblk output did not report exactly one block device") + + swapDevice = block_devices[0]; + if not (swapDevice["phy-sec"] == 4096 and swapDevice["log-sec"] == 4096): + raise Exception ("swap device does not have the sector size specified in the configuration") + + with subtest("Swap encrypt has assigned cipher and keysize"): + import re + + results = machine.succeed("cryptsetup status dev-vda2").splitlines() + + cipher_pattern = re.compile(r"\s*cipher:\s+aes-xts-plain64\s*") + if not any(cipher_pattern.fullmatch(line) for line in results): + raise Exception ("swap device encryption does not use the cipher specified in the configuration") + + key_size_pattern = re.compile(r"\s*keysize:\s+512\s+bits\s*") + if not any(key_size_pattern.fullmatch(line) for line in results): + raise Exception ("swap device encryption does not use the key size specified in the configuration") + ''; +}) From cfe5a79639c826fe507b5eb54ebfe08d6191d10b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Sun, 7 May 2023 12:55:24 +0200 Subject: [PATCH 06/49] zfs: make kernel packages overridable We do not have callPackages (notice the s) for kernel packages. Hence it's not override zfs dependencies as we do not have an override function. This is fixed by splitting of the file into a generic builder function and 2 files for zfsStable and zfsUnstable. --- pkgs/os-specific/linux/zfs/default.nix | 270 ------------------------ pkgs/os-specific/linux/zfs/generic.nix | 222 +++++++++++++++++++ pkgs/os-specific/linux/zfs/stable.nix | 26 +++ pkgs/os-specific/linux/zfs/unstable.nix | 34 +++ pkgs/top-level/all-packages.nix | 8 +- pkgs/top-level/linux-kernels.nix | 12 +- 6 files changed, 295 insertions(+), 277 deletions(-) delete mode 100644 pkgs/os-specific/linux/zfs/default.nix create mode 100644 pkgs/os-specific/linux/zfs/generic.nix create mode 100644 pkgs/os-specific/linux/zfs/stable.nix create mode 100644 pkgs/os-specific/linux/zfs/unstable.nix diff --git a/pkgs/os-specific/linux/zfs/default.nix b/pkgs/os-specific/linux/zfs/default.nix deleted file mode 100644 index de4f531a2f2d..000000000000 --- a/pkgs/os-specific/linux/zfs/default.nix +++ /dev/null @@ -1,270 +0,0 @@ -{ pkgs, lib, stdenv, fetchFromGitHub, fetchpatch -, autoreconfHook269, util-linux, nukeReferences, coreutils -, perl, nixosTests -, configFile ? "all" - -# Userspace dependencies -, zlib, libuuid, python3, attr, openssl -, libtirpc -, nfs-utils, samba -, gawk, gnugrep, gnused, systemd -, smartmontools, enableMail ? false -, sysstat, pkg-config -, curl - -# Kernel dependencies -, kernel ? null -, enablePython ? true - -# for determining the latest compatible linuxPackages -, linuxPackages_6_1 ? pkgs.linuxKernel.packages.linux_6_1 -, linuxPackages_6_2 ? pkgs.linuxKernel.packages.linux_6_2 -}: - -let - inherit (lib) any optionalString optionals optional makeBinPath; - - smartmon = smartmontools.override { inherit enableMail; }; - - buildKernel = any (n: n == configFile) [ "kernel" "all" ]; - buildUser = any (n: n == configFile) [ "user" "all" ]; - - # XXX: You always want to build kernel modules with the same stdenv as the - # kernel was built with. However, since zfs can also be built for userspace we - # need to correctly pick between the provided/default stdenv, and the one used - # by the kernel. - # If you don't do this your ZFS builds will fail on any non-standard (e.g. - # clang-built) kernels. - stdenv' = if kernel == null then stdenv else kernel.stdenv; - - common = { version - , sha256 - , extraPatches ? [] - , rev ? "zfs-${version}" - , isUnstable ? false - , latestCompatibleLinuxPackages - , kernelCompatible ? null }: - - stdenv'.mkDerivation { - name = "zfs-${configFile}-${version}${optionalString buildKernel "-${kernel.version}"}"; - - src = fetchFromGitHub { - owner = "openzfs"; - repo = "zfs"; - inherit rev sha256; - }; - - patches = [ - (fetchpatch { - name = "musl.patch"; - url = "https://github.com/openzfs/zfs/commit/1f19826c9ac85835cbde61a7439d9d1fefe43a4a.patch"; - sha256 = "XEaK227ubfOwlB2s851UvZ6xp/QOtYUWYsKTkEHzmo0="; - }) - ] ++ extraPatches; - - postPatch = optionalString buildKernel '' - patchShebangs scripts - # The arrays must remain the same length, so we repeat a flag that is - # already part of the command and therefore has no effect. - substituteInPlace ./module/os/linux/zfs/zfs_ctldir.c \ - --replace '"/usr/bin/env", "umount"' '"${util-linux}/bin/umount", "-n"' \ - --replace '"/usr/bin/env", "mount"' '"${util-linux}/bin/mount", "-n"' - '' + optionalString buildUser '' - substituteInPlace ./lib/libshare/os/linux/nfs.c --replace "/usr/sbin/exportfs" "${ - # We don't *need* python support, but we set it like this to minimize closure size: - # If it's disabled by default, no need to enable it, even if we have python enabled - # And if it's enabled by default, only change that if we explicitly disable python to remove python from the closure - nfs-utils.override (old: { enablePython = old.enablePython or true && enablePython; }) - }/bin/exportfs" - substituteInPlace ./lib/libshare/smb.h --replace "/usr/bin/net" "${samba}/bin/net" - # Disable dynamic loading of libcurl - substituteInPlace ./config/user-libfetch.m4 --replace "curl-config --built-shared" "true" - substituteInPlace ./config/user-systemd.m4 --replace "/usr/lib/modules-load.d" "$out/etc/modules-load.d" - substituteInPlace ./config/zfs-build.m4 --replace "\$sysconfdir/init.d" "$out/etc/init.d" \ - --replace "/etc/default" "$out/etc/default" - substituteInPlace ./etc/zfs/Makefile.am --replace "\$(sysconfdir)" "$out/etc" - - substituteInPlace ./contrib/initramfs/hooks/Makefile.am \ - --replace "/usr/share/initramfs-tools/hooks" "$out/usr/share/initramfs-tools/hooks" - substituteInPlace ./contrib/initramfs/Makefile.am \ - --replace "/usr/share/initramfs-tools" "$out/usr/share/initramfs-tools" - substituteInPlace ./contrib/initramfs/scripts/Makefile.am \ - --replace "/usr/share/initramfs-tools/scripts" "$out/usr/share/initramfs-tools/scripts" - substituteInPlace ./contrib/initramfs/scripts/local-top/Makefile.am \ - --replace "/usr/share/initramfs-tools/scripts/local-top" "$out/usr/share/initramfs-tools/scripts/local-top" - substituteInPlace ./contrib/initramfs/scripts/Makefile.am \ - --replace "/usr/share/initramfs-tools/scripts" "$out/usr/share/initramfs-tools/scripts" - substituteInPlace ./contrib/initramfs/scripts/local-top/Makefile.am \ - --replace "/usr/share/initramfs-tools/scripts/local-top" "$out/usr/share/initramfs-tools/scripts/local-top" - substituteInPlace ./etc/systemd/system/Makefile.am \ - --replace '$(DESTDIR)$(systemdunitdir)' "$out"'$(DESTDIR)$(systemdunitdir)' - - substituteInPlace ./contrib/initramfs/conf.d/Makefile.am \ - --replace "/usr/share/initramfs-tools/conf.d" "$out/usr/share/initramfs-tools/conf.d" - substituteInPlace ./contrib/initramfs/conf-hooks.d/Makefile.am \ - --replace "/usr/share/initramfs-tools/conf-hooks.d" "$out/usr/share/initramfs-tools/conf-hooks.d" - - substituteInPlace ./cmd/vdev_id/vdev_id \ - --replace "PATH=/bin:/sbin:/usr/bin:/usr/sbin" \ - "PATH=${makeBinPath [ coreutils gawk gnused gnugrep systemd ]}" - ''; - - nativeBuildInputs = [ autoreconfHook269 nukeReferences ] - ++ optionals buildKernel (kernel.moduleBuildDependencies ++ [ perl ]) - ++ optional buildUser pkg-config; - buildInputs = optionals buildUser [ zlib libuuid attr libtirpc ] - ++ optional buildUser openssl - ++ optional buildUser curl - ++ optional (buildUser && enablePython) python3; - - # for zdb to get the rpath to libgcc_s, needed for pthread_cancel to work - NIX_CFLAGS_LINK = "-lgcc_s"; - - hardeningDisable = [ "fortify" "stackprotector" "pic" ]; - - configureFlags = [ - "--with-config=${configFile}" - "--with-tirpc=1" - (lib.withFeatureAs (buildUser && enablePython) "python" python3.interpreter) - ] ++ optionals buildUser [ - "--with-dracutdir=$(out)/lib/dracut" - "--with-udevdir=$(out)/lib/udev" - "--with-systemdunitdir=$(out)/etc/systemd/system" - "--with-systemdpresetdir=$(out)/etc/systemd/system-preset" - "--with-systemdgeneratordir=$(out)/lib/systemd/system-generator" - "--with-mounthelperdir=$(out)/bin" - "--libexecdir=$(out)/libexec" - "--sysconfdir=/etc" - "--localstatedir=/var" - "--enable-systemd" - ] ++ optionals buildKernel ([ - "--with-linux=${kernel.dev}/lib/modules/${kernel.modDirVersion}/source" - "--with-linux-obj=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" - ] ++ kernel.makeFlags); - - makeFlags = optionals buildKernel kernel.makeFlags; - - enableParallelBuilding = true; - - installFlags = [ - "sysconfdir=\${out}/etc" - "DEFAULT_INITCONF_DIR=\${out}/default" - "INSTALL_MOD_PATH=\${out}" - ]; - - # Enabling BTF causes zfs to be build with debug symbols. - # Since zfs compress kernel modules on installation, our strip hooks skip stripping them. - # Hence we strip modules prior to compression. - postBuild = optionalString buildKernel '' - find . -name "*.ko" -print0 | xargs -0 -P$NIX_BUILD_CORES ${stdenv.cc.targetPrefix}strip --strip-debug - ''; - - postInstall = optionalString buildKernel '' - # Add reference that cannot be detected due to compressed kernel module - mkdir -p "$out/nix-support" - echo "${util-linux}" >> "$out/nix-support/extra-refs" - '' + optionalString buildUser '' - # Remove provided services as they are buggy - rm $out/etc/systemd/system/zfs-import-*.service - - sed -i '/zfs-import-scan.service/d' $out/etc/systemd/system/* - - for i in $out/etc/systemd/system/*; do - substituteInPlace $i --replace "zfs-import-cache.service" "zfs-import.target" - done - - # Remove tests because they add a runtime dependency on gcc - rm -rf $out/share/zfs/zfs-tests - - # Add Bash completions. - install -v -m444 -D -t $out/share/bash-completion/completions contrib/bash_completion.d/zfs - (cd $out/share/bash-completion/completions; ln -s zfs zpool) - ''; - - postFixup = let - path = "PATH=${makeBinPath [ coreutils gawk gnused gnugrep util-linux smartmon sysstat ]}:$PATH"; - in '' - for i in $out/libexec/zfs/zpool.d/*; do - sed -i '2i${path}' $i - done - ''; - - outputs = [ "out" ] ++ optionals buildUser [ "dev" ]; - - passthru = { - inherit enableMail latestCompatibleLinuxPackages; - - tests = - if isUnstable then [ - nixosTests.zfs.unstable - ] else [ - nixosTests.zfs.installer - nixosTests.zfs.stable - ]; - }; - - meta = { - description = "ZFS Filesystem Linux Kernel module"; - longDescription = '' - ZFS is a filesystem that combines a logical volume manager with a - Copy-On-Write filesystem with data integrity detection and repair, - snapshotting, cloning, block devices, deduplication, and more. - ''; - homepage = "https://github.com/openzfs/zfs"; - changelog = "https://github.com/openzfs/zfs/releases/tag/zfs-${version}"; - license = lib.licenses.cddl; - platforms = lib.platforms.linux; - maintainers = with lib.maintainers; [ jcumming jonringer globin raitobezarius ]; - mainProgram = "zfs"; - # If your Linux kernel version is not yet supported by zfs, try zfsUnstable. - # On NixOS set the option boot.zfs.enableUnstable. - broken = buildKernel && (kernelCompatible != null) && !kernelCompatible; - }; - }; -in { - # also check if kernel version constraints in - # ./nixos/modules/tasks/filesystems/zfs.nix needs - # to be adapted - zfsStable = common { - # check the release notes for compatible kernels - kernelCompatible = - if stdenv'.isx86_64 - then kernel.kernelOlder "6.3" - else kernel.kernelOlder "6.2"; - latestCompatibleLinuxPackages = - if stdenv'.isx86_64 - then linuxPackages_6_2 - else linuxPackages_6_1; - - # this package should point to the latest release. - version = "2.1.11"; - - sha256 = "tJLwyqUj1l5F0WKZDeMGrEFa8fc/axKqm31xtN51a5M="; - }; - - zfsUnstable = common { - # check the release notes for compatible kernels - # NOTE: - # zfs-2.1.9<=x<=2.1.10 is broken with aarch64-linux-6.2 - # for future releases, please delete this condition. - kernelCompatible = - if stdenv'.isx86_64 - then kernel.kernelOlder "6.3" - else kernel.kernelOlder "6.2"; - latestCompatibleLinuxPackages = - if stdenv'.isx86_64 - then linuxPackages_6_2 - else linuxPackages_6_1; - - # this package should point to a version / git revision compatible with the latest kernel release - # IMPORTANT: Always use a tagged release candidate or commits from the - # zfs--staging branch, because this is tested by the OpenZFS - # maintainers. - version = "2.1.12-staging-2023-04-18"; - rev = "e25f9131d679692704c11dc0c1df6d4585b70c35"; - - sha256 = "tJLwyqUj1l5F0WKZDeMGrEFa8fc/axKqm31xtN51a5M="; - - isUnstable = true; - }; -} diff --git a/pkgs/os-specific/linux/zfs/generic.nix b/pkgs/os-specific/linux/zfs/generic.nix new file mode 100644 index 000000000000..88838e8cabac --- /dev/null +++ b/pkgs/os-specific/linux/zfs/generic.nix @@ -0,0 +1,222 @@ +{ pkgs, lib, stdenv, fetchFromGitHub, fetchpatch +, autoreconfHook269, util-linux, nukeReferences, coreutils +, perl, nixosTests +, configFile ? "all" + +# Userspace dependencies +, zlib, libuuid, python3, attr, openssl +, libtirpc +, nfs-utils, samba +, gawk, gnugrep, gnused, systemd +, smartmontools, enableMail ? false +, sysstat, pkg-config +, curl + +# Kernel dependencies +, kernel ? null +, enablePython ? true +, ... +}: + +{ version +, sha256 +, extraPatches ? [] +, rev ? "zfs-${version}" +, isUnstable ? false +, latestCompatibleLinuxPackages +, kernelCompatible ? null +}: + +let + inherit (lib) any optionalString optionals optional makeBinPath; + + smartmon = smartmontools.override { inherit enableMail; }; + + buildKernel = any (n: n == configFile) [ "kernel" "all" ]; + buildUser = any (n: n == configFile) [ "user" "all" ]; + + # XXX: You always want to build kernel modules with the same stdenv as the + # kernel was built with. However, since zfs can also be built for userspace we + # need to correctly pick between the provided/default stdenv, and the one used + # by the kernel. + # If you don't do this your ZFS builds will fail on any non-standard (e.g. + # clang-built) kernels. + stdenv' = if kernel == null then stdenv else kernel.stdenv; +in + +stdenv'.mkDerivation { + name = "zfs-${configFile}-${version}${optionalString buildKernel "-${kernel.version}"}"; + + src = fetchFromGitHub { + owner = "openzfs"; + repo = "zfs"; + inherit rev sha256; + }; + + patches = [ + (fetchpatch { + name = "musl.patch"; + url = "https://github.com/openzfs/zfs/commit/1f19826c9ac85835cbde61a7439d9d1fefe43a4a.patch"; + sha256 = "XEaK227ubfOwlB2s851UvZ6xp/QOtYUWYsKTkEHzmo0="; + }) + ] ++ extraPatches; + + postPatch = optionalString buildKernel '' + patchShebangs scripts + # The arrays must remain the same length, so we repeat a flag that is + # already part of the command and therefore has no effect. + substituteInPlace ./module/os/linux/zfs/zfs_ctldir.c \ + --replace '"/usr/bin/env", "umount"' '"${util-linux}/bin/umount", "-n"' \ + --replace '"/usr/bin/env", "mount"' '"${util-linux}/bin/mount", "-n"' + '' + optionalString buildUser '' + substituteInPlace ./lib/libshare/os/linux/nfs.c --replace "/usr/sbin/exportfs" "${ + # We don't *need* python support, but we set it like this to minimize closure size: + # If it's disabled by default, no need to enable it, even if we have python enabled + # And if it's enabled by default, only change that if we explicitly disable python to remove python from the closure + nfs-utils.override (old: { enablePython = old.enablePython or true && enablePython; }) + }/bin/exportfs" + substituteInPlace ./lib/libshare/smb.h --replace "/usr/bin/net" "${samba}/bin/net" + # Disable dynamic loading of libcurl + substituteInPlace ./config/user-libfetch.m4 --replace "curl-config --built-shared" "true" + substituteInPlace ./config/user-systemd.m4 --replace "/usr/lib/modules-load.d" "$out/etc/modules-load.d" + substituteInPlace ./config/zfs-build.m4 --replace "\$sysconfdir/init.d" "$out/etc/init.d" \ + --replace "/etc/default" "$out/etc/default" + substituteInPlace ./etc/zfs/Makefile.am --replace "\$(sysconfdir)" "$out/etc" + + substituteInPlace ./contrib/initramfs/hooks/Makefile.am \ + --replace "/usr/share/initramfs-tools/hooks" "$out/usr/share/initramfs-tools/hooks" + substituteInPlace ./contrib/initramfs/Makefile.am \ + --replace "/usr/share/initramfs-tools" "$out/usr/share/initramfs-tools" + substituteInPlace ./contrib/initramfs/scripts/Makefile.am \ + --replace "/usr/share/initramfs-tools/scripts" "$out/usr/share/initramfs-tools/scripts" + substituteInPlace ./contrib/initramfs/scripts/local-top/Makefile.am \ + --replace "/usr/share/initramfs-tools/scripts/local-top" "$out/usr/share/initramfs-tools/scripts/local-top" + substituteInPlace ./contrib/initramfs/scripts/Makefile.am \ + --replace "/usr/share/initramfs-tools/scripts" "$out/usr/share/initramfs-tools/scripts" + substituteInPlace ./contrib/initramfs/scripts/local-top/Makefile.am \ + --replace "/usr/share/initramfs-tools/scripts/local-top" "$out/usr/share/initramfs-tools/scripts/local-top" + substituteInPlace ./etc/systemd/system/Makefile.am \ + --replace '$(DESTDIR)$(systemdunitdir)' "$out"'$(DESTDIR)$(systemdunitdir)' + + substituteInPlace ./contrib/initramfs/conf.d/Makefile.am \ + --replace "/usr/share/initramfs-tools/conf.d" "$out/usr/share/initramfs-tools/conf.d" + substituteInPlace ./contrib/initramfs/conf-hooks.d/Makefile.am \ + --replace "/usr/share/initramfs-tools/conf-hooks.d" "$out/usr/share/initramfs-tools/conf-hooks.d" + + substituteInPlace ./cmd/vdev_id/vdev_id \ + --replace "PATH=/bin:/sbin:/usr/bin:/usr/sbin" \ + "PATH=${makeBinPath [ coreutils gawk gnused gnugrep systemd ]}" + ''; + + nativeBuildInputs = [ autoreconfHook269 nukeReferences ] + ++ optionals buildKernel (kernel.moduleBuildDependencies ++ [ perl ]) + ++ optional buildUser pkg-config; + buildInputs = optionals buildUser [ zlib libuuid attr libtirpc ] + ++ optional buildUser openssl + ++ optional buildUser curl + ++ optional (buildUser && enablePython) python3; + + # for zdb to get the rpath to libgcc_s, needed for pthread_cancel to work + NIX_CFLAGS_LINK = "-lgcc_s"; + + hardeningDisable = [ "fortify" "stackprotector" "pic" ]; + + configureFlags = [ + "--with-config=${configFile}" + "--with-tirpc=1" + (lib.withFeatureAs (buildUser && enablePython) "python" python3.interpreter) + ] ++ optionals buildUser [ + "--with-dracutdir=$(out)/lib/dracut" + "--with-udevdir=$(out)/lib/udev" + "--with-systemdunitdir=$(out)/etc/systemd/system" + "--with-systemdpresetdir=$(out)/etc/systemd/system-preset" + "--with-systemdgeneratordir=$(out)/lib/systemd/system-generator" + "--with-mounthelperdir=$(out)/bin" + "--libexecdir=$(out)/libexec" + "--sysconfdir=/etc" + "--localstatedir=/var" + "--enable-systemd" + ] ++ optionals buildKernel ([ + "--with-linux=${kernel.dev}/lib/modules/${kernel.modDirVersion}/source" + "--with-linux-obj=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" + ] ++ kernel.makeFlags); + + makeFlags = optionals buildKernel kernel.makeFlags; + + enableParallelBuilding = true; + + installFlags = [ + "sysconfdir=\${out}/etc" + "DEFAULT_INITCONF_DIR=\${out}/default" + "INSTALL_MOD_PATH=\${out}" + ]; + + # Enabling BTF causes zfs to be build with debug symbols. + # Since zfs compress kernel modules on installation, our strip hooks skip stripping them. + # Hence we strip modules prior to compression. + postBuild = optionalString buildKernel '' + find . -name "*.ko" -print0 | xargs -0 -P$NIX_BUILD_CORES ${stdenv.cc.targetPrefix}strip --strip-debug + ''; + + postInstall = optionalString buildKernel '' + # Add reference that cannot be detected due to compressed kernel module + mkdir -p "$out/nix-support" + echo "${util-linux}" >> "$out/nix-support/extra-refs" + '' + optionalString buildUser '' + # Remove provided services as they are buggy + rm $out/etc/systemd/system/zfs-import-*.service + + sed -i '/zfs-import-scan.service/d' $out/etc/systemd/system/* + + for i in $out/etc/systemd/system/*; do + substituteInPlace $i --replace "zfs-import-cache.service" "zfs-import.target" + done + + # Remove tests because they add a runtime dependency on gcc + rm -rf $out/share/zfs/zfs-tests + + # Add Bash completions. + install -v -m444 -D -t $out/share/bash-completion/completions contrib/bash_completion.d/zfs + (cd $out/share/bash-completion/completions; ln -s zfs zpool) + ''; + + postFixup = let + path = "PATH=${makeBinPath [ coreutils gawk gnused gnugrep util-linux smartmon sysstat ]}:$PATH"; + in '' + for i in $out/libexec/zfs/zpool.d/*; do + sed -i '2i${path}' $i + done + ''; + + outputs = [ "out" ] ++ optionals buildUser [ "dev" ]; + + passthru = { + inherit enableMail latestCompatibleLinuxPackages; + + tests = + if isUnstable then [ + nixosTests.zfs.unstable + ] else [ + nixosTests.zfs.installer + nixosTests.zfs.stable + ]; + }; + + meta = { + description = "ZFS Filesystem Linux Kernel module"; + longDescription = '' + ZFS is a filesystem that combines a logical volume manager with a + Copy-On-Write filesystem with data integrity detection and repair, + snapshotting, cloning, block devices, deduplication, and more. + ''; + homepage = "https://github.com/openzfs/zfs"; + changelog = "https://github.com/openzfs/zfs/releases/tag/zfs-${version}"; + license = lib.licenses.cddl; + platforms = lib.platforms.linux; + maintainers = with lib.maintainers; [ jcumming jonringer globin raitobezarius ]; + mainProgram = "zfs"; + # If your Linux kernel version is not yet supported by zfs, try zfsUnstable. + # On NixOS set the option boot.zfs.enableUnstable. + broken = buildKernel && (kernelCompatible != null) && !kernelCompatible; + }; +} diff --git a/pkgs/os-specific/linux/zfs/stable.nix b/pkgs/os-specific/linux/zfs/stable.nix new file mode 100644 index 000000000000..48c58874cfef --- /dev/null +++ b/pkgs/os-specific/linux/zfs/stable.nix @@ -0,0 +1,26 @@ +{ callPackage +, kernel ? null +, stdenv +, linuxKernel +, ... +} @ args: + +let + stdenv' = if kernel == null then stdenv else kernel.stdenv; +in +callPackage ./generic.nix args { + # check the release notes for compatible kernels + kernelCompatible = + if stdenv'.isx86_64 + then kernel.kernelOlder "6.3" + else kernel.kernelOlder "6.2"; + latestCompatibleLinuxPackages = + if stdenv'.isx86_64 + then linuxKernel.packages.linux_6_1 + else linuxKernel.packages.linux_6_2; + + # this package should point to the latest release. + version = "2.1.11"; + + sha256 = "tJLwyqUj1l5F0WKZDeMGrEFa8fc/axKqm31xtN51a5M="; +} diff --git a/pkgs/os-specific/linux/zfs/unstable.nix b/pkgs/os-specific/linux/zfs/unstable.nix new file mode 100644 index 000000000000..3953b5ed8d93 --- /dev/null +++ b/pkgs/os-specific/linux/zfs/unstable.nix @@ -0,0 +1,34 @@ +{ callPackage +, kernel ? null +, stdenv +, linuxKernel +, ... +} @ args: + +let + stdenv' = if kernel == null then stdenv else kernel.stdenv; +in +callPackage ./generic.nix args { + # check the release notes for compatible kernels + # NOTE: + # zfs-2.1.9<=x<=2.1.10 is broken with aarch64-linux-6.2 + # for future releases, please delete this condition. + kernelCompatible = if stdenv'.isx86_64 + then kernel.kernelOlder "6.3" + else kernel.kernelOlder "6.2"; + latestCompatibleLinuxPackages = + if stdenv'.isx86_64 + then linuxKernel.packages.linux_6_2 + else linuxKernel.packages.linux_6_1; + + # this package should point to a version / git revision compatible with the latest kernel release + # IMPORTANT: Always use a tagged release candidate or commits from the + # zfs--staging branch, because this is tested by the OpenZFS + # maintainers. + version = "2.1.12-staging-2023-04-18"; + rev = "e25f9131d679692704c11dc0c1df6d4585b70c35"; + + sha256 = "tJLwyqUj1l5F0WKZDeMGrEFa8fc/axKqm31xtN51a5M="; + + isUnstable = true; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d17ccef583dd..ee79c20c8797 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -27649,10 +27649,12 @@ with pkgs; zenmonitor = callPackage ../os-specific/linux/zenmonitor { }; - inherit (callPackages ../os-specific/linux/zfs { + zfsStable = callPackage ../os-specific/linux/zfs/stable.nix { configFile = "user"; - }) zfsStable zfsUnstable; - + }; + zfsUnstable = callPackage ../os-specific/linux/zfs/unstable.nix { + configFile = "user"; + }; zfs = zfsStable; ### DATA diff --git a/pkgs/top-level/linux-kernels.nix b/pkgs/top-level/linux-kernels.nix index 52245dc38e81..09ffa40deba8 100644 --- a/pkgs/top-level/linux-kernels.nix +++ b/pkgs/top-level/linux-kernels.nix @@ -547,10 +547,14 @@ in { zenpower = callPackage ../os-specific/linux/zenpower { }; - inherit (callPackage ../os-specific/linux/zfs { - configFile = "kernel"; - inherit pkgs kernel; - }) zfsStable zfsUnstable; + zfsStable = callPackage ../os-specific/linux/zfs/stable.nix { + configFile = "kernel"; + inherit pkgs kernel; + }; + zfsUnstable = callPackage ../os-specific/linux/zfs/unstable.nix { + configFile = "kernel"; + inherit pkgs kernel; + }; zfs = zfsStable; can-isotp = callPackage ../os-specific/linux/can-isotp { }; From 445d7cae2aebeabe4f9ba6ecd2f2177ac1be4bcb Mon Sep 17 00:00:00 2001 From: Mikaela Allan Date: Sun, 7 May 2023 11:42:36 -0400 Subject: [PATCH 07/49] nixos/config/swap: refactor startup script generation --- nixos/modules/config/swap.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/nixos/modules/config/swap.nix b/nixos/modules/config/swap.nix index 1b63741e86c4..5c812a9226e8 100644 --- a/nixos/modules/config/swap.nix +++ b/nixos/modules/config/swap.nix @@ -275,12 +275,12 @@ in ''} ${optionalString sw.randomEncryption.enable '' cryptsetup plainOpen -c ${sw.randomEncryption.cipher} -d ${sw.randomEncryption.source} \ - '' + concatLines (filter (s: s != "") [ - (optionalString (sw.randomEncryption.sectorSize != null) "--sector-size=${toString sw.randomEncryption.sectorSize} \\") - (optionalString (sw.randomEncryption.keySize != null) "--key-size=${toString sw.randomEncryption.keySize} \\") - (optionalString sw.randomEncryption.allowDiscards "--allow-discards \\") - ]) + '' - ${sw.device} ${sw.deviceName} + '' + concatMapStrings (arg: arg + " \\\n") (flatten [ + (optional (sw.randomEncryption.sectorSize != null) "--sector-size=${toString sw.randomEncryption.sectorSize}") + (optional (sw.randomEncryption.keySize != null) "--key-size=${toString sw.randomEncryption.keySize}") + (optional sw.randomEncryption.allowDiscards "--allow-discards") + ]) + '' + ${sw.device} ${sw.deviceName} mkswap ${sw.realDevice} ''} ''; From 7470248b58c3db72fafc2b9b9be5108b19c60722 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Fri, 12 May 2023 06:14:45 +0000 Subject: [PATCH 08/49] sq: 0.33.0 -> 0.35.0 --- pkgs/development/tools/sq/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/tools/sq/default.nix b/pkgs/development/tools/sq/default.nix index dd5931f514e1..d5be7ed0a286 100644 --- a/pkgs/development/tools/sq/default.nix +++ b/pkgs/development/tools/sq/default.nix @@ -2,16 +2,16 @@ buildGoModule rec { pname = "sq"; - version = "0.33.0"; + version = "0.35.0"; src = fetchFromGitHub { owner = "neilotoole"; repo = pname; rev = "v${version}"; - sha256 = "sha256-1I6adQLbVx4Gj9rdocpEPyQagEpaI4a4sHUaSyntyGI="; + sha256 = "sha256-yCV/vn6c1FeHhPM+YCS6tr8M45SZiytrDjdocKVJ5Mk="; }; - vendorHash = "sha256-e14qz4KTD2aAl1G5wj2/T0cxocvscj0r+c8So+omA38="; + vendorHash = "sha256-SOnYK9JtP1V8Y6/GszU26kYM1e2xupBmHsJrVpRT2vc="; proxyVendor = true; From fa09e0a3c7cc91b766b0bd34fcfe51b69bd8cca6 Mon Sep 17 00:00:00 2001 From: nikstur Date: Thu, 11 May 2023 14:35:00 +0200 Subject: [PATCH 09/49] nixos/filesystems: init erofs Enable using an erofs filesystem as one of the filesystems needed to boot the system. This is useful for example in image based deployments where the Nix store is mounted read only. [erofs](https://docs.kernel.org/filesystems/erofs.html) offers multiple benefits over older filesystems like squashfs. Skip fsck.erofs because it is still experimental. --- nixos/modules/module-list.nix | 1 + nixos/modules/system/boot/stage-1-init.sh | 3 + nixos/modules/tasks/filesystems/erofs.nix | 21 ++++ nixos/tests/non-default-filesystems.nix | 139 +++++++++++++++------- 4 files changed, 120 insertions(+), 44 deletions(-) create mode 100644 nixos/modules/tasks/filesystems/erofs.nix diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 4941b78a5772..6d3588d11ccf 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -1370,6 +1370,7 @@ ./tasks/filesystems/cifs.nix ./tasks/filesystems/ecryptfs.nix ./tasks/filesystems/envfs.nix + ./tasks/filesystems/erofs.nix ./tasks/filesystems/exfat.nix ./tasks/filesystems/ext.nix ./tasks/filesystems/f2fs.nix diff --git a/nixos/modules/system/boot/stage-1-init.sh b/nixos/modules/system/boot/stage-1-init.sh index 835788dbbc97..387c27d86ebb 100644 --- a/nixos/modules/system/boot/stage-1-init.sh +++ b/nixos/modules/system/boot/stage-1-init.sh @@ -293,6 +293,9 @@ checkFS() { # Skip fsck for inherently readonly filesystems. if [ "$fsType" = squashfs ]; then return 0; fi + # Skip fsck.erofs because it is still experimental. + if [ "$fsType" = erofs ]; then return 0; fi + # If we couldn't figure out the FS type, then skip fsck. if [ "$fsType" = auto ]; then echo 'cannot check filesystem with type "auto"!' diff --git a/nixos/modules/tasks/filesystems/erofs.nix b/nixos/modules/tasks/filesystems/erofs.nix new file mode 100644 index 000000000000..a3d657669350 --- /dev/null +++ b/nixos/modules/tasks/filesystems/erofs.nix @@ -0,0 +1,21 @@ +{ config, lib, pkgs, ... }: + +let + + inInitrd = lib.any (fs: fs == "erofs") config.boot.initrd.supportedFilesystems; + inSystem = lib.any (fs: fs == "erofs") config.boot.supportedFilesystems; + +in + +{ + config = lib.mkIf (inInitrd || inSystem) { + + system.fsPackages = [ pkgs.erofs-utils ]; + + boot.initrd.availableKernelModules = lib.mkIf inInitrd [ "erofs" ]; + + # fsck.erofs is currently experimental and should not be run as a + # privileged user. Thus, it is not included in the initrd. + + }; +} diff --git a/nixos/tests/non-default-filesystems.nix b/nixos/tests/non-default-filesystems.nix index d4e8bfbc65e9..03cc5bf709a4 100644 --- a/nixos/tests/non-default-filesystems.nix +++ b/nixos/tests/non-default-filesystems.nix @@ -1,55 +1,106 @@ -import ./make-test-python.nix ({ lib, pkgs, ... }: +{ system ? builtins.currentSystem +, config ? { } +, pkgs ? import ../.. { inherit system config; } +}: + +with import ../lib/testing-python.nix { inherit system pkgs; }; +with pkgs.lib; { - name = "non-default-filesystems"; - - nodes.machine = - { config, pkgs, lib, ... }: - let - disk = config.virtualisation.rootDevice; - in + btrfs = makeTest { - virtualisation.rootDevice = "/dev/vda"; - virtualisation.useDefaultFilesystems = false; + name = "non-default-filesystems-btrfs"; - boot.initrd.availableKernelModules = [ "btrfs" ]; - boot.supportedFilesystems = [ "btrfs" ]; + nodes.machine = + { config, pkgs, lib, ... }: + let + disk = config.virtualisation.rootDevice; + in + { + virtualisation.rootDevice = "/dev/vda"; + virtualisation.useDefaultFilesystems = false; - boot.initrd.postDeviceCommands = '' - FSTYPE=$(blkid -o value -s TYPE ${disk} || true) - if test -z "$FSTYPE"; then - modprobe btrfs - ${pkgs.btrfs-progs}/bin/mkfs.btrfs ${disk} + boot.initrd.availableKernelModules = [ "btrfs" ]; + boot.supportedFilesystems = [ "btrfs" ]; - mkdir /nixos - mount -t btrfs ${disk} /nixos + boot.initrd.postDeviceCommands = '' + FSTYPE=$(blkid -o value -s TYPE ${disk} || true) + if test -z "$FSTYPE"; then + modprobe btrfs + ${pkgs.btrfs-progs}/bin/mkfs.btrfs ${disk} - ${pkgs.btrfs-progs}/bin/btrfs subvolume create /nixos/root - ${pkgs.btrfs-progs}/bin/btrfs subvolume create /nixos/home + mkdir /nixos + mount -t btrfs ${disk} /nixos - umount /nixos - fi + ${pkgs.btrfs-progs}/bin/btrfs subvolume create /nixos/root + ${pkgs.btrfs-progs}/bin/btrfs subvolume create /nixos/home + + umount /nixos + fi + ''; + + virtualisation.fileSystems = { + "/" = { + device = disk; + fsType = "btrfs"; + options = [ "subvol=/root" ]; + }; + + "/home" = { + device = disk; + fsType = "btrfs"; + options = [ "subvol=/home" ]; + }; + }; + }; + + testScript = '' + machine.wait_for_unit("multi-user.target") + + with subtest("BTRFS filesystems are mounted correctly"): + machine.succeed("grep -E '/dev/vda / btrfs rw,relatime,space_cache=v2,subvolid=[0-9]+,subvol=/root 0 0' /proc/mounts") + machine.succeed("grep -E '/dev/vda /home btrfs rw,relatime,space_cache=v2,subvolid=[0-9]+,subvol=/home 0 0' /proc/mounts") ''; - - virtualisation.fileSystems = { - "/" = { - device = disk; - fsType = "btrfs"; - options = [ "subvol=/root" ]; - }; - - "/home" = { - device = disk; - fsType = "btrfs"; - options = [ "subvol=/home" ]; - }; - }; }; - testScript = '' - machine.wait_for_unit("multi-user.target") + erofs = + let + fsImage = "/tmp/non-default-filesystem.img"; + in + makeTest { + name = "non-default-filesystems-erofs"; - with subtest("BTRFS filesystems are mounted correctly"): - machine.succeed("grep -E '/dev/vda / btrfs rw,relatime,space_cache=v2,subvolid=[0-9]+,subvol=/root 0 0' /proc/mounts") - machine.succeed("grep -E '/dev/vda /home btrfs rw,relatime,space_cache=v2,subvolid=[0-9]+,subvol=/home 0 0' /proc/mounts") - ''; -}) + nodes.machine = _: { + virtualisation.qemu.drives = [{ + name = "non-default-filesystem"; + file = fsImage; + }]; + + virtualisation.fileSystems."/non-default" = { + device = "/dev/vdb"; + fsType = "erofs"; + neededForBoot = true; + }; + }; + + testScript = '' + import subprocess + import tempfile + + with tempfile.TemporaryDirectory() as tmp_dir: + with open(f"{tmp_dir}/filesystem", "w") as f: + f.write("erofs") + + subprocess.run([ + "${pkgs.erofs-utils}/bin/mkfs.erofs", + "${fsImage}", + tmp_dir, + ]) + + machine.start() + machine.wait_for_unit("default.target") + + file_contents = machine.succeed("cat /non-default/filesystem") + assert "erofs" in file_contents + ''; + }; +} From d2bccc54e014b55f4d12df90a54e870c8866a49e Mon Sep 17 00:00:00 2001 From: Nick Novitski Date: Fri, 12 May 2023 14:10:25 -0700 Subject: [PATCH 10/49] mruby: fix build on darwin --- pkgs/development/compilers/mruby/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/compilers/mruby/default.nix b/pkgs/development/compilers/mruby/default.nix index f7c40f8a0e7b..6cebeed7378e 100644 --- a/pkgs/development/compilers/mruby/default.nix +++ b/pkgs/development/compilers/mruby/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { # Necessary so it uses `gcc` instead of `ld` for linking. # https://github.com/mruby/mruby/blob/35be8b252495d92ca811d76996f03c470ee33380/tasks/toolchains/gcc.rake#L25 - preBuild = if stdenv.isLinux then "unset LD" else null; + preBuild = "unset LD"; installPhase = '' mkdir $out From e43f1587688e6b3b61ae6b861a37c8a69f58022b Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sat, 13 May 2023 11:38:12 +0200 Subject: [PATCH 11/49] neomutt: 20230407 -> 20230512 ChangeLog: https://github.com/neomutt/neomutt/releases/tag/20230512 --- .../networking/mailreaders/neomutt/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/applications/networking/mailreaders/neomutt/default.nix b/pkgs/applications/networking/mailreaders/neomutt/default.nix index 81ccd63d0f05..0b5c4877eb3b 100644 --- a/pkgs/applications/networking/mailreaders/neomutt/default.nix +++ b/pkgs/applications/networking/mailreaders/neomutt/default.nix @@ -1,19 +1,19 @@ { lib, stdenv, fetchFromGitHub, gettext, makeWrapper, tcl, which -, ncurses, perl , cyrus_sasl, gss, gpgme, libkrb5, libidn, libxml2, notmuch, openssl +, ncurses, perl , cyrus_sasl, gss, gpgme, libkrb5, libidn2, libxml2, notmuch, openssl , lua, lmdb, libxslt, docbook_xsl, docbook_xml_dtd_42, w3m, mailcap, sqlite, zlib, lndir , pkg-config, zstd, enableZstd ? true, enableMixmaster ? false, enableLua ? false , withContrib ? true }: stdenv.mkDerivation rec { - version = "20230407"; + version = "20230512"; pname = "neomutt"; src = fetchFromGitHub { owner = "neomutt"; repo = "neomutt"; rev = version; - sha256 = "sha256-cTZua1AbLMjkMhlUk2aMttj6HdwpJYnRYPuvukSxfwc="; + sha256 = "sha256-/NeY9WrPXg6sSM1jnjgQKL7vSn8dTrAnvj229KcEEro="; }; patches = [ @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { ]; buildInputs = [ - cyrus_sasl gss gpgme libkrb5 libidn ncurses + cyrus_sasl gss gpgme libkrb5 libidn2 ncurses notmuch openssl perl lmdb mailcap sqlite ] From 9291e507eb42a619bae29fb4826aa39d31cf9512 Mon Sep 17 00:00:00 2001 From: kilianar Date: Thu, 11 May 2023 14:29:15 +0200 Subject: [PATCH 12/49] logseq: 0.9.4 -> 0.9.6 https://github.com/logseq/logseq/releases/tag/0.9.6 --- pkgs/applications/misc/logseq/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/misc/logseq/default.nix b/pkgs/applications/misc/logseq/default.nix index fbcf4c97b479..7bb444b3b3e3 100644 --- a/pkgs/applications/misc/logseq/default.nix +++ b/pkgs/applications/misc/logseq/default.nix @@ -10,11 +10,11 @@ stdenv.mkDerivation rec { pname = "logseq"; - version = "0.9.4"; + version = "0.9.6"; src = fetchurl { url = "https://github.com/logseq/logseq/releases/download/${version}/logseq-linux-x64-${version}.AppImage"; - hash = "sha256-K04iIa/WnRtcHwRUHJbKqXO9c4l5xwHPvnwN5WX/Row="; + hash = "sha256-YC6oUKD48mKlX/bHWPMKm+0Ub0/5dnXmBFnVIGqzb/g="; name = "${pname}-${version}.AppImage"; }; From 36c70c49d378a3e5b9dbaee6455268f324629f24 Mon Sep 17 00:00:00 2001 From: Herwig Hochleitner Date: Sat, 13 May 2023 21:49:31 +0200 Subject: [PATCH 13/49] lldap: build lldap_set_password and migration-tool --- pkgs/servers/ldap/lldap/default.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkgs/servers/ldap/lldap/default.nix b/pkgs/servers/ldap/lldap/default.nix index 1eb885be7854..a141f4f3dc9c 100644 --- a/pkgs/servers/ldap/lldap/default.nix +++ b/pkgs/servers/ldap/lldap/default.nix @@ -90,6 +90,9 @@ let }); in rustPlatform.buildRustPackage (commonDerivationAttrs // { + + cargoBuildFlags = [ "-p" "lldap" "-p" "migration-tool" "-p" "lldap_set_password" ]; + patches = [ ./static-frontend-path.patch ]; @@ -98,6 +101,10 @@ in rustPlatform.buildRustPackage (commonDerivationAttrs // { substituteInPlace server/src/infra/tcp_server.rs --subst-var-by frontend '${frontend}' ''; + postInstall = '' + mv $out/bin/migration-tool $out/bin/lldap_migration_tool + ''; + passthru = { inherit frontend; tests = { From ec27bb35e329cdc10dd8c87fd9ccc1735e6bed08 Mon Sep 17 00:00:00 2001 From: Paul Dettorer Hervot Date: Sat, 13 May 2023 20:15:18 +0200 Subject: [PATCH 14/49] python310Packages.python-mapnik: disable the OGR test The OGR test fails since a gdal update at af10ec1c5b7af7106a5b5ea2b633275d549d7e8c. Upstream tests are still considered unreliable according to https://github.com/mapnik/python-mapnik/issues/255. --- pkgs/development/python-modules/python-mapnik/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/python-modules/python-mapnik/default.nix b/pkgs/development/python-modules/python-mapnik/default.nix index 18df3e4d5655..b682c719c2e4 100644 --- a/pkgs/development/python-modules/python-mapnik/default.nix +++ b/pkgs/development/python-modules/python-mapnik/default.nix @@ -106,6 +106,7 @@ buildPythonPackage rec { "test_compare_map" "test_dataraster_coloring" "test_dataraster_query_point" + "test_geometry_type" "test_good_files" "test_layer_init" "test_load_save_map" From 843f13924b0f891153602abf9d58d85a7d9c9d6f Mon Sep 17 00:00:00 2001 From: Paul Dettorer Hervot Date: Sat, 13 May 2023 22:07:07 +0200 Subject: [PATCH 15/49] python311Packages.python-mapnik: use boost182 instead of the default The import checks didn't pass because of a boost binding problem solved by https://github.com/boostorg/python/pull/385. --- pkgs/development/python-modules/python-mapnik/default.nix | 4 ++-- pkgs/top-level/python-packages.nix | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/python-modules/python-mapnik/default.nix b/pkgs/development/python-modules/python-mapnik/default.nix index b682c719c2e4..cc545b391aa4 100644 --- a/pkgs/development/python-modules/python-mapnik/default.nix +++ b/pkgs/development/python-modules/python-mapnik/default.nix @@ -8,7 +8,7 @@ , pillow , pycairo , pkg-config -, boost +, boost182 , cairo , harfbuzz , icu @@ -60,7 +60,7 @@ buildPythonPackage rec { buildInputs = [ mapnik - boost + boost182 cairo harfbuzz icu diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 09bbff4034be..b404baf500a1 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -9753,7 +9753,7 @@ self: super: with self; { python-mapnik = callPackage ../development/python-modules/python-mapnik rec { inherit (pkgs) pkg-config cairo icu libjpeg libpng libtiff libwebp proj zlib; - boost = pkgs.boost.override { + boost182 = pkgs.boost182.override { enablePython = true; inherit python; }; From 52f3be635d955695f539ea8e483734e6346dd821 Mon Sep 17 00:00:00 2001 From: William Kral Date: Fri, 12 May 2023 19:22:36 -0700 Subject: [PATCH 16/49] minissdpd: fix makefile install dir --- pkgs/tools/networking/minissdpd/default.nix | 4 ++++ .../minissdpd/makefile-install-dir.patch | 15 +++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 pkgs/tools/networking/minissdpd/makefile-install-dir.patch diff --git a/pkgs/tools/networking/minissdpd/default.nix b/pkgs/tools/networking/minissdpd/default.nix index 9b24f4fc6bf4..088645705f62 100644 --- a/pkgs/tools/networking/minissdpd/default.nix +++ b/pkgs/tools/networking/minissdpd/default.nix @@ -10,6 +10,10 @@ stdenv.mkDerivation rec { name = "${pname}-${version}.tar.gz"; }; + patches = [ + ./makefile-install-dir.patch + ]; + buildInputs = [ libnfnetlink ]; installFlags = [ "PREFIX=$(out)" "INSTALLPREFIX=$(out)" ]; diff --git a/pkgs/tools/networking/minissdpd/makefile-install-dir.patch b/pkgs/tools/networking/minissdpd/makefile-install-dir.patch new file mode 100644 index 000000000000..e887c28878a0 --- /dev/null +++ b/pkgs/tools/networking/minissdpd/makefile-install-dir.patch @@ -0,0 +1,15 @@ +diff --git a/Makefile b/Makefile +index b14e2fa..4472598 100644 +--- a/Makefile ++++ b/Makefile +@@ -74,8 +74,8 @@ install: minissdpd + $(INSTALL) -d $(DESTDIR)$(MANINSTALLDIR)/man1 + $(INSTALL) minissdpd.1 $(DESTDIR)$(MANINSTALLDIR)/man1/minissdpd.1 + ifeq (, $(findstring darwin, $(OS))) +- $(INSTALL) -d $(DESTDIR)/etc/init.d +- $(INSTALL) minissdpd.init.d.script $(DESTDIR)/etc/init.d/minissdpd ++ $(INSTALL) -d $(DESTDIR)$(INSTALLPREFIX)/etc/init.d ++ $(INSTALL) minissdpd.init.d.script $(DESTDIR)$(INSTALLPREFIX)/etc/init.d/minissdpd + endif + + check: validateminissdpd validatecodelength From a84a474db11a5e56c6ff841ecb70cf05c1a6f43d Mon Sep 17 00:00:00 2001 From: John Chadwick Date: Sat, 13 May 2023 20:22:15 -0400 Subject: [PATCH 17/49] boomerang: disable -Werror --- pkgs/development/tools/boomerang/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkgs/development/tools/boomerang/default.nix b/pkgs/development/tools/boomerang/default.nix index b37ab9a2d3f9..0e67ab90c523 100644 --- a/pkgs/development/tools/boomerang/default.nix +++ b/pkgs/development/tools/boomerang/default.nix @@ -14,6 +14,11 @@ mkDerivation rec { sha256 = "0xncdp0z8ry4lkzmvbj5d7hlzikivghpwicgywlv47spgh8ny0ix"; }; + # Boomerang usually compiles with -Werror but has not been updated for newer + # compilers. Disable -Werror for now. Consider trying to remove this when + # updating this derivation. + NIX_CFLAGS_COMPILE = "-Wno-error"; + nativeBuildInputs = [ cmake bison flex ]; buildInputs = [ qtbase capstone ]; patches = [ From e96bad849d5e0e3f1ab1debf63aad80286cf3285 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Sun, 14 May 2023 03:02:19 +0200 Subject: [PATCH 18/49] mailmanPackages.hyperkitty: fix tests Probably broken in the last beautifulsoup4 bump. --- pkgs/servers/mail/mailman/hyperkitty.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/servers/mail/mailman/hyperkitty.nix b/pkgs/servers/mail/mailman/hyperkitty.nix index c55104345989..924accbecfa2 100644 --- a/pkgs/servers/mail/mailman/hyperkitty.nix +++ b/pkgs/servers/mail/mailman/hyperkitty.nix @@ -66,7 +66,7 @@ buildPythonPackage rec { elasticsearch mock whoosh - ]; + ] ++ beautifulsoup4.optional-dependencies.lxml; checkPhase = '' cd $NIX_BUILD_TOP/$sourceRoot From e940dfceb7d2a506c5a46ea2a3a964244350363f Mon Sep 17 00:00:00 2001 From: John Chadwick Date: Sat, 13 May 2023 21:59:55 -0400 Subject: [PATCH 19/49] soi: fix missing luabind library --- pkgs/games/soi/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/games/soi/default.nix b/pkgs/games/soi/default.nix index c9d35a08dc23..eb214752df84 100644 --- a/pkgs/games/soi/default.nix +++ b/pkgs/games/soi/default.nix @@ -16,6 +16,7 @@ stdenv.mkDerivation rec { cmakeFlags = [ "-DEIGEN_INCLUDE_DIR=${eigen2}/include/eigen2" + "-DLUABIND_LIBRARY=${luabind}/lib/libluabind09.a" ]; meta = with lib; { From 416d3722ff5e6013e9833717ba61a566d5e03a89 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 14 May 2023 05:54:41 +0000 Subject: [PATCH 20/49] terminus_font_ttf: 4.49.1 -> 4.49.3 --- pkgs/data/fonts/terminus-font-ttf/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/data/fonts/terminus-font-ttf/default.nix b/pkgs/data/fonts/terminus-font-ttf/default.nix index 6231d0e0c1dc..2cd5da73d84d 100644 --- a/pkgs/data/fonts/terminus-font-ttf/default.nix +++ b/pkgs/data/fonts/terminus-font-ttf/default.nix @@ -2,11 +2,11 @@ stdenvNoCC.mkDerivation rec { pname = "terminus-font-ttf"; - version = "4.49.1"; + version = "4.49.3"; src = fetchzip { url = "https://files.ax86.net/terminus-ttf/files/${version}/terminus-ttf-${version}.zip"; - hash = "sha256-NKswkZR05V21mszT56S2x85k//qhfzRShhepYaAybDc="; + hash = "sha256-dK7MH4I1RhsIGzcnRA+7f3P5oi9B63RA+uASVDNtxNI="; }; installPhase = '' From bb3fc098531b16312a52467fc5b11191e91a0580 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 14 May 2023 09:05:58 +0000 Subject: [PATCH 21/49] frugal: 3.16.18 -> 3.16.19 --- pkgs/development/tools/frugal/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/tools/frugal/default.nix b/pkgs/development/tools/frugal/default.nix index 6891966507a3..c6c548414af3 100644 --- a/pkgs/development/tools/frugal/default.nix +++ b/pkgs/development/tools/frugal/default.nix @@ -2,18 +2,18 @@ buildGoModule rec { pname = "frugal"; - version = "3.16.18"; + version = "3.16.19"; src = fetchFromGitHub { owner = "Workiva"; repo = pname; rev = "v${version}"; - sha256 = "sha256-fIEHv0xO/dXof6ED99uCC0y8dF9fBkK5FFtvpoIfbKk="; + sha256 = "sha256-PEWjZeFIEfnAGVsv+oyF4R08FI+LzKBWlrlBmiXhJCQ="; }; subPackages = [ "." ]; - vendorHash = "sha256-vSUyxjVAmOKh4kcNoC25cDZEuparsJ7FDIslzOy8CNo="; + vendorHash = "sha256-OnPQZk+VpOx97mSNRx9lGtC03OXGGz9JwUSZYX0Ofkc="; meta = with lib; { description = "Thrift improved"; From d4f2e34e34cd1eb956877926aaaa37d48cbee3a7 Mon Sep 17 00:00:00 2001 From: K900 Date: Sun, 14 May 2023 14:25:30 +0300 Subject: [PATCH 22/49] poetry: make sure we don't load stuff from ambient PYTHONPATH --- pkgs/tools/package-management/poetry/unwrapped.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkgs/tools/package-management/poetry/unwrapped.nix b/pkgs/tools/package-management/poetry/unwrapped.nix index 59d7607600ff..550a8335e26c 100644 --- a/pkgs/tools/package-management/poetry/unwrapped.nix +++ b/pkgs/tools/package-management/poetry/unwrapped.nix @@ -151,6 +151,11 @@ buildPythonPackage rec { "poetry" ]; + # Unset ambient PYTHONPATH in the wrapper, so Poetry only ever runs with its own, + # isolated set of dependencies. This works because the correct PYTHONPATH is set + # in the Python script, which runs after the wrapper. + makeWrapperArgs = ["--unset PYTHONPATH"]; + meta = with lib; { changelog = "https://github.com/python-poetry/poetry/blob/${src.rev}/CHANGELOG.md"; homepage = "https://python-poetry.org/"; From d15132bdeaffb6b2c9b0606f8c363a0ec87c6e18 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 14 May 2023 11:46:50 +0000 Subject: [PATCH 23/49] treesheets: unstable-2023-05-04 -> unstable-2023-05-13 --- pkgs/applications/office/treesheets/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/office/treesheets/default.nix b/pkgs/applications/office/treesheets/default.nix index 8cd009a86cf2..8770563771db 100644 --- a/pkgs/applications/office/treesheets/default.nix +++ b/pkgs/applications/office/treesheets/default.nix @@ -12,13 +12,13 @@ stdenv.mkDerivation rec { pname = "treesheets"; - version = "unstable-2023-05-04"; + version = "unstable-2023-05-13"; src = fetchFromGitHub { owner = "aardappel"; repo = "treesheets"; - rev = "3694b16809daaa59b9198cd9645662e2a8cf4650"; - sha256 = "NShLLBTBS88UXWWjsSeMVxj8HnnN4yA8gmz83wdpIzE="; + rev = "c48cc033c941fb1898e12189e96188a98df69b96"; + sha256 = "EzLhsuDY/H3t69nuwWj/3fxJdAX6ze/IB/i5WsVJmOo="; }; nativeBuildInputs = [ From baa7ca476f377871597eaaba7b6787cfc60852f5 Mon Sep 17 00:00:00 2001 From: Francesco Gazzetta Date: Sun, 14 May 2023 13:49:49 +0200 Subject: [PATCH 24/49] pokete: 0.9.0 -> 0.9.1 --- pkgs/games/pokete/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/games/pokete/default.nix b/pkgs/games/pokete/default.nix index c11e65ad6357..f9fd3c514e31 100644 --- a/pkgs/games/pokete/default.nix +++ b/pkgs/games/pokete/default.nix @@ -7,7 +7,7 @@ python3.pkgs.buildPythonApplication rec { pname = "pokete"; - version = "0.9.0"; + version = "0.9.1"; format = "other"; @@ -15,7 +15,7 @@ python3.pkgs.buildPythonApplication rec { owner = "lxgr-linux"; repo = "pokete"; rev = "refs/tags/${version}"; - sha256 = "sha256-55BqUSZJPDz5g1FTdkuWa9wcsrLwh6YagD5bQ9ZpQv4="; + sha256 = "sha256-T18908Einsgful8hYMVHl0cL4sIYFvhpy0MbLIcVhxs="; }; pythonPath = with python3.pkgs; [ From 271735a0b9ad2c62848281bc381fd3cb51913c86 Mon Sep 17 00:00:00 2001 From: Weijia Wang <9713184+wegank@users.noreply.github.com> Date: Sun, 14 May 2023 14:02:10 +0200 Subject: [PATCH 25/49] xorg.xorgserver: substitute outside of patches --- pkgs/servers/x11/xorg/overrides.nix | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/pkgs/servers/x11/xorg/overrides.nix b/pkgs/servers/x11/xorg/overrides.nix index d22155c97a4b..2dbacaa7f02a 100644 --- a/pkgs/servers/x11/xorg/overrides.nix +++ b/pkgs/servers/x11/xorg/overrides.nix @@ -1,6 +1,6 @@ { abiCompat ? null, callPackage, - lib, stdenv, makeWrapper, fetchurl, fetchpatch, fetchFromGitLab, buildPackages, substitute, + lib, stdenv, makeWrapper, fetchurl, fetchpatch, fetchFromGitLab, buildPackages, automake, autoconf, libiconv, libtool, intltool, freetype, tradcpp, fontconfig, meson, ninja, ed, fontforge, libGL, spice-protocol, zlib, libGLU, dbus, libunwind, libdrm, netbsd, @@ -764,12 +764,14 @@ self: super: name = "revert-fb-changes-2.patch"; }) ./darwin/bundle_main.patch - (substitute { - src = ./darwin/stub.patch; - replacements = ["--subst-var-by" "XQUARTZ_APP" "${placeholder "out"}/Applications/XQuartz.app"]; - }) + ./darwin/stub.patch ]; + postPatch = attrs.postPatch + '' + substituteInPlace hw/xquartz/mach-startup/stub.c \ + --subst-var-by XQUARTZ_APP "$out/Applications/XQuartz.app" + ''; + configureFlags = [ # note: --enable-xquartz is auto "CPPFLAGS=-I${./darwin/dri}" From 03b6a32a67df3b19de0ed9c2de51c79c514a43d3 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 14 May 2023 12:06:01 +0000 Subject: [PATCH 26/49] function-runner: 3.3.1 -> 3.4.0 --- pkgs/development/web/function-runner/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/web/function-runner/default.nix b/pkgs/development/web/function-runner/default.nix index 8ccc566c9bb0..3ffd2492129e 100644 --- a/pkgs/development/web/function-runner/default.nix +++ b/pkgs/development/web/function-runner/default.nix @@ -2,16 +2,16 @@ rustPlatform.buildRustPackage rec { pname = "function-runner"; - version = "3.3.1"; + version = "3.4.0"; src = fetchFromGitHub { owner = "Shopify"; repo = pname; rev = "v${version}"; - sha256 = "sha256-bks73G9oZgZpkSbrRWD34+UcFOMkJJa4qkJIQxcx/Ao="; + sha256 = "sha256-oQtob1ugjMl8HoaHg9/2fhq8JG0xPU1Ht4OiSLOa96I="; }; - cargoHash = "sha256-V0lr1gqn8w4MrHQO5UVxUl+OdK/ODutAr+nMYHc+4hQ="; + cargoHash = "sha256-sUIbPW9lWirJUxy2AHENbPXYTQ1lkCtH4LyQ2pD4yXI="; meta = with lib; { description = "A CLI tool which allows you to run Wasm Functions intended for the Shopify Functions infrastructure"; From 480f54285885eb06a7c2c5554bbc5a0efd369ef0 Mon Sep 17 00:00:00 2001 From: Dmitry Ivankov Date: Sun, 14 May 2023 14:06:29 +0200 Subject: [PATCH 27/49] bitcoin: fix copmilation on x86_64-darwin Bump apple sdk to 11 to get rid of errors like ``` /nix/store/k9pa9xjcv603qxmm40jc0x4a5smih5dd-apple-framework-CoreFoundation-11.0.0/Library/Frameworks/CoreFoundation.framework/Headers/CFURL.h:1189:83: error: expected ',' kCFURLBookmarkCreationWithSecurityScope API_AVAILABLE(macos(10.7), macCatalyst(13.0)) API_UNAVAILABLE(ios, watchos, tvos) = ( 1UL << 11 ), // Mac OS X 10.7.3 and later, include information in the bookmark data which allows the same sandboxed process to access the resource after being relaunched ``` https://hydra.nixos.org/build/219157902/nixlog/3 ZHF: #230712 --- pkgs/top-level/all-packages.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 853527f26080..aad8f552b7bc 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -35483,6 +35483,7 @@ with pkgs; balanceofsatoshis = nodePackages.balanceofsatoshis; bitcoin = libsForQt5.callPackage ../applications/blockchains/bitcoin { + stdenv = if stdenv.isDarwin then darwin.apple_sdk_11_0.stdenv else stdenv; boost = boost17x; withGui = true; inherit (darwin) autoSignDarwinBinariesHook; From b53d5fd054644e46329e43567dcb8b0468814688 Mon Sep 17 00:00:00 2001 From: rewine Date: Sun, 14 May 2023 06:22:18 +0800 Subject: [PATCH 28/49] wbg: 1.0.2 -> 1.1.0 --- pkgs/applications/misc/wbg/default.nix | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/misc/wbg/default.nix b/pkgs/applications/misc/wbg/default.nix index d5f95961f37e..bf7ce1c1c229 100644 --- a/pkgs/applications/misc/wbg/default.nix +++ b/pkgs/applications/misc/wbg/default.nix @@ -11,21 +11,23 @@ , wayland-protocols , enablePNG ? true , enableJPEG ? true +, enableWebp ? true # Optional dependencies , libpng , libjpeg +, libwebp }: stdenv.mkDerivation rec { pname = "wbg"; - version = "1.0.2"; + version = "1.1.0"; src = fetchFromGitea { domain = "codeberg.org"; owner = "dnkl"; repo = "wbg"; rev = version; - sha256 = "sha256-PKEOWRcSAB4Uv5TfameQIEZh6s6xCGdyoZ13etL1TKA="; + sha256 = "sha256-JJIIqSc0qHgjtpGKai8p6vihXg16unsO7vW91pioAmc="; }; nativeBuildInputs = [ @@ -41,13 +43,15 @@ stdenv.mkDerivation rec { wayland wayland-protocols ] ++ lib.optional enablePNG libpng - ++ lib.optional enableJPEG libjpeg; + ++ lib.optional enableJPEG libjpeg + ++ lib.optional enableWebp libwebp; mesonBuildType = "release"; mesonFlags = [ (lib.mesonEnable "png" enablePNG) (lib.mesonEnable "jpeg" enableJPEG) + (lib.mesonEnable "webp" enableWebp) ]; meta = with lib; { From 577ffe768cd18ddfd61c5b36853532b02e613278 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sun, 14 May 2023 13:36:45 +0200 Subject: [PATCH 29/49] wiki-js: use nodejs18 Part of #229910. Unfortunately this is a little hacky because upstream doesn't intend to support it for 2.5, but only for 3.0 which isn't out yet, however nodejs-16 will get out of maintenance during the support-span of NixOS 23.05[1]. The only breaking change is that `extract-files` uses a deprecated way of exposing modules, I went through the list of other breaking changes in v17 and v18[2][3] and couldn't spot any usage of removed features, also local testing didn't reveal further issues. Unfortunately fixing that breakage turned out to be non-trivial. Currently, `extract-files@9.0.0` is used with the problematic portions in its `package.json`, however it's only a transitive dependency of `@graphql-tools/url-loader` & `apollo-upload-client`. Unfortunately, the versions of that in use require v9 and don't work with a newer version of `extract-files` with the problem fixed[4]. Also, upgrading the dependencies in question is not a feasible option because `graphql-tools` was split up into multiple smaller packages in v8 and also some of the APIs in use in `wiki.js` were dropped there[5], so this would also be very time-consuming and non-trivial to fix. Since this was the only issue, I decided to go down the hacky route and patch the problem in `package.json` of `extract-files` manually during our `patchPhase`. [1] https://github.com/requarks/wiki/discussions/6388 [2] https://nodejs.org/en/blog/release/v17.0.0 [3] https://nodejs.org/en/blog/release/v18.0.0 [4] Upon local testing, this broke with the following error: Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './public/extractFiles' is not defined by "exports" in /wiki/node_modules/extract-files/package.json [5] For instance `SchemaDirectiveVisitor` in `server/graph/directives/auth`. --- nixos/modules/services/web-apps/wiki-js.nix | 2 +- pkgs/servers/web-apps/wiki-js/default.nix | 36 ++++++++++++++++++++- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/nixos/modules/services/web-apps/wiki-js.nix b/nixos/modules/services/web-apps/wiki-js.nix index 22682002532d..631740f51ce3 100644 --- a/nixos/modules/services/web-apps/wiki-js.nix +++ b/nixos/modules/services/web-apps/wiki-js.nix @@ -133,7 +133,7 @@ in { WorkingDirectory = "/var/lib/${cfg.stateDirectoryName}"; DynamicUser = true; PrivateTmp = true; - ExecStart = "${pkgs.nodejs_16}/bin/node ${pkgs.wiki-js}/server"; + ExecStart = "${pkgs.nodejs_18}/bin/node ${pkgs.wiki-js}/server"; }; }; }; diff --git a/pkgs/servers/web-apps/wiki-js/default.nix b/pkgs/servers/web-apps/wiki-js/default.nix index c17c3f7e95c9..604599c3ca1c 100644 --- a/pkgs/servers/web-apps/wiki-js/default.nix +++ b/pkgs/servers/web-apps/wiki-js/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, lib, nixosTests }: +{ stdenv, fetchurl, lib, nixosTests, jq, moreutils }: stdenv.mkDerivation rec { pname = "wiki-js"; @@ -9,6 +9,40 @@ stdenv.mkDerivation rec { sha256 = "sha256-O7KQ134zh9ullYyQZimmxfdRwXeHkD8aAhy/pRzIjxo="; }; + # Implements nodejs 18 support as it's not planned to fix this before + # the release of v3[1] which is planned to happen in 2023, but not before + # NixOS 23.05. However, in the lifespan of 23.05 v16 will get EOLed, so + # we have to hack this on our own. + # + # The problem we fix here is that `exports."/public/"` in a `package.json` + # is prohibited, i.e. you cannot export full directories anymore. + # + # Unfortunately it's non-trivial to fix this because v10 of `extract-files` + # (where the problem is fixed) doesn't work for graphql-tools (which depends + # on this). Updating this as well is also quite complex because in later + # versions the package was split up into multiple smaller packages and + # thus a lot of parts of the code-base would need to be changed accordingly. + # + # Since this is the only breaking change of nodejs 17/18[2][3], this workaround + # will be necessary until we can upgrade to v3. + # + # [1] https://github.com/requarks/wiki/discussions/6388 + # [2] https://nodejs.org/en/blog/release/v17.0.0 + # [3] https://nodejs.org/en/blog/release/v18.0.0 + nativeBuildInputs = [ jq moreutils ]; + postPatch = '' + # Dirty hack to implement nodejs-18 support. + <./node_modules/extract-files/package.json jq ' + # error out loud if the structure has changed and we need to change + # this expression + if .exports|has("./public/")|not then + halt_error(1) + else + .exports."./public/*" = "./public/*.js" | del(.exports."./public/") + end + ' | sponge ./node_modules/extract-files/package.json + ''; + sourceRoot = "."; dontBuild = true; From d5d16930f3010c1ceeb85270c62cd3ccb00542b8 Mon Sep 17 00:00:00 2001 From: zowoq <59103226+zowoq@users.noreply.github.com> Date: Sat, 13 May 2023 21:37:20 +1000 Subject: [PATCH 30/49] cni-plugins: 1.2.0 -> 1.3.0 Diff: https://github.com/containernetworking/plugins/compare/v1.2.0...v1.3.0 Changelog: https://github.com/containernetworking/plugins/releases/tag/v1.3.0 --- pkgs/applications/networking/cluster/cni/plugins.nix | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/networking/cluster/cni/plugins.nix b/pkgs/applications/networking/cluster/cni/plugins.nix index b917c6a62249..ce6aece37803 100644 --- a/pkgs/applications/networking/cluster/cni/plugins.nix +++ b/pkgs/applications/networking/cluster/cni/plugins.nix @@ -2,16 +2,16 @@ buildGoModule rec { pname = "cni-plugins"; - version = "1.2.0"; + version = "1.3.0"; src = fetchFromGitHub { owner = "containernetworking"; repo = "plugins"; rev = "v${version}"; - sha256 = "sha256-p6gvXn8v7KZMiCPj2EQlk/2au1nZ6EJlLxcMZHzlEp8="; + hash = "sha256-cbmG9wK3yd79jCiNAKcSSx0COyh6CxR1bgIiCO3i++g="; }; - vendorSha256 = null; + vendorHash = null; doCheck = false; @@ -30,6 +30,7 @@ buildGoModule rec { "plugins/main/loopback" "plugins/main/macvlan" "plugins/main/ptp" + "plugins/main/tap" "plugins/main/vlan" "plugins/meta/bandwidth" "plugins/meta/firewall" @@ -42,6 +43,7 @@ buildGoModule rec { passthru.tests = { inherit (nixosTests) cri-o; }; meta = with lib; { + changelog = "https://github.com/containernetworking/plugins/releases/tag/${src.rev}"; description = "Some standard networking plugins, maintained by the CNI team"; homepage = "https://www.cni.dev/plugins/"; license = licenses.asl20; From 1fed084b65935d70a64b6cb0eddac92a2b0d5984 Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Fri, 12 May 2023 11:15:56 +0000 Subject: [PATCH 31/49] crosvm: 112.0 -> 113.0 --- pkgs/applications/virtualization/crosvm/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/applications/virtualization/crosvm/default.nix b/pkgs/applications/virtualization/crosvm/default.nix index 6e7010b5102b..8cca1e5a7c08 100644 --- a/pkgs/applications/virtualization/crosvm/default.nix +++ b/pkgs/applications/virtualization/crosvm/default.nix @@ -4,18 +4,18 @@ rustPlatform.buildRustPackage rec { pname = "crosvm"; - version = "112.0"; + version = "113.0"; src = fetchgit { url = "https://chromium.googlesource.com/chromiumos/platform/crosvm"; - rev = "014b853ebdba00c7bad751a37fa4271ff2a50d77"; - sha256 = "qVfkNN6dHfMeDYMDvccU9PAz78Dh2ylL6UpoApoYKJw="; + rev = "f2871094c45bc3a8a2604cbba5b34da27d676af7"; + sha256 = "seeqr453Qjk1MoYq2ZlPsgUOMaV7PbK4MKze2cl2NvI="; fetchSubmodules = true; }; separateDebugInfo = true; - cargoSha256 = "ath0x9dfQCWWU9+zKyYLC6Q/QXupifHhdQxrS+N2UWw="; + cargoSha256 = "hGhYzynNvsaSQO2lSEh/OGWkeE8bEinwb0QxX87TQU0="; nativeBuildInputs = [ pkg-config protobuf python3 rustPlatform.bindgenHook wayland-scanner From 4d5505e97b8378887e5f80b533477b5db55ee370 Mon Sep 17 00:00:00 2001 From: natsukium Date: Sun, 14 May 2023 18:09:36 +0900 Subject: [PATCH 32/49] python3Packages.steamship: init at 2.16.9 --- .../python-modules/steamship/default.nix | 62 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 64 insertions(+) create mode 100644 pkgs/development/python-modules/steamship/default.nix diff --git a/pkgs/development/python-modules/steamship/default.nix b/pkgs/development/python-modules/steamship/default.nix new file mode 100644 index 000000000000..59c3b8ae8eef --- /dev/null +++ b/pkgs/development/python-modules/steamship/default.nix @@ -0,0 +1,62 @@ +{ lib +, buildPythonPackage +, fetchPypi +, setuptools-scm +, pythonRelaxDepsHook +, requests +, pydantic +, aiohttp +, inflection +, fluent-logger +, toml +, click +, semver +, tiktoken +}: + +buildPythonPackage rec { + pname = "steamship"; + version = "2.16.9"; + format = "pyproject"; + + src = fetchPypi { + inherit pname version; + hash = "sha256-NHMrReRw8x7N7vy8BqmKx9fDfQYjlOWY7ChdLz+qGxQ="; + }; + + pythonRelaxDeps = [ + "requests" + ]; + + nativeBuildInputs = [ + setuptools-scm + pythonRelaxDepsHook + ]; + + propagatedBuildInputs = [ + requests + pydantic + aiohttp + inflection + fluent-logger + toml + click + semver + tiktoken + ]; + + # almost all tests require "steamship api key" + doCheck = false; + + pythonImportsCheck = [ + "steamship" + ]; + + meta = with lib; { + description = "The fastest way to add language AI to your product"; + homepage = "https://www.steamship.com/"; + changelog = "https://github.com/steamship-core/python-client/releases/tag/${version}"; + license = licenses.mit; + maintainers = with maintainers; [ natsukium ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 9b4fa24e4135..d9d8ef988b05 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -11567,6 +11567,8 @@ self: super: with self; { steamodd = callPackage ../development/python-modules/steamodd { }; + steamship = callPackage ../development/python-modules/steamship { }; + stem = callPackage ../development/python-modules/stem { }; stestr = callPackage ../development/python-modules/stestr { }; From a8a036a1ba1d51bc80493a018c357f9f57c1adc5 Mon Sep 17 00:00:00 2001 From: natsukium Date: Sun, 14 May 2023 17:05:37 +0900 Subject: [PATCH 33/49] python3Packages.langchain: 0.0.166 -> 0.0.168 Diff: https://github.com/hwchase17/langchain/compare/refs/tags/v0.0.166...v0.0.168 Changelog: https://github.com/hwchase17/langchain/releases/tag/v0.0.168 --- pkgs/development/python-modules/langchain/default.nix | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/pkgs/development/python-modules/langchain/default.nix b/pkgs/development/python-modules/langchain/default.nix index a8b68bca3f99..8404f8a8eaca 100644 --- a/pkgs/development/python-modules/langchain/default.nix +++ b/pkgs/development/python-modules/langchain/default.nix @@ -53,6 +53,8 @@ , lark , jq , protobuf +, steamship +, pdfminer-six # test dependencies , pytest-vcr , pytest-asyncio @@ -67,7 +69,7 @@ buildPythonPackage rec { pname = "langchain"; - version = "0.0.166"; + version = "0.0.168"; format = "pyproject"; disabled = pythonOlder "3.8"; @@ -76,7 +78,7 @@ buildPythonPackage rec { owner = "hwchase17"; repo = "langchain"; rev = "refs/tags/v${version}"; - hash = "sha256-i6CvboYZigky49a7X8RuQH2EfcucJPtEtFEzZxaNJG8="; + hash = "sha256-2L5yFkXr6dioEP1QAMXWX6x+IRbGUIW3cxLLxJJjkMI="; }; postPatch = '' @@ -194,6 +196,8 @@ buildPythonPackage rec { # docarray protobuf # hnswlib + steamship + pdfminer-six ]; }; @@ -210,7 +214,7 @@ buildPythonPackage rec { pytestFlagsArray = [ # integration_tests have many network, db access and require `OPENAI_API_KEY`, etc. - "--ignore=tests/integration_tests" + "tests/unit_tests" ]; disabledTests = [ From a14e2b4b1631efa899f0487231b0706937b02ad7 Mon Sep 17 00:00:00 2001 From: Kirill Radzikhovskyy Date: Sun, 14 May 2023 17:18:34 +1000 Subject: [PATCH 34/49] plausible: unbreak with latest nodejs --- pkgs/servers/web-apps/plausible/default.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkgs/servers/web-apps/plausible/default.nix b/pkgs/servers/web-apps/plausible/default.nix index f9371bd916fb..d57bcfc0190a 100644 --- a/pkgs/servers/web-apps/plausible/default.nix +++ b/pkgs/servers/web-apps/plausible/default.nix @@ -61,6 +61,7 @@ beamPackages.mixRelease { export HOME=$TMPDIR export NODE_OPTIONS=--openssl-legacy-provider # required for webpack compatibility with OpenSSL 3 (https://github.com/webpack/webpack/issues/14532) ln -sf ${yarnDeps}/node_modules assets/node_modules + substituteInPlace assets/package.json --replace '$(npm bin)/' 'npx ' npm run deploy --prefix ./assets # for external task you need a workaround for the no deps check flag @@ -70,8 +71,6 @@ beamPackages.mixRelease { meta = with lib; { license = licenses.agpl3Plus; - # broken since the deprecation of nodejs_16 - broken = true; homepage = "https://plausible.io/"; description = " Simple, open-source, lightweight (< 1 KB) and privacy-friendly web analytics alternative to Google Analytics."; maintainers = with maintainers; [ ]; From a4aa2c04761f5d6ec312c28f07474b5c9fd826c9 Mon Sep 17 00:00:00 2001 From: David McFarland Date: Sun, 14 May 2023 10:11:58 -0300 Subject: [PATCH 35/49] linux: enable DRM_AMD_DC_FP on 6.4 In 6.4, DRM_AMD_DC_DCN is renamed to DRM_AMD_DC_FP. Fixes: f5252cb7e09c0f2dee36367c9e509f45d27b09f7 --- pkgs/os-specific/linux/kernel/common-config.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/os-specific/linux/kernel/common-config.nix b/pkgs/os-specific/linux/kernel/common-config.nix index 4a122922115c..3520f1bd5cfc 100644 --- a/pkgs/os-specific/linux/kernel/common-config.nix +++ b/pkgs/os-specific/linux/kernel/common-config.nix @@ -315,6 +315,7 @@ let DRM_AMD_DC_DCN2_1 = whenBetween "5.4" "5.6" yes; DRM_AMD_DC_DCN3_0 = whenBetween "5.9" "5.11" yes; DRM_AMD_DC_DCN = whenBetween "5.11" "6.4" yes; + DRM_AMD_DC_FP = whenAtLeast "6.4" yes; DRM_AMD_DC_HDCP = whenBetween "5.5" "6.4" yes; DRM_AMD_DC_SI = whenAtLeast "5.10" yes; } // optionalAttrs (stdenv.hostPlatform.system == "x86_64-linux") { From bb95e773ebba4cd0a81b972c455c4360200f6cb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= Date: Sun, 14 May 2023 15:51:35 +0200 Subject: [PATCH 36/49] open-in-mpv: init at 2.1.0 --- .../video/open-in-mpv/default.nix | 38 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 2 files changed, 40 insertions(+) create mode 100644 pkgs/applications/video/open-in-mpv/default.nix diff --git a/pkgs/applications/video/open-in-mpv/default.nix b/pkgs/applications/video/open-in-mpv/default.nix new file mode 100644 index 000000000000..f3ac6414a709 --- /dev/null +++ b/pkgs/applications/video/open-in-mpv/default.nix @@ -0,0 +1,38 @@ +{ lib +, buildGoModule +, fetchFromGitHub +}: + +buildGoModule rec { + pname = "open-in-mpv"; + version = "2.1.0"; + + src = fetchFromGitHub { + owner = "Baldomo"; + repo = "open-in-mpv"; + rev = "v${version}"; + hash = "sha256-3Fsa3AwiHsb8VcKa4a/RKyYu+CD5nEX0nIXENhBZCWk="; + }; + + vendorHash = "sha256-G6GZO2+CfEAYcf7zBcqDa808A0eJjM8dq7+4VGZ+P4c="; + + ldflags = [ "-s" "-w" ]; + + postInstall = '' + install -Dm444 -t $out/share/applications scripts/open-in-mpv.desktop + ''; + + meta = with lib; { + description = "Simple web extension to open videos in mpv"; + longDescription = '' + To function the browser extension must be installed and open-in-mpv must be set as the default scheme-handler for mpv:// eg.: + xdg-mime default open-in-mpv.desktop x-scheme-handler/mpv + + https://addons.mozilla.org/en-US/firefox/addon/iina-open-in-mpv/ + https://chrome.google.com/webstore/detail/open-in-mpv/ggijpepdpiehgbiknmfpfbhcalffjlbj + ''; + homepage = "https://github.com/Baldomo/open-in-mpv"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ SuperSandro2000 ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d5be122b5c00..0f6dbc7392e5 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -32500,6 +32500,8 @@ with pkgs; cutter = callPackage ../applications/video/mpv/scripts/cutter.nix { }; }; + open-in-mpv = callPackage ../applications/video/open-in-mpv { }; + mrpeach = callPackage ../applications/audio/pd-plugins/mrpeach { }; mtpaint = callPackage ../applications/graphics/mtpaint { }; From 8b94c04d157bc83682f4cbc6800c1e1b59428655 Mon Sep 17 00:00:00 2001 From: figsoda Date: Sun, 14 May 2023 09:59:44 -0400 Subject: [PATCH 37/49] bottom: 0.9.0 -> 0.9.1 Diff: https://github.com/ClementTsang/bottom/compare/0.9.0...0.9.1 Changelog: https://github.com/ClementTsang/bottom/blob/0.9.1/CHANGELOG.md --- pkgs/tools/system/bottom/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/tools/system/bottom/default.nix b/pkgs/tools/system/bottom/default.nix index 185db566b60f..efd7fda4a276 100644 --- a/pkgs/tools/system/bottom/default.nix +++ b/pkgs/tools/system/bottom/default.nix @@ -8,16 +8,16 @@ rustPlatform.buildRustPackage rec { pname = "bottom"; - version = "0.9.0"; + version = "0.9.1"; src = fetchFromGitHub { owner = "ClementTsang"; repo = pname; rev = version; - sha256 = "sha256-/pjMxWQ66t9Jd8ziLJXDgnwfSgR1uS9U1uXVDTZze58="; + sha256 = "sha256-i1Vd2SA7Xb62gTVY6FdKzNe6ItfYrLXfgo0+VRm+Wdc="; }; - cargoHash = "sha256-0KweijC4gA9ELmQZ7lvOx2BypMuj8KsZHxGfcRXVi4g="; + cargoHash = "sha256-umBBUbkgVIj9d2eYEJCHjoo0AjH9K2R6C+cps+PkZcA="; nativeBuildInputs = [ installShellFiles ]; From 15c18b6319bf65b73a093f9630e7a1b65fa816d5 Mon Sep 17 00:00:00 2001 From: figsoda Date: Sun, 14 May 2023 10:11:18 -0400 Subject: [PATCH 38/49] pokete: fix version test --- pkgs/games/pokete/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/games/pokete/default.nix b/pkgs/games/pokete/default.nix index f9fd3c514e31..73ff661e9d09 100644 --- a/pkgs/games/pokete/default.nix +++ b/pkgs/games/pokete/default.nix @@ -3,6 +3,7 @@ , fetchFromGitHub , testers , pokete +, faketty }: python3.pkgs.buildPythonApplication rec { @@ -41,7 +42,8 @@ python3.pkgs.buildPythonApplication rec { passthru.tests = { pokete-version = testers.testVersion { package = pokete; - command = "pokete --help"; + command = "${faketty}/bin/faketty pokete --help"; + version = "v${version}"; }; }; From 764201a478c43ffdb41e53fae8698b4c293b4060 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= Date: Mon, 20 Feb 2023 14:36:26 +0100 Subject: [PATCH 39/49] github/CODEOWNERS: drop nbp --- .github/CODEOWNERS | 39 +++++++++++++-------------------------- 1 file changed, 13 insertions(+), 26 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 2e223ede6939..4dfcd715f7ca 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -22,19 +22,19 @@ /.editorconfig @Mic92 @zowoq # Libraries -/lib @edolstra @nbp @infinisil -/lib/systems @alyssais @nbp @ericson2314 @matthewbauer -/lib/generators.nix @edolstra @nbp @Profpatsch -/lib/cli.nix @edolstra @nbp @Profpatsch -/lib/debug.nix @edolstra @nbp @Profpatsch -/lib/asserts.nix @edolstra @nbp @Profpatsch +/lib @edolstra @infinisil +/lib/systems @alyssais @ericson2314 @matthewbauer +/lib/generators.nix @edolstra @Profpatsch +/lib/cli.nix @edolstra @Profpatsch +/lib/debug.nix @edolstra @Profpatsch +/lib/asserts.nix @edolstra @Profpatsch /lib/path.* @infinisil @fricklerhandwerk # Nixpkgs Internals -/default.nix @nbp -/pkgs/top-level/default.nix @nbp @Ericson2314 -/pkgs/top-level/impure.nix @nbp @Ericson2314 -/pkgs/top-level/stage.nix @nbp @Ericson2314 @matthewbauer +/default.nix @Ericson2314 +/pkgs/top-level/default.nix @Ericson2314 +/pkgs/top-level/impure.nix @Ericson2314 +/pkgs/top-level/stage.nix @Ericson2314 @matthewbauer /pkgs/top-level/splice.nix @Ericson2314 @matthewbauer /pkgs/top-level/release-cross.nix @Ericson2314 @matthewbauer /pkgs/stdenv/generic @Ericson2314 @matthewbauer @@ -67,22 +67,9 @@ /doc/using @fricklerhandwerk # NixOS Internals -/nixos/default.nix @nbp @infinisil -/nixos/lib/from-env.nix @nbp @infinisil -/nixos/lib/eval-config.nix @nbp @infinisil -/nixos/doc/manual/configuration/abstractions.xml @nbp -/nixos/doc/manual/configuration/config-file.xml @nbp -/nixos/doc/manual/configuration/config-syntax.xml @nbp -/nixos/doc/manual/configuration/modularity.xml @nbp -/nixos/doc/manual/development/assertions.xml @nbp -/nixos/doc/manual/development/meta-attributes.xml @nbp -/nixos/doc/manual/development/option-declarations.xml @nbp -/nixos/doc/manual/development/option-def.xml @nbp -/nixos/doc/manual/development/option-types.xml @nbp -/nixos/doc/manual/development/replace-modules.xml @nbp -/nixos/doc/manual/development/writing-modules.xml @nbp -/nixos/doc/manual/man-nixos-option.xml @nbp -/nixos/modules/installer/tools/nixos-option.sh @nbp +/nixos/default.nix @infinisil +/nixos/lib/from-env.nix @infinisil +/nixos/lib/eval-config.nix @infinisil /nixos/modules/system @dasJ /nixos/modules/system/activation/bootspec.nix @grahamc @cole-h @raitobezarius /nixos/modules/system/activation/bootspec.cue @grahamc @cole-h @raitobezarius From 3c0e7c5cb27a92d6dc736c0c86db514a876c058d Mon Sep 17 00:00:00 2001 From: figsoda Date: Sun, 14 May 2023 10:15:19 -0400 Subject: [PATCH 40/49] cargo-semver-checks: 0.20.0 -> 0.20.1 Diff: https://github.com/obi1kenobi/cargo-semver-checks/compare/v0.20.0...v0.20.1 Changelog: https://github.com/obi1kenobi/cargo-semver-checks/releases/tag/v0.20.1 --- pkgs/development/tools/rust/cargo-semver-checks/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/tools/rust/cargo-semver-checks/default.nix b/pkgs/development/tools/rust/cargo-semver-checks/default.nix index 5f56b8211b18..f4f236aa5c84 100644 --- a/pkgs/development/tools/rust/cargo-semver-checks/default.nix +++ b/pkgs/development/tools/rust/cargo-semver-checks/default.nix @@ -12,16 +12,16 @@ rustPlatform.buildRustPackage rec { pname = "cargo-semver-checks"; - version = "0.20.0"; + version = "0.20.1"; src = fetchFromGitHub { owner = "obi1kenobi"; repo = pname; rev = "v${version}"; - sha256 = "sha256-z7mDGWU498KU6lEHqLhl0HdTA55Wz3RbZOlF6g1gwN4="; + sha256 = "sha256-pDyF8KCgAhugzTuMSVqfCda5kRAvJwR+OF+G+ZfjeDo="; }; - cargoSha256 = "sha256-JQdL4D6ECH8wLOCcAGm7HomJAfJD838KfI4/IRAeqD0="; + cargoSha256 = "sha256-zbraVGjEayJJcBH9/GVnTcQGLcNgxaRhbgdJeHCGEEo="; nativeBuildInputs = [ pkg-config ]; From 7f0646b7b6b7e1fc8da65e20c940ed785262d074 Mon Sep 17 00:00:00 2001 From: figsoda Date: Sun, 14 May 2023 10:21:04 -0400 Subject: [PATCH 41/49] cloudlog: shorten description meta.description is supposed to be single-line --- pkgs/applications/radio/cloudlog/default.nix | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/pkgs/applications/radio/cloudlog/default.nix b/pkgs/applications/radio/cloudlog/default.nix index 9f303dc7b518..771866a1814e 100644 --- a/pkgs/applications/radio/cloudlog/default.nix +++ b/pkgs/applications/radio/cloudlog/default.nix @@ -3,7 +3,8 @@ , fetchFromGitHub , nix-update-script , nixosTests -, php}: +, php +}: stdenvNoCC.mkDerivation rec { pname = "cloudlog"; @@ -34,11 +35,7 @@ stdenvNoCC.mkDerivation rec { }; meta = with lib; { - description = '' - Web based amateur radio logging application built using PHP & MySQL - supports general station logging tasks from HF to Microwave with - supporting applications to support CAT control. - ''; + description = "Web based amateur radio logging application built using PHP & MySQL"; license = licenses.mit; homepage = "https://www.magicbug.co.uk/cloudlog"; platforms = php.meta.platforms; From 8af23590d3b1e9f29cee0f7a3503c382e663e388 Mon Sep 17 00:00:00 2001 From: Sophie Tauchert Date: Fri, 12 May 2023 21:01:14 +0200 Subject: [PATCH 42/49] nixos/borgbackup: fix extraCompactArgs Fixes the extraCompactArgs introduced with #224072 as the variable currently isn't added to the script's environment. --- nixos/modules/services/backup/borgbackup.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nixos/modules/services/backup/borgbackup.nix b/nixos/modules/services/backup/borgbackup.nix index 08a2967e9c7f..0da70112d48d 100644 --- a/nixos/modules/services/backup/borgbackup.nix +++ b/nixos/modules/services/backup/borgbackup.nix @@ -109,7 +109,7 @@ let }; environment = { BORG_REPO = cfg.repo; - inherit (cfg) extraArgs extraInitArgs extraCreateArgs extraPruneArgs; + inherit (cfg) extraArgs extraInitArgs extraCreateArgs extraPruneArgs extraCompactArgs; } // (mkPassEnv cfg) // cfg.environment; }; From d3b28b7fd99e435f5401cbb291b2b6aa2711ad6f Mon Sep 17 00:00:00 2001 From: Vincenzo Mantova <1962985+xworld21@users.noreply.github.com> Date: Sun, 14 May 2023 16:05:22 +0100 Subject: [PATCH 43/49] texlive.combine: move repstopdf test to tests.texlive (#231742) --- pkgs/test/texlive/default.nix | 11 +++++++++++ pkgs/tools/typesetting/tex/texlive/combine.nix | 9 --------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/pkgs/test/texlive/default.nix b/pkgs/test/texlive/default.nix index 5e0369f4db47..754358cdf29d 100644 --- a/pkgs/test/texlive/default.nix +++ b/pkgs/test/texlive/default.nix @@ -199,4 +199,15 @@ {"$kpathsea","$schemeFull"/share/texmf-var}/web2c/fmtutil.cnf \ | tee "$out/fmtutil.cnf.patch" ''; + + # verify that the restricted mode gets enabled when + # needed (detected by checking if it disallows --gscmd) + repstopdf = runCommand "texlive-test-repstopdf" { + nativeBuildInputs = [ (texlive.combine { inherit (texlive) scheme-infraonly epstopdf; }) ]; + } '' + ! (epstopdf --gscmd echo /dev/null 2>&1 || true) | grep forbidden >/dev/null + (repstopdf --gscmd echo /dev/null 2>&1 || true) | grep forbidden >/dev/null + mkdir "$out" + ''; + } diff --git a/pkgs/tools/typesetting/tex/texlive/combine.nix b/pkgs/tools/typesetting/tex/texlive/combine.nix index 95c297650483..a22c3b921e84 100644 --- a/pkgs/tools/typesetting/tex/texlive/combine.nix +++ b/pkgs/tools/typesetting/tex/texlive/combine.nix @@ -289,15 +289,6 @@ in (buildEnv { '' rm "$out"/bin/*-sys wrapBin - '' + - # Perform a small test to verify that the restricted mode get enabled when - # needed (detected by checking if it disallows --gscmd) - '' - if [[ -e "$out"/bin/epstopdf ]]; then - echo "Testing restricted mode for {,r}epstopdf" - ! (epstopdf --gscmd echo /dev/null 2>&1 || true) | grep forbidden - (repstopdf --gscmd echo /dev/null 2>&1 || true) | grep forbidden - fi '' + # TODO: a context trigger https://www.preining.info/blog/2015/06/debian-tex-live-2015-the-new-layout/ # http://wiki.contextgarden.net/ConTeXt_Standalone#Unix-like_platforms_.28Linux.2FMacOS_X.2FFreeBSD.2FSolaris.29 From dd69797eae9e15ac27cbc9d3fe8d6b887ae85d70 Mon Sep 17 00:00:00 2001 From: gilice <104317939+gilice@users.noreply.github.com> Date: Sun, 14 May 2023 17:07:58 +0200 Subject: [PATCH 44/49] fluffychat: 1.11.0 -> 1.11.2 --- .../networking/instant-messengers/fluffychat/default.nix | 6 +++--- .../networking/instant-messengers/fluffychat/deps.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/applications/networking/instant-messengers/fluffychat/default.nix b/pkgs/applications/networking/instant-messengers/fluffychat/default.nix index 1a8f2bebc297..e9f8eee81687 100644 --- a/pkgs/applications/networking/instant-messengers/fluffychat/default.nix +++ b/pkgs/applications/networking/instant-messengers/fluffychat/default.nix @@ -6,18 +6,18 @@ }: flutter37.buildFlutterApplication rec { - version = "1.11.0"; + version = "1.11.2"; name = "fluffychat"; src = fetchFromGitLab { owner = "famedly"; repo = "fluffychat"; rev = "v${version}"; - hash = "sha256-Z7BOGsirBVQxRJY4kmskCmPeZloc41/bf4/ExoO8VBk="; + hash = "sha256-vHzZDkSgxcZf3y/+A645hxBverm34J5xNnNwyxnSVUA="; }; depsListFile = ./deps.json; - vendorHash = "sha256-axByNptbzGR7GQT4Gs2yaEyUCkCbI9RQNNOHN7CYd9A="; + vendorHash = "sha256-u8YI4UBnEfPpvjBfhbo4LGolb56w94EiUlnLlYITdXQ="; desktopItem = makeDesktopItem { name = "Fluffychat"; diff --git a/pkgs/applications/networking/instant-messengers/fluffychat/deps.json b/pkgs/applications/networking/instant-messengers/fluffychat/deps.json index 9d8e272ede6d..111fc2812faf 100644 --- a/pkgs/applications/networking/instant-messengers/fluffychat/deps.json +++ b/pkgs/applications/networking/instant-messengers/fluffychat/deps.json @@ -1,7 +1,7 @@ [ { "name": "fluffychat", - "version": "1.11.0+3254", + "version": "1.11.2+3360", "kind": "root", "source": "root", "dependencies": [ From 8991fac3051ce05feb9137af684430470fa4f634 Mon Sep 17 00:00:00 2001 From: gilice <104317939+gilice@users.noreply.github.com> Date: Sun, 14 May 2023 17:10:49 +0200 Subject: [PATCH 45/49] flutter: build-support: allow customizing wrapProgram args --- pkgs/build-support/flutter/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/build-support/flutter/default.nix b/pkgs/build-support/flutter/default.nix index ecca6b081f25..8d31482900a8 100644 --- a/pkgs/build-support/flutter/default.nix +++ b/pkgs/build-support/flutter/default.nix @@ -21,6 +21,7 @@ , nativeBuildInputs ? [ ] , preUnpack ? "" , postFixup ? "" +, extraWrapProgramArgs ? "" , ... }@args: let @@ -121,7 +122,8 @@ let # which is not what application authors expect. for f in "$out"/bin/*; do wrapProgram "$f" \ - --suffix LD_LIBRARY_PATH : '${lib.makeLibraryPath finalAttrs.runtimeDependencies}' + --suffix LD_LIBRARY_PATH : '${lib.makeLibraryPath finalAttrs.runtimeDependencies}' \ + ${extraWrapProgramArgs} done ${postFixup} From 2386b444c74738f141920eb4350a28114cb6e6eb Mon Sep 17 00:00:00 2001 From: gilice <104317939+gilice@users.noreply.github.com> Date: Sun, 14 May 2023 17:12:01 +0200 Subject: [PATCH 46/49] fluffychat: add zenity (fix #229879) --- .../networking/instant-messengers/fluffychat/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/applications/networking/instant-messengers/fluffychat/default.nix b/pkgs/applications/networking/instant-messengers/fluffychat/default.nix index e9f8eee81687..2a8ebf35c873 100644 --- a/pkgs/applications/networking/instant-messengers/fluffychat/default.nix +++ b/pkgs/applications/networking/instant-messengers/fluffychat/default.nix @@ -3,6 +3,7 @@ , imagemagick , flutter37 , makeDesktopItem +, gnome }: flutter37.buildFlutterApplication rec { @@ -27,8 +28,9 @@ flutter37.buildFlutterApplication rec { genericName = "Chat with your friends (matrix client)"; categories = [ "Chat" "Network" "InstantMessaging" ]; }; - nativeBuildInputs = [ imagemagick ]; + nativeBuildInputs = [ imagemagick ]; + extraWrapProgramArgs = "--prefix PATH : ${gnome.zenity}/bin"; postInstall = '' FAV=$out/app/data/flutter_assets/assets/favicon.png ICO=$out/share/icons From cfe4464d7e8cf2f67fd6c8d3c3b534de75d676c1 Mon Sep 17 00:00:00 2001 From: Paul Dettorer Hervot Date: Sun, 14 May 2023 14:56:56 +0200 Subject: [PATCH 47/49] python3Packages.python-mapnik: fix tests on darwin - replace the hardcoded references to /tmp with $TMPDIR - disable a PDF-related cairo test --- pkgs/development/python-modules/python-mapnik/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkgs/development/python-modules/python-mapnik/default.nix b/pkgs/development/python-modules/python-mapnik/default.nix index cc545b391aa4..a6e42d2369b6 100644 --- a/pkgs/development/python-modules/python-mapnik/default.nix +++ b/pkgs/development/python-modules/python-mapnik/default.nix @@ -23,6 +23,7 @@ , sqlite , nose , pytestCheckHook +, stdenv }: buildPythonPackage rec { @@ -98,6 +99,9 @@ buildPythonPackage rec { preCheck = '' # import from $out rm -r mapnik + '' + lib.optionalString stdenv.isDarwin '' + # Replace the hardcoded /tmp references with $TMPDIR + sed -i "s,/tmp,$TMPDIR,g" test/python_tests/*.py ''; # https://github.com/mapnik/python-mapnik/issues/255 @@ -129,6 +133,8 @@ buildPythonPackage rec { "test_visual_zoom_all_rendering1" "test_visual_zoom_all_rendering2" "test_wgs84_inverse_forward" + ] ++ lib.optional stdenv.isDarwin [ + "test_passing_pycairo_context_pdf" ]; pythonImportsCheck = [ "mapnik" ]; From 0d0f783de21f945708b74d8b998eb0393f3619aa Mon Sep 17 00:00:00 2001 From: happysalada Date: Sun, 14 May 2023 12:07:47 -0400 Subject: [PATCH 48/49] elixir-ls: 0.14.5 -> 0.14.6 --- .../beam-modules/elixir-ls/default.nix | 11 +++---- .../beam-modules/elixir-ls/pin.json | 5 --- .../beam-modules/elixir-ls/update.sh | 31 ------------------- 3 files changed, 5 insertions(+), 42 deletions(-) delete mode 100644 pkgs/development/beam-modules/elixir-ls/pin.json delete mode 100755 pkgs/development/beam-modules/elixir-ls/update.sh diff --git a/pkgs/development/beam-modules/elixir-ls/default.nix b/pkgs/development/beam-modules/elixir-ls/default.nix index dd7ea4cacf74..885b6eec49af 100644 --- a/pkgs/development/beam-modules/elixir-ls/default.nix +++ b/pkgs/development/beam-modules/elixir-ls/default.nix @@ -1,16 +1,15 @@ -{ lib, elixir, fetchFromGitHub, fetchMixDeps, mixRelease }: +{ lib, elixir, fetchFromGitHub, fetchMixDeps, mixRelease, nix-update-script }: # Based on the work of Hauleth # None of this would have happened without him let pname = "elixir-ls"; - pinData = lib.importJSON ./pin.json; - version = pinData.version; + version = "0.14.6"; src = fetchFromGitHub { owner = "elixir-lsp"; repo = "elixir-ls"; rev = "v${version}"; - sha256 = pinData.sha256; + hash = "sha256-O977DZLWPyLafIaOTPZKI4MOtK9E9TDProf2xyk05aI"; fetchSubmodules = true; }; in @@ -20,7 +19,7 @@ mixRelease { mixFodDeps = fetchMixDeps { pname = "mix-deps-${pname}"; inherit src version elixir; - sha256 = pinData.depsSha256; + sha256 = "sha256-jF1Plkz1D85aWkiNgeBlJmHndhr7us+8+m/gMkXHvDw="; }; # elixir-ls is an umbrella app @@ -71,5 +70,5 @@ mixRelease { platforms = platforms.unix; maintainers = teams.beam.members; }; - passthru.updateScript = ./update.sh; + passthru.updateScript = nix-update-script { }; } diff --git a/pkgs/development/beam-modules/elixir-ls/pin.json b/pkgs/development/beam-modules/elixir-ls/pin.json deleted file mode 100644 index e2eb21a57096..000000000000 --- a/pkgs/development/beam-modules/elixir-ls/pin.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "0.14.5", - "sha256": "sha256-F0c1vyeie8sf11SHfDKb8v1DZ5No3Rr3PPj3jMg0veg=", - "depsSha256": "sha256-/lKZ9Ns32A/elJTez72mH2tZ7ujwEX9p4FIKHpfGq78=" -} diff --git a/pkgs/development/beam-modules/elixir-ls/update.sh b/pkgs/development/beam-modules/elixir-ls/update.sh deleted file mode 100755 index be85b4c6d642..000000000000 --- a/pkgs/development/beam-modules/elixir-ls/update.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env nix-shell -#! nix-shell -i oil -p jq sd nix-prefetch-github ripgrep - -# TODO set to `verbose` or `extdebug` once implemented in oil -set -x - -const directory = $(dirname $0 | xargs realpath) -const owner = "elixir-lsp" -const repo = "elixir-ls" -const latest_rev = $(curl -q https://api.github.com/repos/${owner}/${repo}/releases/latest | \ - jq -r '.tag_name') -const latest_version = $(echo $latest_rev | sd 'v' '') -const current_version = $(jq -r '.version' $directory/pin.json) -if ("$latest_version" === "$current_version") { - echo "elixir-ls is already up-to-date" - return 0 -} else { - const tarball_meta = $(nix-prefetch-github $owner $repo --rev "$latest_rev") - const tarball_hash = "sha256-$(echo $tarball_meta | jq -r '.sha256')" - const sha256s = $(rg '"sha256-.+"' $directory/default.nix | sd '.+"(.+)";' '$1' ) - - jq ".version = \"$latest_version\" | \ - .\"sha256\" = \"$tarball_hash\" | \ - .\"depsSha256\" = \"\"" $directory/pin.json | sponge $directory/pin.json - - const new_mix_hash = $(nix-build -A elixir-ls.mixFodDeps 2>&1 | \ - tail -n 1 | \ - sd '\s+got:\s+' '') - - jq ".depsSha256 = \"$new_mix_hash\"" $directory/pin.json | sponge $directory/pin.json -} From eb34a2251138b07e897e836fd5cc441f846817be Mon Sep 17 00:00:00 2001 From: happysalada Date: Sun, 14 May 2023 12:00:49 -0400 Subject: [PATCH 49/49] meilisearch: 1.1.0 -> 1.1.1 --- pkgs/servers/search/meilisearch/Cargo.lock | 26 ++++++++++----------- pkgs/servers/search/meilisearch/default.nix | 12 ++++++---- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/pkgs/servers/search/meilisearch/Cargo.lock b/pkgs/servers/search/meilisearch/Cargo.lock index 853d1a896c21..f1ff389c018e 100644 --- a/pkgs/servers/search/meilisearch/Cargo.lock +++ b/pkgs/servers/search/meilisearch/Cargo.lock @@ -410,7 +410,7 @@ checksum = "b645a089122eccb6111b4f81cbc1a49f5900ac4666bb93ac027feaecf15607bf" [[package]] name = "benchmarks" -version = "1.1.0" +version = "1.1.1" dependencies = [ "anyhow", "bytes", @@ -1150,7 +1150,7 @@ dependencies = [ [[package]] name = "dump" -version = "1.1.0" +version = "1.1.1" dependencies = [ "anyhow", "big_s", @@ -1371,7 +1371,7 @@ dependencies = [ [[package]] name = "file-store" -version = "1.1.0" +version = "1.1.1" dependencies = [ "faux", "tempfile", @@ -1393,7 +1393,7 @@ dependencies = [ [[package]] name = "filter-parser" -version = "1.1.0" +version = "1.1.1" dependencies = [ "insta", "nom", @@ -1413,7 +1413,7 @@ dependencies = [ [[package]] name = "flatten-serde-json" -version = "1.1.0" +version = "1.1.1" dependencies = [ "criterion", "serde_json", @@ -1890,7 +1890,7 @@ dependencies = [ [[package]] name = "index-scheduler" -version = "1.1.0" +version = "1.1.1" dependencies = [ "anyhow", "big_s", @@ -2049,7 +2049,7 @@ dependencies = [ [[package]] name = "json-depth-checker" -version = "1.1.0" +version = "1.1.1" dependencies = [ "criterion", "serde_json", @@ -2445,7 +2445,7 @@ checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" [[package]] name = "meili-snap" -version = "1.1.0" +version = "1.1.1" dependencies = [ "insta", "md5", @@ -2454,7 +2454,7 @@ dependencies = [ [[package]] name = "meilisearch" -version = "1.1.0" +version = "1.1.1" dependencies = [ "actix-cors", "actix-http", @@ -2542,7 +2542,7 @@ dependencies = [ [[package]] name = "meilisearch-auth" -version = "1.1.0" +version = "1.1.1" dependencies = [ "base64 0.13.1", "enum-iterator", @@ -2561,7 +2561,7 @@ dependencies = [ [[package]] name = "meilisearch-types" -version = "1.1.0" +version = "1.1.1" dependencies = [ "actix-web", "anyhow", @@ -2615,7 +2615,7 @@ dependencies = [ [[package]] name = "milli" -version = "1.1.0" +version = "1.1.1" dependencies = [ "big_s", "bimap", @@ -2969,7 +2969,7 @@ checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" [[package]] name = "permissive-json-pointer" -version = "1.1.0" +version = "1.1.1" dependencies = [ "big_s", "serde_json", diff --git a/pkgs/servers/search/meilisearch/default.nix b/pkgs/servers/search/meilisearch/default.nix index 6cd44a21d5e1..9870d743af1b 100644 --- a/pkgs/servers/search/meilisearch/default.nix +++ b/pkgs/servers/search/meilisearch/default.nix @@ -6,9 +6,10 @@ , DiskArbitration , Foundation , nixosTests +, nix-update-script }: -let version = "1.1.0"; +let version = "1.1.1"; in rustPlatform.buildRustPackage { pname = "meilisearch"; @@ -18,7 +19,7 @@ rustPlatform.buildRustPackage { owner = "meilisearch"; repo = "MeiliSearch"; rev = "refs/tags/v${version}"; - hash = "sha256-mwrWHrndcLwdXJo+UISJdPxZFDgtZh9jEquz7jIHGP0="; + hash = "sha256-catbSe4KT52vNaMD/rq4B7myw76Ki4NSBPX8nTgxT18="; }; cargoBuildFlags = [ @@ -44,8 +45,11 @@ rustPlatform.buildRustPackage { Foundation ]; - passthru.tests = { - meilisearch = nixosTests.meilisearch; + passthru = { + updateScript = nix-update-script { }; + tests = { + meilisearch = nixosTests.meilisearch; + }; }; # Tests will try to compile with mini-dashboard features which downloads something from the internet.