From b24d12eee843658b9a6e39d9cedbcf3ebb0c49d3 Mon Sep 17 00:00:00 2001 From: OPNA2608 Date: Fri, 25 Oct 2024 17:38:18 +0200 Subject: [PATCH 1/3] lomiri.lomiri-url-dispatcher: nixfmt, modernise --- .../lomiri-url-dispatcher/default.nix | 123 ++++++++++-------- 1 file changed, 67 insertions(+), 56 deletions(-) diff --git a/pkgs/desktops/lomiri/services/lomiri-url-dispatcher/default.nix b/pkgs/desktops/lomiri/services/lomiri-url-dispatcher/default.nix index 7629da2cbb84..f19ed47a0459 100644 --- a/pkgs/desktops/lomiri/services/lomiri-url-dispatcher/default.nix +++ b/pkgs/desktops/lomiri/services/lomiri-url-dispatcher/default.nix @@ -1,31 +1,32 @@ -{ 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, + 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: { @@ -53,19 +54,21 @@ stdenv.mkDerivation (finalAttrs: { }) ]; - postPatch = '' - substituteInPlace data/CMakeLists.txt \ - --replace "\''${SYSTEMD_USER_UNIT_DIR}" "\''${CMAKE_INSTALL_LIBDIR}/systemd/user" + postPatch = + '' + substituteInPlace CMakeLists.txt \ + --replace-fail 'pkg_get_variable(SYSTEMD_USER_UNIT_DIR systemd systemduserunitdir)' 'pkg_get_variable(SYSTEMD_USER_UNIT_DIR systemd systemduserunitdir DEFINE_VARIABLES prefix=''${CMAKE_INSTALL_PREFIX})' \ - substituteInPlace tests/url_dispatcher_testability/CMakeLists.txt \ - --replace "\''${PYTHON_PACKAGE_DIR}" "$out/${python3.sitePackages}" + substituteInPlace tests/url_dispatcher_testability/CMakeLists.txt \ + --replace-fail "\''${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 - ''; + # Update URI handler database whenever new url-handler is installed system-wide + substituteInPlace data/lomiri-url-dispatcher-update-system-dir.*.in \ + --replace-fail '@CMAKE_INSTALL_FULL_DATAROOTDIR@' '/run/current-system/sw/share' + '' + + lib.optionalString finalAttrs.finalPackage.doCheck '' + patchShebangs tests/test-sql.sh + ''; strictDeps = true; @@ -75,11 +78,16 @@ stdenv.mkDerivation (finalAttrs: { intltool makeWrapper pkg-config - (python3.withPackages (ps: with ps; [ - setuptools - ] ++ lib.optionals finalAttrs.finalPackage.doCheck [ - python-dbusmock - ])) + (python3.withPackages ( + ps: + with ps; + [ + setuptools + ] + ++ lib.optionals finalAttrs.finalPackage.doCheck [ + python-dbusmock + ] + )) wrapQtAppsHook ]; @@ -104,8 +112,8 @@ stdenv.mkDerivation (finalAttrs: { ]; cmakeFlags = [ - "-DLOCAL_INSTALL=ON" - "-Denable_mirclient=OFF" + (lib.cmakeBool "LOCAL_INSTALL" true) + (lib.cmakeBool "enable_mirclient" false) ]; doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform; @@ -117,7 +125,7 @@ stdenv.mkDerivation (finalAttrs: { preFixup = '' substituteInPlace $out/bin/lomiri-url-dispatcher-dump \ - --replace '/bin/sh' '${runtimeShell}' + --replace-fail '/bin/sh' '${runtimeShell}' wrapProgram $out/bin/lomiri-url-dispatcher-dump \ --prefix PATH : ${lib.makeBinPath [ sqlite ]} @@ -136,8 +144,8 @@ stdenv.mkDerivation (finalAttrs: { 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" + --replace-fail "Exec=$guiExec" "Exec=$(basename $guiScript)" \ + --replace-fail "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+=( @@ -151,17 +159,20 @@ stdenv.mkDerivation (finalAttrs: { updateScript = gitUpdater { }; }; - meta = with lib; { + meta = { 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. + 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; + license = with lib.licenses; [ + lgpl3Only + gpl3Only + ]; + maintainers = lib.teams.lomiri.members; + platforms = lib.platforms.linux; pkgConfigModules = [ "lomiri-url-dispatcher" ]; From 00082729b46cb343120c7fd16d5bc9db0753b52c Mon Sep 17 00:00:00 2001 From: OPNA2608 Date: Fri, 25 Oct 2024 18:24:38 +0200 Subject: [PATCH 2/3] lomiri.lomiri-url-dispatcher: Upstream lomiri-url-dispatcher-gui extraction --- .../lomiri-url-dispatcher/default.nix | 28 ++++++++----------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/pkgs/desktops/lomiri/services/lomiri-url-dispatcher/default.nix b/pkgs/desktops/lomiri/services/lomiri-url-dispatcher/default.nix index f19ed47a0459..77e22e646fbc 100644 --- a/pkgs/desktops/lomiri/services/lomiri-url-dispatcher/default.nix +++ b/pkgs/desktops/lomiri/services/lomiri-url-dispatcher/default.nix @@ -52,6 +52,13 @@ stdenv.mkDerivation (finalAttrs: { url = "https://gitlab.com/sunweaver/lomiri-url-dispatcher/-/commit/ebdd31b9640ca243e90bc7b8aca7951085998bd8.patch"; hash = "sha256-g4EohB3oDcWK4x62/3r/g6CFxqb7/rdK51+E/Fji1Do="; }) + + # Make lomiri-url-dispatcher-gui wrappable + # Remove when https://gitlab.com/ubports/development/core/lomiri-url-dispatcher/-/merge_requests/28 merged & in release + (fetchpatch { + url = "https://gitlab.com/ubports/development/core/lomiri-url-dispatcher/-/commit/6512937e2b388ad1350072b8ed3b4140439b2321.patch"; + hash = "sha256-P1A3hi8l7fJWFjGeK5hWYl8BoZMzRfo44MUTeM7vG2A="; + }) ]; postPatch = @@ -59,6 +66,9 @@ stdenv.mkDerivation (finalAttrs: { substituteInPlace CMakeLists.txt \ --replace-fail 'pkg_get_variable(SYSTEMD_USER_UNIT_DIR systemd systemduserunitdir)' 'pkg_get_variable(SYSTEMD_USER_UNIT_DIR systemd systemduserunitdir DEFINE_VARIABLES prefix=''${CMAKE_INSTALL_PREFIX})' \ + substituteInPlace gui/lomiri-url-dispatcher-gui.desktop.in.in \ + --replace-fail '@CMAKE_INSTALL_FULL_DATADIR@/lomiri-url-dispatcher/gui/lomiri-url-dispatcher-gui.svg' 'lomiri-url-dispatcher-gui' + substituteInPlace tests/url_dispatcher_testability/CMakeLists.txt \ --replace-fail "\''${PYTHON_PACKAGE_DIR}" "$out/${python3.sitePackages}" @@ -124,34 +134,20 @@ stdenv.mkDerivation (finalAttrs: { dontWrapQtApps = true; preFixup = '' - substituteInPlace $out/bin/lomiri-url-dispatcher-dump \ + substituteInPlace $out/bin/lomiri-url-dispatcher-{dump,gui} \ --replace-fail '/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 <$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-fail "Exec=$guiExec" "Exec=$(basename $guiScript)" \ - --replace-fail "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 + wrapQtApp $out/bin/lomiri-url-dispatcher-gui ''; passthru = { From 4d3d768e438422e09585f5284858cb48fc157a64 Mon Sep 17 00:00:00 2001 From: OPNA2608 Date: Fri, 25 Oct 2024 18:57:06 +0200 Subject: [PATCH 3/3] lomiri.lomiri-url-dispatcher: Split library into separate output To reduce the download closure of libayatana-common from 962.7M to 63.2M. Not every libayatana-common user needs to install Lomiri now :) --- .../lomiri/services/lomiri-url-dispatcher/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkgs/desktops/lomiri/services/lomiri-url-dispatcher/default.nix b/pkgs/desktops/lomiri/services/lomiri-url-dispatcher/default.nix index 77e22e646fbc..d26ae0780da2 100644 --- a/pkgs/desktops/lomiri/services/lomiri-url-dispatcher/default.nix +++ b/pkgs/desktops/lomiri/services/lomiri-url-dispatcher/default.nix @@ -43,6 +43,7 @@ stdenv.mkDerivation (finalAttrs: { outputs = [ "out" "dev" + "lib" ]; patches = [ @@ -150,6 +151,11 @@ stdenv.mkDerivation (finalAttrs: { wrapQtApp $out/bin/lomiri-url-dispatcher-gui ''; + postFixup = '' + moveToOutput share $out + moveToOutput libexec $out + ''; + passthru = { tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; updateScript = gitUpdater { };