From 685d8c9f99a117ffbd33ead7a3dfa93cefd6acd8 Mon Sep 17 00:00:00 2001
From: OPNA2608 <opna2608@protonmail.com>
Date: Sun, 4 Feb 2024 20:11:39 +0100
Subject: [PATCH] ayatana-indicator-datetime: Fix version & tests

---
 .../ay/ayatana-indicator-datetime/package.nix | 61 ++++++++++---------
 1 file changed, 33 insertions(+), 28 deletions(-)

diff --git a/pkgs/by-name/ay/ayatana-indicator-datetime/package.nix b/pkgs/by-name/ay/ayatana-indicator-datetime/package.nix
index ecff853423fc..9b8419df8905 100644
--- a/pkgs/by-name/ay/ayatana-indicator-datetime/package.nix
+++ b/pkgs/by-name/ay/ayatana-indicator-datetime/package.nix
@@ -27,6 +27,9 @@
 , wrapGAppsHook
 }:
 
+let
+  edsDataDir = "${evolution-data-server}/share";
+in
 stdenv.mkDerivation (finalAttrs: {
   pname = "ayatana-indicator-datetime";
   version = "23.10.1";
@@ -34,36 +37,37 @@ stdenv.mkDerivation (finalAttrs: {
   src = fetchFromGitHub {
     owner = "AyatanaIndicators";
     repo = "ayatana-indicator-datetime";
-    # Release wasn't tagged?
-    # https://github.com/AyatanaIndicators/ayatana-indicator-datetime/issues/121
-    rev = "d8debd706fe92de09e5c654c4ea2cc5dd5ce0529";
+    rev = finalAttrs.version;
     hash = "sha256-cm1zhG9TODGe79n/fGuyVnWL/sjxUc3ZCu9FhqA1NLE=";
   };
 
   patches = [
     # Fix test-menus building & running
-    # Remove when https://github.com/AyatanaIndicators/ayatana-indicator-datetime/pull/122 merged & in release
+    # Remove when version > 23.10.1
     (fetchpatch {
-      name = "0001-ayatana-indicator-datetime-tests-test-menu-Fix-build.patch";
-      url = "https://github.com/AyatanaIndicators/ayatana-indicator-datetime/commit/a6527e90d855d43f43e1ff9bccda2fa22d3c60ab.patch";
-      hash = "sha256-RZY51UnrMcXbZbwyuCHSxY6toGByaObSEntVnIMz7+w=";
+      name = "0001-ayatana-indicator-datetime-Fix-test-menus-tests.patch";
+      url = "https://github.com/AyatanaIndicators/ayatana-indicator-datetime/commit/ddabb4a61a496da14603573b700c5961a3e5b834.patch";
+      hash = "sha256-vf8aVXonCoTWMuAQZG6FuklWR2IaGY4hecFtoyNCGg8=";
     })
+
+    # Fix EDS-related tests
+    # Remove when version > 23.10.1
     (fetchpatch {
-      name = "0002-ayatana-indicator-datetime-tests-Fix-show_alarms-tests.patch";
-      url = "https://github.com/AyatanaIndicators/ayatana-indicator-datetime/commit/5186b51c004ec25e8a44fe5918bceb3d45abb108.patch";
-      hash = "sha256-goVcpN0MNOic8mpdJdhjgS9LHQLVEZT6ZEg1PqLvmsE=";
+      name = "0002-ayatana-indicator-datetime-Fix-EDS-colour-tests.patch";
+      url = "https://github.com/AyatanaIndicators/ayatana-indicator-datetime/commit/6d67f7b458911833e72e0b4a162b1d823609d6f8.patch";
+      hash = "sha256-VUdMJuma6rmsjUOeyO0W8UNKADODiM+wDVfj6aDhqgw=";
     })
   ];
 
   postPatch = ''
     # Queries systemd user unit dir via pkg_get_variable, can't override prefix
     substituteInPlace data/CMakeLists.txt \
-      --replace 'pkg_get_variable(SYSTEMD_USER_DIR systemd systemduserunitdir)' 'set(SYSTEMD_USER_DIR ''${CMAKE_INSTALL_PREFIX}/lib/systemd/user)' \
-      --replace '/etc' "\''${CMAKE_INSTALL_SYSCONFDIR}"
+      --replace-fail 'pkg_get_variable(SYSTEMD_USER_DIR systemd systemduserunitdir)' 'set(SYSTEMD_USER_DIR ''${CMAKE_INSTALL_PREFIX}/lib/systemd/user)' \
+      --replace-fail '/etc' "\''${CMAKE_INSTALL_FULL_SYSCONFDIR}"
 
     # Looking for Lomiri schemas for code generation
     substituteInPlace src/CMakeLists.txt \
-      --replace '/usr/share/accountsservice' '${lomiri.lomiri-schemas}/share/accountsservice'
+      --replace-fail '/usr/share/accountsservice' '${lomiri.lomiri-schemas}/share/accountsservice'
   '';
 
   strictDeps = true;
@@ -116,15 +120,6 @@ stdenv.mkDerivation (finalAttrs: {
     (lib.cmakeBool "GSETTINGS_COMPILE" true)
     (lib.cmakeBool "ENABLE_LOMIRI_FEATURES" true)
     (lib.cmakeBool "ENABLE_TESTS" finalAttrs.finalPackage.doCheck)
-    (lib.cmakeFeature "CMAKE_CTEST_ARGUMENTS" (lib.concatStringsSep ";" [
-      # Exclude tests
-      "-E" (lib.strings.escapeShellArg "(${lib.concatStringsSep "|" [
-        # evolution-data-server tests have been silently failing on upstream CI for awhile,
-        # 23.10.0 release has fixed the silentness but left the tests broken.
-        # https://github.com/AyatanaIndicators/ayatana-indicator-datetime/commit/3e65062b5bb0957b5bb683ff04cb658d9d530477
-        "^test-eds-ics"
-      ]})")
-    ]))
   ];
 
   doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
@@ -132,7 +127,20 @@ stdenv.mkDerivation (finalAttrs: {
   enableParallelChecking = false;
 
   preCheck = ''
-    export XDG_DATA_DIRS=${glib.passthru.getSchemaDataDirPath libayatana-common}
+    export XDG_DATA_DIRS=${lib.strings.concatStringsSep ":" [
+      # org.ayatana.common schema
+      (glib.passthru.getSchemaDataDirPath libayatana-common)
+
+      # loading EDS engines to handle ICS-loading
+      edsDataDir
+    ]}
+  '';
+
+  preFixup = ''
+    # schema is already added automatically by wrapper, EDS needs to be added explicitly
+    gappsWrapperArgs+=(
+      --prefix XDG_DATA_DIRS : "${edsDataDir}"
+    )
   '';
 
   passthru = {
@@ -142,8 +150,7 @@ stdenv.mkDerivation (finalAttrs: {
     tests = {
       inherit (nixosTests) ayatana-indicators;
     };
-    # Latest release wasn't tagged, Don't try to bump down
-    #updateScript = gitUpdater { };
+    updateScript = gitUpdater { };
   };
 
   meta = with lib; {
@@ -153,9 +160,7 @@ stdenv.mkDerivation (finalAttrs: {
       event management tool.
     '';
     homepage = "https://github.com/AyatanaIndicators/ayatana-indicator-datetime";
-    # Latest release wasn't tagged
-    # changelog = "https://github.com/AyatanaIndicators/ayatana-indicator-datetime/blob/${finalAttrs.version}/ChangeLog";
-    changelog = "https://github.com/AyatanaIndicators/ayatana-indicator-datetime/blob/${finalAttrs.finalPackage.src.rev}/ChangeLog";
+    changelog = "https://github.com/AyatanaIndicators/ayatana-indicator-datetime/blob/${finalAttrs.version}/ChangeLog";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ OPNA2608 ];
     platforms = platforms.linux;