diff --git a/nixos/tests/matomo.nix b/nixos/tests/matomo.nix
index ef1aeeee75c2..a3351b573265 100644
--- a/nixos/tests/matomo.nix
+++ b/nixos/tests/matomo.nix
@@ -5,71 +5,61 @@
}:
with import ../lib/testing-python.nix { inherit system pkgs; };
-with pkgs.lib;
-let
- matomoTest =
- package:
- makeTest {
- name = "matomo";
+makeTest {
+ name = "matomo";
- nodes.machine =
- { config, pkgs, ... }:
- {
- services.matomo = {
- package = package;
- enable = true;
- nginx = {
- forceSSL = false;
- enableACME = false;
- };
- };
- services.mysql = {
- enable = true;
- package = pkgs.mariadb;
- };
- services.nginx.enable = true;
+ nodes.machine =
+ { config, pkgs, ... }:
+ {
+ services.matomo = {
+ enable = true;
+ nginx = {
+ forceSSL = false;
+ enableACME = false;
};
-
- testScript = ''
- start_all()
- machine.wait_for_unit("mysql.service")
- machine.wait_for_unit("phpfpm-matomo.service")
- machine.wait_for_unit("nginx.service")
-
- with subtest("matomo.js reachable via HTTP"):
- machine.succeed("curl -sSfk http://machine/matomo.js")
-
- with subtest("js/piwik.js reachable via HTTP"):
- machine.succeed("curl -sSfk http://machine/js/piwik.js")
-
- with subtest("matomo.php (API) reachable via HTTP"):
- machine.succeed("curl -sSfk http://machine/matomo.php")
-
- # without the grep the command does not produce valid utf-8 for some reason
- with subtest("welcome screen loads"):
- machine.succeed(
- "curl -sSfL http://localhost/ | grep '
Matomo[^<]*Installation'"
- )
-
- with subtest("killing the phpfpm process should trigger an automatic restart"):
- machine.succeed("systemctl kill -s KILL phpfpm-matomo")
- machine.sleep(1)
- machine.wait_for_unit("phpfpm-matomo.service")
- '';
+ };
+ services.mysql = {
+ enable = true;
+ package = pkgs.mariadb;
+ };
+ services.nginx.enable = true;
};
-in
-{
- matomo = matomoTest pkgs.matomo // {
- name = "matomo";
- meta.maintainers =
- with maintainers;
- [
- florianjacob
- mmilata
- twey
- boozedog
- ]
- ++ lib.teams.flyingcircus.members;
- };
+
+ testScript = ''
+ start_all()
+ machine.wait_for_unit("mysql.service")
+ machine.wait_for_unit("phpfpm-matomo.service")
+ machine.wait_for_unit("nginx.service")
+
+ with subtest("matomo.js reachable via HTTP"):
+ machine.succeed("curl -sSfk http://machine/matomo.js")
+
+ with subtest("js/piwik.js reachable via HTTP"):
+ machine.succeed("curl -sSfk http://machine/js/piwik.js")
+
+ with subtest("matomo.php (API) reachable via HTTP"):
+ machine.succeed("curl -sSfk http://machine/matomo.php")
+
+ # without the grep the command does not produce valid utf-8 for some reason
+ with subtest("welcome screen loads"):
+ machine.succeed(
+ "curl -sSfL http://localhost/ | grep 'Matomo[^<]*Installation'"
+ )
+
+ with subtest("killing the phpfpm process should trigger an automatic restart"):
+ machine.succeed("systemctl kill -s KILL phpfpm-matomo")
+ machine.sleep(1)
+ machine.wait_for_unit("phpfpm-matomo.service")
+ '';
+
+ meta.maintainers =
+ with pkgs.lib.maintainers;
+ [
+ florianjacob
+ mmilata
+ twey
+ boozedog
+ ]
+ ++ pkgs.lib.teams.flyingcircus.members;
}
diff --git a/pkgs/servers/web-apps/matomo/default.nix b/pkgs/servers/web-apps/matomo/default.nix
index 58869c75bb90..b63ed013ad5d 100644
--- a/pkgs/servers/web-apps/matomo/default.nix
+++ b/pkgs/servers/web-apps/matomo/default.nix
@@ -7,122 +7,108 @@
nixosTests,
}:
-let
- versions = {
- matomo = {
- version = "5.2.1";
- hash = "sha256-5glMwwIG0Uo8bu904u40FUa+yaUlrQe1nUCkv9/ATks=";
+stdenv.mkDerivation (finalAttrs: {
+ pname = "matomo";
+ version = "5.2.1";
+
+ src = fetchurl {
+ url = "https://builds.matomo.org/matomo-${finalAttrs.version}.tar.gz";
+ hash = "sha256-5glMwwIG0Uo8bu904u40FUa+yaUlrQe1nUCkv9/ATks=";
+ };
+
+ nativeBuildInputs = [ makeWrapper ];
+
+ patches = [
+ # This changes the default value of the database server field
+ # from 127.0.0.1 to localhost.
+ # unix socket authentication only works with localhost,
+ # but password-based SQL authentication works with both.
+ # TODO: is upstream interested in this?
+ # -> discussion at https://github.com/matomo-org/matomo/issues/12646
+ ./make-localhost-default-database-host.patch
+ # This changes the default config for path.geoip2 so that it doesn't point
+ # to the nix store.
+ ./change-path-geoip2-5.x.patch
+ ];
+
+ # this bootstrap.php adds support for getting PIWIK_USER_PATH
+ # from an environment variable. Point it to a mutable location
+ # to be able to use matomo read-only from the nix store
+ postPatch = ''
+ cp ${./bootstrap.php} bootstrap.php
+ '';
+
+ # TODO: future versions might rename the PIWIK_… variables to MATOMO_…
+ # TODO: Move more unnecessary files from share/, especially using PIWIK_INCLUDE_PATH.
+ # See https://forum.matomo.org/t/bootstrap-php/5926/10 and
+ # https://github.com/matomo-org/matomo/issues/11654#issuecomment-297730843
+ installPhase = ''
+ runHook preInstall
+
+ # copy everything to share/, used as webroot folder, and then remove what's known to be not needed
+ mkdir -p $out/share
+ cp -ra * $out/share/
+ # tmp/ is created by matomo in PIWIK_USER_PATH
+ rmdir $out/share/tmp
+ # config/ needs to be accessed by PIWIK_USER_PATH anyway
+ ln -s $out/share/config $out/
+
+ makeWrapper ${php}/bin/php $out/bin/matomo-console \
+ --add-flags "$out/share/console"
+
+ runHook postInstall
+ '';
+
+ filesToFix = [
+ "misc/composer/build-xhprof.sh"
+ "misc/composer/clean-xhprof.sh"
+ "misc/cron/archive.sh"
+ "plugins/GeoIp2/config/config.php"
+ "plugins/Installation/FormDatabaseSetup.php"
+ "vendor/pear/archive_tar/sync-php4"
+ "vendor/szymach/c-pchart/coverage.sh"
+ "vendor/matomo/matomo-php-tracker/run_tests.sh"
+ "vendor/twig/twig/drupal_test.sh"
+ ];
+
+ # This fixes the consistency check in the admin interface
+ #
+ # The filesToFix list may contain files that are exclusive to only one of the versions we build
+ # make sure to test for existence to avoid erroring on an incompatible version and failing
+ postFixup = ''
+ pushd $out/share > /dev/null
+ for f in $filesToFix; do
+ if [ -f "$f" ]; then
+ length="$(wc -c "$f" | cut -d' ' -f1)"
+ hash="$(md5sum "$f" | cut -d' ' -f1)"
+ sed -i "s:\\(\"$f\"[^(]*(\\).*:\\1\"$length\", \"$hash\"),:g" config/manifest.inc.php
+ else
+ echo "INFO(files-to-fix): $f does not exist in this version"
+ fi
+ done
+ popd > /dev/null
+ '';
+
+ passthru = {
+ tests = lib.optionalAttrs stdenv.hostPlatform.isLinux {
+ inherit (nixosTests) matomo;
};
};
- common =
- pname:
- {
- version,
- hash,
- beta ? null,
- }:
- stdenv.mkDerivation (finalAttrs: {
- name = "${pname}-${finalAttrs.version}";
- version = version + lib.optionalString (beta != null) "-${toString beta}";
- src = fetchurl {
- url = "https://builds.matomo.org/matomo-${finalAttrs.version}.tar.gz";
- inherit hash;
- };
-
- nativeBuildInputs = [ makeWrapper ];
-
- patches = [
- # This changes the default value of the database server field
- # from 127.0.0.1 to localhost.
- # unix socket authentication only works with localhost,
- # but password-based SQL authentication works with both.
- # TODO: is upstream interested in this?
- # -> discussion at https://github.com/matomo-org/matomo/issues/12646
- ./make-localhost-default-database-host.patch
- # This changes the default config for path.geoip2 so that it doesn't point
- # to the nix store.
- ./change-path-geoip2-5.x.patch
- ];
-
- # this bootstrap.php adds support for getting PIWIK_USER_PATH
- # from an environment variable. Point it to a mutable location
- # to be able to use matomo read-only from the nix store
- postPatch = ''
- cp ${./bootstrap.php} bootstrap.php
- '';
-
- # TODO: future versions might rename the PIWIK_… variables to MATOMO_…
- # TODO: Move more unnecessary files from share/, especially using PIWIK_INCLUDE_PATH.
- # See https://forum.matomo.org/t/bootstrap-php/5926/10 and
- # https://github.com/matomo-org/matomo/issues/11654#issuecomment-297730843
- installPhase = ''
- runHook preInstall
-
- # copy everything to share/, used as webroot folder, and then remove what's known to be not needed
- mkdir -p $out/share
- cp -ra * $out/share/
- # tmp/ is created by matomo in PIWIK_USER_PATH
- rmdir $out/share/tmp
- # config/ needs to be accessed by PIWIK_USER_PATH anyway
- ln -s $out/share/config $out/
-
- makeWrapper ${php}/bin/php $out/bin/matomo-console \
- --add-flags "$out/share/console"
-
- runHook postInstall
- '';
-
- filesToFix = [
- "misc/composer/build-xhprof.sh"
- "misc/composer/clean-xhprof.sh"
- "misc/cron/archive.sh"
- "plugins/GeoIp2/config/config.php"
- "plugins/Installation/FormDatabaseSetup.php"
- "vendor/pear/archive_tar/sync-php4"
- "vendor/szymach/c-pchart/coverage.sh"
- "vendor/matomo/matomo-php-tracker/run_tests.sh"
- "vendor/twig/twig/drupal_test.sh"
- ];
-
- # This fixes the consistency check in the admin interface
- #
- # The filesToFix list may contain files that are exclusive to only one of the versions we build
- # make sure to test for existence to avoid erroring on an incompatible version and failing
- postFixup = ''
- pushd $out/share > /dev/null
- for f in $filesToFix; do
- if [ -f "$f" ]; then
- length="$(wc -c "$f" | cut -d' ' -f1)"
- hash="$(md5sum "$f" | cut -d' ' -f1)"
- sed -i "s:\\(\"$f\"[^(]*(\\).*:\\1\"$length\", \"$hash\"),:g" config/manifest.inc.php
- else
- echo "INFO(files-to-fix): $f does not exist in this version"
- fi
- done
- popd > /dev/null
- '';
-
- passthru = {
- tests = nixosTests.matomo."${pname}";
- };
-
- meta = with lib; {
- description = "Real-time web analytics application";
- mainProgram = "matomo-console";
- license = licenses.gpl3Plus;
- homepage = "https://matomo.org/";
- platforms = platforms.all;
- maintainers =
- with maintainers;
- [
- florianjacob
- sebbel
- twey
- boozedog
- ]
- ++ teams.flyingcircus.members;
- };
- });
-in
-lib.mapAttrs common versions
+ meta = with lib; {
+ description = "Real-time web analytics application";
+ mainProgram = "matomo-console";
+ license = licenses.gpl3Plus;
+ homepage = "https://matomo.org/";
+ platforms = platforms.all;
+ maintainers =
+ with maintainers;
+ [
+ florianjacob
+ sebbel
+ twey
+ boozedog
+ ]
+ ++ teams.flyingcircus.members;
+ };
+})
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 2fb9e4464d06..b36768390ec6 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -11882,8 +11882,7 @@ with pkgs;
};
tt-rss = callPackage ../servers/tt-rss { };
- inherit (callPackages ../servers/web-apps/matomo {})
- matomo;
+ matomo = callPackage ../servers/web-apps/matomo { };
unpackerr = callPackage ../servers/unpackerr {
inherit (darwin.apple_sdk.frameworks) Cocoa WebKit;