diff --git a/pkgs/desktops/lomiri/default.nix b/pkgs/desktops/lomiri/default.nix index 03d8e9451bbb..a802e931f469 100644 --- a/pkgs/desktops/lomiri/default.nix +++ b/pkgs/desktops/lomiri/default.nix @@ -51,6 +51,7 @@ let history-service = callPackage ./services/history-service { }; lomiri-download-manager = callPackage ./services/lomiri-download-manager { }; lomiri-indicator-network = callPackage ./services/lomiri-indicator-network { }; + lomiri-polkit-agent = callPackage ./services/lomiri-polkit-agent { }; lomiri-thumbnailer = callPackage ./services/lomiri-thumbnailer { }; lomiri-url-dispatcher = callPackage ./services/lomiri-url-dispatcher { }; mediascanner2 = callPackage ./services/mediascanner2 { }; 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 000000000000..710792e3a813 --- /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; + }; +})