Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 0 additions & 9 deletions nixos/tests/matomo.nix
Original file line number Diff line number Diff line change
Expand Up @@ -69,15 +69,6 @@ in
boozedog
];
};
matomo-beta = matomoTest pkgs.matomo-beta // {
name = "matomo-beta";
meta.maintainers = with maintainers; [
florianjacob
mmilata
twey
boozedog
];
};
matomo_5 = matomoTest pkgs.matomo_5 // {
name = "matomo-5";
meta.maintainers =
Expand Down
125 changes: 125 additions & 0 deletions pkgs/by-name/ma/matomo/package.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
{
lib,
stdenv,
fetchurl,
makeWrapper,
php,
nixosTests,
}:
let
fetchurl' = lib.makeOverridable fetchurl;
in
stdenv.mkDerivation (finalAttrs: {
name = "matomo";
version = "5.2.2";

src = fetchurl' {
url = "https://builds.matomo.org/matomo-${finalAttrs.version}.tar.gz";
hash = "sha256-ZEwz/KKZZwTFsKfwR0iKZM1ta4CUXJsWgBXika+pjb0=";
};

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.
(
if lib.versionOlder finalAttrs.version "5.0" then
./change-path-geoip2-4.x.patch
else
./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 =
if (lib.versionOlder finalAttrs.version "5.0") then
nixosTests.matomo.matomo
else
nixosTests.matomo.matomo_5;
};

meta = {
description = "Real-time web analytics application";
mainProgram = "matomo-console";
license = lib.licenses.gpl3Plus;
homepage = "https://matomo.org/";
platforms = lib.platforms.all;
maintainers =
with lib.maintainers;
[
florianjacob
sebbel
twey
boozedog
niklaskorz
]
++ lib.teams.flyingcircus.members;
knownVulnerabilities = lib.optional (lib.versionOlder finalAttrs.version "5.0") "Support for Matomo 4 ended on 2024-12-19. It is recommended to upgrade to `matomo_5` instead.";
};
})
145 changes: 0 additions & 145 deletions pkgs/servers/web-apps/matomo/default.nix

This file was deleted.

1 change: 1 addition & 0 deletions pkgs/top-level/aliases.nix
Original file line number Diff line number Diff line change
Expand Up @@ -768,6 +768,7 @@ mapAliases {
mathematica9 = throw "mathematica9 has been removed as it was obsolete, broken, and depended on OpenCV 2"; # Added 2024-08-20
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-beta = lib.warn "matomo-beta will be removed in NixOS 25.05" matomo_5; # Added 2025-02-03
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
Expand Down
21 changes: 18 additions & 3 deletions pkgs/top-level/all-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -12268,10 +12268,25 @@ with pkgs;
};

tt-rss = callPackage ../servers/tt-rss { };
inherit (callPackages ../servers/web-apps/matomo {})
matomo

inherit
({
# To allow automatic backports of Matomo 5 PRs, the path must match what we
# have on `master`.
# We still want to provide the contents of this package as `matomo_5` in 24.11
# to not introduce a breaking change while preserving `matomo` as the EOL
# Matomo 4.x.
matomo_5 = callPackage ../by-name/ma/matomo/package.nix { };
# Matomo 4 reached EOL and will be replaced by matomo_5 in NixOS 25.05
matomo = matomo_5.overrideAttrs (old: {
version = "4.16.1";
src = old.src.override {
hash = "sha256-cGnsxfpvt7FyhxFcA2/gWWe7CyanVGZVKtCDES3XLdI=";
};
});
})
matomo_5
matomo-beta;
matomo;

inherit (callPackages ../servers/unifi { })
unifi8;
Expand Down
Loading