diff --git a/nixos/doc/manual/release-notes/rl-2505.section.md b/nixos/doc/manual/release-notes/rl-2505.section.md
index cb005a1e9b96..b0dc28ab0c2c 100644
--- a/nixos/doc/manual/release-notes/rl-2505.section.md
+++ b/nixos/doc/manual/release-notes/rl-2505.section.md
@@ -291,6 +291,8 @@
- `matomo` now defaults to version 5 (previously available as `matomo_5`). Version 4 has been removed as it reached EOL on December 19, 2024.
+- `matomo-beta` has been removed as the version of the `matomo` package can now be easily overriden through `overrideAttrs` (see [PR #374022](https://github.com/NixOS/nixpkgs/pull/374022))
+
- `docker_24` has been removed, as it was EOL with vulnerabilites since June 08, 2024.
- `containerd` has been updated to v2, which contains breaking changes. See the [containerd
diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix
index 17742d743177..dd117cca93b8 100644
--- a/nixos/tests/all-tests.nix
+++ b/nixos/tests/all-tests.nix
@@ -587,7 +587,7 @@ in {
mate = handleTest ./mate.nix {};
mate-wayland = handleTest ./mate-wayland.nix {};
matter-server = handleTest ./matter-server.nix {};
- matomo = handleTest ./matomo.nix {};
+ matomo = runTest ./matomo.nix;
matrix-appservice-irc = runTest ./matrix/appservice-irc.nix;
matrix-conduit = handleTest ./matrix/conduit.nix {};
matrix-synapse = handleTest ./matrix/synapse.nix {};
diff --git a/nixos/tests/matomo.nix b/nixos/tests/matomo.nix
index 1a40fa93a557..9562cb7e4e2b 100644
--- a/nixos/tests/matomo.nix
+++ b/nixos/tests/matomo.nix
@@ -1,84 +1,58 @@
+{ lib, ... }:
{
- system ? builtins.currentSystem,
- config ? { },
- pkgs ? import ../.. { inherit system config; },
-}:
+ name = "matomo";
-with import ../lib/testing-python.nix { inherit system pkgs; };
-with pkgs.lib;
-
-let
- matomoTest =
- package:
- 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;
- };
- matomo-beta = matomoTest pkgs.matomo-beta // {
- name = "matomo-beta";
- meta.maintainers = with maintainers; [
+
+ 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 lib.maintainers;
+ [
florianjacob
mmilata
twey
boozedog
- ];
- };
+ ]
+ ++ lib.teams.flyingcircus.members;
}
diff --git a/pkgs/servers/web-apps/matomo/bootstrap.php b/pkgs/by-name/ma/matomo/bootstrap.php
similarity index 100%
rename from pkgs/servers/web-apps/matomo/bootstrap.php
rename to pkgs/by-name/ma/matomo/bootstrap.php
diff --git a/pkgs/servers/web-apps/matomo/change-path-geoip2-5.x.patch b/pkgs/by-name/ma/matomo/change-path-geoip2-5.x.patch
similarity index 100%
rename from pkgs/servers/web-apps/matomo/change-path-geoip2-5.x.patch
rename to pkgs/by-name/ma/matomo/change-path-geoip2-5.x.patch
diff --git a/pkgs/servers/web-apps/matomo/make-localhost-default-database-host.patch b/pkgs/by-name/ma/matomo/make-localhost-default-database-host.patch
similarity index 100%
rename from pkgs/servers/web-apps/matomo/make-localhost-default-database-host.patch
rename to pkgs/by-name/ma/matomo/make-localhost-default-database-host.patch
diff --git a/pkgs/by-name/ma/matomo/package.nix b/pkgs/by-name/ma/matomo/package.nix
new file mode 100644
index 000000000000..7954fe5009f2
--- /dev/null
+++ b/pkgs/by-name/ma/matomo/package.nix
@@ -0,0 +1,123 @@
+{
+ lib,
+ stdenv,
+ fetchurl,
+ makeWrapper,
+ php,
+ nixosTests,
+ nix-update-script,
+}:
+
+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 = {
+ updateScript = nix-update-script {
+ extraArgs = [
+ "--url"
+ "https://github.com/matomo-org/matomo"
+ ];
+ };
+ tests = lib.optionalAttrs stdenv.hostPlatform.isLinux {
+ inherit (nixosTests) matomo;
+ };
+ };
+
+ meta = {
+ description = "Real-time web analytics application";
+ mainProgram = "matomo-console";
+ license = lib.licenses.gpl3Plus;
+ homepage = "https://matomo.org/";
+ changelog = "https://github.com/matomo-org/matomo/releases/tag/${finalAttrs.version}";
+ platforms = lib.platforms.all;
+ maintainers =
+ with lib.maintainers;
+ [
+ florianjacob
+ sebbel
+ twey
+ boozedog
+ niklaskorz
+ ]
+ ++ lib.teams.flyingcircus.members;
+ };
+})
diff --git a/pkgs/servers/web-apps/matomo/default.nix b/pkgs/servers/web-apps/matomo/default.nix
deleted file mode 100644
index eab263044cec..000000000000
--- a/pkgs/servers/web-apps/matomo/default.nix
+++ /dev/null
@@ -1,135 +0,0 @@
-{
- lib,
- stdenv,
- fetchurl,
- makeWrapper,
- php,
- nixosTests,
-}:
-
-let
- versions = {
- matomo = {
- version = "5.2.1";
- hash = "sha256-5glMwwIG0Uo8bu904u40FUa+yaUlrQe1nUCkv9/ATks=";
- };
- matomo-beta = {
- version = "5.2.1";
- # `beta` examples: "b1", "rc1", null
- # when updating: use null if stable version is >= latest beta or release candidate
- beta = null;
- hash = "sha256-5glMwwIG0Uo8bu904u40FUa+yaUlrQe1nUCkv9/ATks=";
- };
- };
- 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
diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix
index f331974c7000..e62c6d5d80db 100644
--- a/pkgs/top-level/aliases.nix
+++ b/pkgs/top-level/aliases.nix
@@ -839,6 +839,7 @@ mapAliases {
mathematica10 = throw "mathematica10 has been removed as it was obsolete, broken, and depended on OpenCV 2"; # Added 2024-08-20
mathematica11 = throw "mathematica11 has been removed as it was obsolete, broken, and depended on OpenCV 2"; # Added 2024-08-20
matomo_5 = matomo; # Added 2024-12-12
+ matomo-beta = throw "matomo-beta has been removed as it mostly just pointed to the latest matomo release, use `matomo.overrideAttrs` to access a specific beta version instead"; # Added 2025-01-15
matrique = throw "'matrique' has been renamed to/replaced by 'spectral'"; # Converted to throw 2024-10-17
matrix-sliding-sync = throw "matrix-sliding-sync has been removed as matrix-synapse 114.0 and later covers its functionality"; # Added 2024-10-20
maui-nota = libsForQt5.mauiPackages.nota; # added 2022-05-17
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index d8fae46a5e6d..b37b0cce9a93 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -11874,9 +11874,6 @@ with pkgs;
};
tt-rss = callPackage ../servers/tt-rss { };
- inherit (callPackages ../servers/web-apps/matomo {})
- matomo
- matomo-beta;
unpackerr = callPackage ../servers/unpackerr {
inherit (darwin.apple_sdk.frameworks) Cocoa WebKit;