about summary refs log tree commit diff
path: root/pkgs/desktops/lomiri/services/lomiri-polkit-agent/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/desktops/lomiri/services/lomiri-polkit-agent/default.nix')
-rw-r--r--pkgs/desktops/lomiri/services/lomiri-polkit-agent/default.nix104
1 files changed, 104 insertions, 0 deletions
diff --git a/pkgs/desktops/lomiri/services/lomiri-polkit-agent/default.nix b/pkgs/desktops/lomiri/services/lomiri-polkit-agent/default.nix
new file mode 100644
index 0000000000000..710792e3a8139
--- /dev/null
+++ b/pkgs/desktops/lomiri/services/lomiri-polkit-agent/default.nix
@@ -0,0 +1,104 @@
+{
+  stdenv,
+  lib,
+  fetchFromGitLab,
+  fetchpatch,
+  gitUpdater,
+  cmake,
+  cmake-extras,
+  dbus,
+  dbus-test-runner,
+  gtest,
+  libnotify,
+  pkg-config,
+  polkit,
+  properties-cpp,
+  python3,
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "lomiri-polkit-agent";
+  version = "0.1";
+
+  src = fetchFromGitLab {
+    owner = "ubports";
+    repo = "development/core/lomiri-polkit-agent";
+    rev = finalAttrs.version;
+    hash = "sha256-nA2jkyNQC1YIMpJkfJt2F97txGUT4UO7+aSgzr7IUU0=";
+  };
+
+  patches = [
+    # Remove when https://gitlab.com/ubports/development/core/lomiri-polkit-agent/-/merge_requests/2 merged & in release
+    (fetchpatch {
+      name = "0001-lomiri-polkit-agent-Fix-authentication-test-with-libnotify-gteq-0.8.patch";
+      url = "https://gitlab.com/ubports/development/core/lomiri-polkit-agent/-/commit/415d897735b9005426ec29348a882b9080fcd808.patch";
+      hash = "sha256-fAJJ5Bz4P76arhSmiWVa/8S+mb/NqPr65Nm3MkwKtjA=";
+    })
+
+    # Remove when https://gitlab.com/ubports/development/core/lomiri-polkit-agent/-/merge_requests/9 merged & in release
+    (fetchpatch {
+      name = "0002-lomiri-polkit-agent-Make-tests-optional-and-use-BUILD_TESTING.patch";
+      url = "https://gitlab.com/ubports/development/core/lomiri-polkit-agent/-/commit/908177fa24b79b06161116c3c274357122984d36.patch";
+      hash = "sha256-duHx4iNqgAlS649BO1s6D5E2SX9MPRCKb+mit+2cybM=";
+    })
+
+    # Remove when https://gitlab.com/ubports/development/core/lomiri-polkit-agent/-/merge_requests/10 merged & in release
+    (fetchpatch {
+      name = "0003-lomiri-polkit-agent-Explicitly-look-for-properties-cpp.patch";
+      url = "https://gitlab.com/ubports/development/core/lomiri-polkit-agent/-/commit/08bf36e50025aeefc5ba388d6d0f84d760add9cb.patch";
+      hash = "sha256-OFzj/FFXm1fX6+1GY97CON7Nne9wVPmQAxVFpP9rIpU=";
+    })
+  ];
+
+  postPatch = ''
+    # Partial application of still-under-discussion https://gitlab.com/ubports/development/core/lomiri-polkit-agent/-/merge_requests/8
+    substituteInPlace data/lomiri-polkit-agent.service.in \
+      --replace-fail 'After=lomiri-full-greeter.service lomiri-full-shell.service lomiri-greeter.service lomiri-shell.service' 'After=graphical-session.target' \
+      --replace-fail 'PartOf=' 'PartOf=lomiri.service ' \
+      --replace-fail 'WantedBy=' 'WantedBy=lomiri.service '
+
+    # Workaround to avoid coredump on logout
+    # https://gitlab.com/ubports/development/core/lomiri-polkit-agent/-/issues/1
+    substituteInPlace service/main.cpp \
+      --replace-fail 'retval.set_value(0);' 'try { retval.set_value(0); } catch (const std::future_error& ex) {}'
+  '';
+
+  strictDeps = true;
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+  ];
+
+  buildInputs = [
+    cmake-extras
+    libnotify
+    polkit
+    properties-cpp
+  ];
+
+  nativeCheckInputs = [
+    dbus
+    (python3.withPackages (ps: with ps; [ python-dbusmock ]))
+  ];
+
+  checkInputs = [
+    dbus-test-runner
+    gtest
+  ];
+
+  doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
+
+  # Parallelism breaks dbus during tests
+  enableParallelChecking = false;
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = {
+    description = "Policy kit agent for the Lomiri desktop";
+    homepage = "https://gitlab.com/ubports/development/core/lomiri-polkit-agent";
+    license = lib.licenses.gpl3Only;
+    maintainers = lib.teams.lomiri.members;
+    platforms = lib.platforms.linux;
+  };
+})