diff options
author | Christoph Neidahl <christoph.neidahl@gmail.com> | 2023-12-22 21:33:32 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-22 21:33:32 +0100 |
commit | 0f9231a255fb785a77d30796137f2a2da45a755e (patch) | |
tree | 95abac895a93b79bbe32d1e4fbf9feacb8e956e3 /pkgs/desktops | |
parent | acde5fd0270d8d9d4f5ffe6b7ddafeba9ac652f9 (diff) |
lomiri.lomiri-url-dispatcher: init at 0.1.3
Squashed from #259377
Diffstat (limited to 'pkgs/desktops')
-rw-r--r-- | pkgs/desktops/lomiri/default.nix | 3 | ||||
-rw-r--r-- | pkgs/desktops/lomiri/services/lomiri-url-dispatcher/default.nix | 169 |
2 files changed, 171 insertions, 1 deletions
diff --git a/pkgs/desktops/lomiri/default.nix b/pkgs/desktops/lomiri/default.nix index d99bdd97ec9e3..a7c560e205797 100644 --- a/pkgs/desktops/lomiri/default.nix +++ b/pkgs/desktops/lomiri/default.nix @@ -18,6 +18,7 @@ let gmenuharness = callPackage ./development/gmenuharness { }; libusermetrics = callPackage ./development/libusermetrics { }; lomiri-api = callPackage ./development/lomiri-api { }; + lomiri-app-launch = callPackage ./development/lomiri-app-launch { }; trust-store = callPackage ./development/trust-store { }; u1db-qt = callPackage ./development/u1db-qt { }; @@ -31,8 +32,8 @@ let #### Services biometryd = callPackage ./services/biometryd { }; hfd-service = callPackage ./services/hfd-service { }; - lomiri-app-launch = callPackage ./development/lomiri-app-launch { }; lomiri-download-manager = callPackage ./services/lomiri-download-manager { }; + lomiri-url-dispatcher = callPackage ./services/lomiri-url-dispatcher { }; mediascanner2 = callPackage ./services/mediascanner2 { }; }; in diff --git a/pkgs/desktops/lomiri/services/lomiri-url-dispatcher/default.nix b/pkgs/desktops/lomiri/services/lomiri-url-dispatcher/default.nix new file mode 100644 index 0000000000000..7629da2cbb849 --- /dev/null +++ b/pkgs/desktops/lomiri/services/lomiri-url-dispatcher/default.nix @@ -0,0 +1,169 @@ +{ stdenv +, lib +, fetchFromGitLab +, fetchpatch +, gitUpdater +, testers +, cmake +, cmake-extras +, dbus +, dbus-test-runner +, glib +, gtest +, intltool +, json-glib +, libapparmor +, libxkbcommon +, lomiri-app-launch +, lomiri-ui-toolkit +, makeWrapper +, pkg-config +, python3 +, qtbase +, qtdeclarative +, qtwayland +, runtimeShell +, sqlite +, systemd +, wrapQtAppsHook +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "lomiri-url-dispatcher"; + version = "0.1.3"; + + src = fetchFromGitLab { + owner = "ubports"; + repo = "development/core/lomiri-url-dispatcher"; + rev = finalAttrs.version; + hash = "sha256-kde/HzhBHxTeyc2TCUJwpG7IfC8doDd/jNMF8KLM7KU="; + }; + + outputs = [ + "out" + "dev" + ]; + + patches = [ + # Fix case-sensitivity in tests + # Remove when https://gitlab.com/ubports/development/core/lomiri-url-dispatcher/-/merge_requests/8 merged & in release + (fetchpatch { + url = "https://gitlab.com/sunweaver/lomiri-url-dispatcher/-/commit/ebdd31b9640ca243e90bc7b8aca7951085998bd8.patch"; + hash = "sha256-g4EohB3oDcWK4x62/3r/g6CFxqb7/rdK51+E/Fji1Do="; + }) + ]; + + postPatch = '' + substituteInPlace data/CMakeLists.txt \ + --replace "\''${SYSTEMD_USER_UNIT_DIR}" "\''${CMAKE_INSTALL_LIBDIR}/systemd/user" + + substituteInPlace tests/url_dispatcher_testability/CMakeLists.txt \ + --replace "\''${PYTHON_PACKAGE_DIR}" "$out/${python3.sitePackages}" + + # Update URI handler database whenever new url-handler is installed system-wide + substituteInPlace data/lomiri-url-dispatcher-update-system-dir.*.in \ + --replace '@CMAKE_INSTALL_FULL_DATAROOTDIR@' '/run/current-system/sw/share' + '' + lib.optionalString finalAttrs.finalPackage.doCheck '' + patchShebangs tests/test-sql.sh + ''; + + strictDeps = true; + + nativeBuildInputs = [ + cmake + glib # for gdbus-codegen + intltool + makeWrapper + pkg-config + (python3.withPackages (ps: with ps; [ + setuptools + ] ++ lib.optionals finalAttrs.finalPackage.doCheck [ + python-dbusmock + ])) + wrapQtAppsHook + ]; + + buildInputs = [ + cmake-extras + dbus-test-runner + glib + gtest + json-glib + libapparmor + lomiri-app-launch + lomiri-ui-toolkit + qtdeclarative + sqlite + systemd + libxkbcommon + ]; + + nativeCheckInputs = [ + dbus + sqlite + ]; + + cmakeFlags = [ + "-DLOCAL_INSTALL=ON" + "-Denable_mirclient=OFF" + ]; + + doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform; + + # Tests work with an sqlite db, cannot handle >1 test at the same time + enableParallelChecking = false; + + dontWrapQtApps = true; + + preFixup = '' + substituteInPlace $out/bin/lomiri-url-dispatcher-dump \ + --replace '/bin/sh' '${runtimeShell}' + + wrapProgram $out/bin/lomiri-url-dispatcher-dump \ + --prefix PATH : ${lib.makeBinPath [ sqlite ]} + + # Move from qmlscene call in desktop file to easier-to-wrap script + guiScript=$out/bin/lomiri-url-dispatcher-gui + guiExec=$(grep 'Exec=' $out/share/applications/lomiri-url-dispatcher-gui.desktop | cut -d'=' -f2-) + + cat <<EOF >$guiScript + #!${runtimeShell} + $guiExec + EOF + chmod +x $guiScript + + mkdir -p $out/share/icons/hicolor/scalable/apps + ln -s $out/share/lomiri-url-dispatcher/gui/lomiri-url-dispatcher-gui.svg $out/share/icons/hicolor/scalable/apps/ + + substituteInPlace $out/share/applications/lomiri-url-dispatcher-gui.desktop \ + --replace "Exec=$guiExec" "Exec=$(basename $guiScript)" \ + --replace "Icon=$out/share/lomiri-url-dispatcher/gui/lomiri-url-dispatcher-gui.svg" "Icon=lomiri-url-dispatcher-gui" + + # Calls qmlscene from PATH, needs Qt plugins & QML components + qtWrapperArgs+=( + --prefix PATH : ${lib.makeBinPath [ qtdeclarative.dev ]} + ) + wrapQtApp $guiScript + ''; + + passthru = { + tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; + updateScript = gitUpdater { }; + }; + + meta = with lib; { + description = "Lomiri operating environment service for requesting URLs to be opened"; + longDescription = '' + Allows applications to request a URL to be opened and handled by another + process without seeing the list of other applications on the system or + starting them inside its own Application Confinement. + ''; + homepage = "https://gitlab.com/ubports/development/core/lomiri-url-dispatcher"; + license = with licenses; [ lgpl3Only gpl3Only ]; + maintainers = teams.lomiri.members; + platforms = platforms.linux; + pkgConfigModules = [ + "lomiri-url-dispatcher" + ]; + }; +}) |