diff --git a/pkgs/desktops/lomiri/applications/lomiri-calculator-app/default.nix b/pkgs/desktops/lomiri/applications/lomiri-calculator-app/default.nix new file mode 100644 index 000000000000..5e7744072382 --- /dev/null +++ b/pkgs/desktops/lomiri/applications/lomiri-calculator-app/default.nix @@ -0,0 +1,106 @@ +{ + stdenv, + lib, + fetchFromGitLab, + fetchpatch, + gitUpdater, + cmake, + gettext, + lomiri-ui-toolkit, + pkg-config, + qqc2-suru-style, + qtbase, + wrapQtAppsHook, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "lomiri-calculator-app"; + version = "4.0.2"; + + src = fetchFromGitLab { + owner = "ubports"; + repo = "development/apps/lomiri-calculator-app"; + rev = "v${finalAttrs.version}"; + hash = "sha256-NyLEis+rIx2ELUiGrGCeFX/tlt43UgPBkb9aUs1tkgk="; + }; + + patches = [ + # Remove when version > 4.0.2 + (fetchpatch { + name = "0001-lomiri-calculator-app-Fix-GNUInstallDirs-variable-concatenations.patch"; + url = "https://gitlab.com/ubports/development/apps/lomiri-calculator-app/-/commit/0bd6ef6c3470bcecf90a88e1e5568a5ce5ad6d06.patch"; + hash = "sha256-2FCLZ/LY3xTPGDmX+M8LiqlbcNQJu5hulkOf+V+3hWY="; + }) + + # Remove when version > 4.0.2 + # Must apply separately because merge has hunk with changes to new file before hunk that inits said file + (fetchpatch { + name = "0002-lomiri-calculator-app-Migrate-to-C++-app.patch"; + url = "https://gitlab.com/ubports/development/apps/lomiri-calculator-app/-/commit/035e5b8000ad1c8149a6b024fa8fed2667fbb659.patch"; + hash = "sha256-2BTFOrH/gjIzXBmnTPMi+mPpUA7e/+6O/E3pdxhjZYQ="; + }) + (fetchpatch { + name = "0003-lomiri-calculator-app-Call-i18n.bindtextdomain.patch"; + url = "https://gitlab.com/ubports/development/apps/lomiri-calculator-app/-/commit/7cb5e56958e41a8f7a51e00d81d9b2bc24de32b0.patch"; + hash = "sha256-k/Civ0+SCNDDok9bUdb48FKC+LPlM13ASFP6CbBvBVs="; + }) + ]; + + postPatch = + # We don't want absolute paths in desktop files + '' + substituteInPlace CMakeLists.txt \ + --replace-fail 'ICON ''${LOMIRI-CALCULATOR-APP_DIR}/''${ICON_FILE}' 'ICON ''${APP_HARDCODE}' \ + --replace-fail 'SPLASH ''${LOMIRI-CALCULATOR-APP_DIR}/''${SPLASH_FILE}' 'SPLASH lomiri-app-launch/splash/''${APP_HARDCODE}.svg' + '' + + lib.optionalString (!finalAttrs.finalPackage.doCheck) '' + substituteInPlace CMakeLists.txt \ + --replace-fail 'add_subdirectory(tests)' "" + ''; + + strictDeps = true; + + nativeBuildInputs = [ + cmake + gettext + pkg-config + wrapQtAppsHook + ]; + + buildInputs = [ + qtbase + + # QML + lomiri-ui-toolkit + qqc2-suru-style + ]; + + cmakeFlags = [ + (lib.cmakeBool "CLICK_MODE" false) + (lib.cmakeBool "INSTALL_TESTS" false) + ]; + + # No tests we can actually run (just autopilot) + doCheck = false; + + postInstall = '' + mkdir -p $out/share/{icons/hicolor/scalable/apps,lomiri-app-launch/splash} + + ln -s $out/share/{lomiri-calculator-app,icons/hicolor/scalable/apps}/lomiri-calculator-app.svg + ln -s $out/share/{lomiri-calculator-app/lomiri-calculator-app-splash.svg,lomiri-app-launch/splash/lomiri-calculator-app.svg} + ''; + + passthru = { + updateScript = gitUpdater { rev-prefix = "v"; }; + }; + + meta = { + description = "Powerful and easy to use calculator for Ubuntu Touch, with calculations history and formula validation"; + homepage = "https://gitlab.com/ubports/development/apps/lomiri-calculator-app"; + changelog = "https://gitlab.com/ubports/development/apps/lomiri-calculator-app/-/blob/v${finalAttrs.version}/ChangeLog"; + license = lib.licenses.gpl3Only; + mainProgram = "lomiri-calculator-app"; + maintainers = lib.teams.lomiri.members; + platforms = lib.platforms.linux; + }; +}) diff --git a/pkgs/desktops/lomiri/default.nix b/pkgs/desktops/lomiri/default.nix index 03d8e9451bbb..1a84a9024c8f 100644 --- a/pkgs/desktops/lomiri/default.nix +++ b/pkgs/desktops/lomiri/default.nix @@ -9,6 +9,7 @@ let in { #### Core Apps lomiri = callPackage ./applications/lomiri { }; + lomiri-calculator-app = callPackage ./applications/lomiri-calculator-app { }; lomiri-filemanager-app = callPackage ./applications/lomiri-filemanager-app { }; lomiri-system-settings-unwrapped = callPackage ./applications/lomiri-system-settings { }; lomiri-system-settings-security-privacy = callPackage ./applications/lomiri-system-settings/plugins/lomiri-system-settings-security-privacy.nix { };