lomiri.lomiri: init at 0.2.1

This commit is contained in:
OPNA2608 2024-02-27 11:59:42 +01:00 committed by Weijia Wang
parent 5d0b251de2
commit 1850a54e57
3 changed files with 318 additions and 0 deletions

View File

@ -0,0 +1,30 @@
From b7757a71bbce18b4718474cab6a7ff7b613f8c86 Mon Sep 17 00:00:00 2001
From: OPNA2608 <opna2608@protonmail.com>
Date: Sun, 19 Nov 2023 13:25:55 +0100
Subject: [PATCH] lomiri: Disable Wizard
NixOS does all of this configuration statically at generation build & setup time. For us this just ends up being series of screens
re-confirming abunch of things set in your configuration, so pointless.
---
plugins/Wizard/System.cpp | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/plugins/Wizard/System.cpp b/plugins/Wizard/System.cpp
index aee8184a8..06c867023 100644
--- a/plugins/Wizard/System.cpp
+++ b/plugins/Wizard/System.cpp
@@ -69,10 +69,7 @@ bool System::wizardPathExists() {
bool System::wizardEnabled() const
{
- if (!wizardPathExists()) {
- return true;
- }
- return isUpdate();
+ return false;
}
QString System::readCurrentFramework()
--
2.40.1

View File

@ -0,0 +1,287 @@
{ stdenv
, lib
, fetchFromGitLab
, fetchpatch
, fetchpatch2
, gitUpdater
, linkFarm
, ayatana-indicator-datetime
, bash
, biometryd
, boost
, cmake
, cmake-extras
, coreutils
, dbus
, dbus-test-runner
, deviceinfo
, geonames
, glib
, glm
, gnome-desktop
, gsettings-qt
, gtk3
, hfd-service
, libevdev
, libqtdbustest
, libqtdbusmock
, libusermetrics
, libuuid
, lightdm_qt
, lomiri-api
, lomiri-app-launch
, lomiri-download-manager
, lomiri-indicator-network
, lomiri-ui-toolkit
, lomiri-settings-components
, lomiri-system-settings-unwrapped
, lomiri-schemas
, lomiri-notifications
, lomiri-thumbnailer
, maliit-keyboard
, mir
, nixos-icons
, pam
, pkg-config
, properties-cpp
, protobuf
, python3
, qmenumodel
, qtbase
, qtdeclarative
, qtmir
, qtmultimedia
, qtsvg
, telephony-service
, wrapGAppsHook
, wrapQtAppsHook
, xwayland
}:
stdenv.mkDerivation (finalAttrs: {
pname = "lomiri";
version = "0.2.1";
src = fetchFromGitLab {
owner = "ubports";
repo = "development/core/lomiri";
rev = finalAttrs.version;
hash = "sha256-V5Lt870eHgmJ63OF8bTiNFLAFrxdgNihkd7aodSO3v8=";
};
patches = [
# Remove when version > 0.2.1
(fetchpatch {
name = "0001-lomiri-Fix-overwriting-INCLUDE_DIRECTORIES-variable.patch";
url = "https://gitlab.com/ubports/development/core/lomiri/-/commit/53190bf2f03c8a35491efb26222b8d67ff6caa34.patch";
hash = "sha256-sbwqOqpTf5OlEB4NZZZTFNXyKq4rTQAxJ6U8YP/DT5s=";
})
# fetchpatch2 for renames
# Use GNUInstallDirs variables better, replace more /usr references
# Remove when https://gitlab.com/ubports/development/core/lomiri/-/merge_requests/137 merged & in release
(fetchpatch2 {
name = "0002-lomiri-Make-less-FHS-assumptions.patch";
url = "https://gitlab.com/ubports/development/core/lomiri/-/commit/817ae1d8ed927e661fbc006851163ba99c46ae13.patch";
hash = "sha256-NLvpzI2MtjKcGrgTn6PbLXSy3/Jg8KxdSvVYO9KYu9g=";
})
# Fix greeter & related settings
# These patches are seemingly not submitted upstream yet
(fetchpatch {
name = "1000-lomiri-QT_IM_MODULE-maliit.patch";
url = "https://salsa.debian.org/ubports-team/lomiri/-/raw/ebbe0f3f568bd145bb58a2e47f7112442328a0a5/debian/patches/2003_maliit-not-maliitphablet-as-im-module-namespace.patch";
hash = "sha256-5HEMl0x1S9Hb7spxPRgu8OBebmpaLa6zko2uVEYtBmY=";
})
(fetchpatch {
name = "1001-lomiri-QT_QPA_PLATFORM-wayland.patch";
url = "https://salsa.debian.org/ubports-team/lomiri/-/raw/ebbe0f3f568bd145bb58a2e47f7112442328a0a5/debian/patches/2004_qt-qpa-platform-is-wayland.patch";
hash = "sha256-4C6X2TW+yjZhqYPIcQ3GJeTKbz785i7p/DpT+vX1DSQ=";
})
(fetchpatch {
name = "1002-lomiri-Fix-Lomiri-greeter.patch";
url = "https://salsa.debian.org/ubports-team/lomiri/-/raw/ebbe0f3f568bd145bb58a2e47f7112442328a0a5/debian/patches/1008_lomiri-greeter-wayland.patch";
excludes = [ "data/lomiri-greeter.desktop.in.in" ]; # conflict with GNUInstallDirs patch
hash = "sha256-XSSxf06Su8PMoqYwqevN034b/li8G/cNXjrqOXyhTRg=";
})
(fetchpatch {
name = "1003-lomiri-Hide-launcher-in-greeter-mode.patch";
url = "https://salsa.debian.org/ubports-team/lomiri/-/raw/ebbe0f3f568bd145bb58a2e47f7112442328a0a5/debian/patches/0002_qml-shell-hide-and-disallow-launcher-in-greeter-only-mode.patch";
hash = "sha256-R0aMlb7N7XACCthML4SQSd0LvbadADfdQJqrYFhmujk=";
})
(fetchpatch {
name = "1004-lomiri-Dont-reset-OSK-setting.patch";
url = "https://salsa.debian.org/ubports-team/lomiri/-/raw/ebbe0f3f568bd145bb58a2e47f7112442328a0a5/debian/patches/2005_dont-reset-alwaysShowOsk-to-system-defaults-on-login.patch";
hash = "sha256-guq/Ykcq4WcuXxNKO1eA4sJFyGSpZo0gtyFTdeK/GeE=";
})
./9901-lomiri-Disable-Wizard.patch
];
postPatch = ''
# Part of greeter fix, applies separately due to merge conflicts
substituteInPlace data/lomiri-greeter.desktop.in.in \
--replace-fail '@CMAKE_INSTALL_FULL_BINDIR@/lomiri-greeter-wrapper @CMAKE_INSTALL_FULL_BINDIR@/lomiri --mode=greeter' '@CMAKE_INSTALL_FULL_BINDIR@/lomiri --mode=greeter' \
--replace-fail 'X-LightDM-Session-Type=mir' 'X-LightDM-Session-Type=wayland'
# Need to replace prefix
substituteInPlace data/systemd-user/CMakeLists.txt \
--replace-fail 'pkg_get_variable(SYSTEMD_USERUNITDIR systemd systemduserunitdir)' 'pkg_get_variable(SYSTEMD_USERUNITDIR systemd systemduserunitdir DEFINE_VARIABLES prefix=''${CMAKE_INSTALL_PREFIX})'
# Don't embed full paths into regular desktop files (but do embed them into lightdm greeter one)
substituteInPlace data/{indicators-client,lomiri}.desktop.in.in \
--replace-fail '@CMAKE_INSTALL_FULL_BINDIR@/' ""
# Exclude tests that don't compile (Mir headers these relied on were removed in mir 2.9)
# fatal error: mirtest/mir/test/doubles/stub_surface.h: No such file or directory
substituteInPlace tests/mocks/CMakeLists.txt \
--replace-fail 'add_subdirectory(QtMir/Application)' ""
#substituteInPlace plugins/AccountsService/CMakeLists.txt \
# --replace-fail 'CMAKE_INSTALL_DATADIR' 'CMAKE_INSTALL_FULL_DATADIR'
# NixOS-ify
# Use Nix flake instead of Canonical's Ubuntu logo
rm qml/Launcher/graphics/home.svg
ln -s ${nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake-white.svg qml/Launcher/graphics/home.svg
# Look up default wallpaper in current system
substituteInPlace plugins/Utils/constants.cpp \
--replace-fail '/usr/share/backgrounds' '/run/current-system/sw/share/wallpapers'
'' + lib.optionalString finalAttrs.finalPackage.doCheck ''
patchShebangs tests/whitespace/check_whitespace.py
'';
strictDeps = true;
nativeBuildInputs = [
cmake
glib # populates GSETTINGS_SCHEMAS_PATH
pkg-config
wrapGAppsHook # XDG_DATA_DIRS wrapper flags for schemas
wrapQtAppsHook
];
buildInputs = [
ayatana-indicator-datetime
bash
boost
cmake-extras
dbus
dbus-test-runner
deviceinfo
geonames
glib
glm
gnome-desktop
gsettings-qt
gtk3
libevdev
libusermetrics
libuuid
lightdm_qt
lomiri-api
lomiri-app-launch
lomiri-download-manager
lomiri-indicator-network
lomiri-schemas
lomiri-system-settings-unwrapped
lomiri-ui-toolkit
maliit-keyboard
mir
pam
properties-cpp
protobuf
qmenumodel
qtbase
qtdeclarative
qtmir
qtsvg
# QML import path
biometryd
hfd-service
lomiri-notifications
lomiri-settings-components
lomiri-thumbnailer
qtmultimedia
telephony-service
];
nativeCheckInputs = [
(python3.withPackages (ps: with ps; [
python-dbusmock
]))
];
checkInputs = [
libqtdbustest
libqtdbusmock
];
# Need its flags
dontWrapGApps = true;
# Manually calling, to avoid double & unnecessary wrapping
dontWrapQtApps = true;
cmakeFlags = [
(lib.cmakeBool "NO_TESTS" (!finalAttrs.finalPackage.doCheck))
];
postInstall = ''
install -Dm755 ../data/lomiri-greeter-wrapper $out/bin/lomiri-greeter-wrapper
'';
doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
preCheck = ''
export QT_PLUGIN_PATH=${lib.getBin qtbase}/${qtbase.qtPluginPrefix}
export XDG_DATA_DIRS=${libqtdbusmock}/share
'';
preFixup = ''
qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
postFixup = ''
wrapQtApp $out/bin/lomiri
wrapQtApp $out/bin/indicators-client
wrapQtApp $out/bin/lomiri-mock-indicator-service
wrapProgram $out/bin/lomiri-greeter-wrapper \
--prefix PATH : ${lib.makeBinPath [ coreutils dbus deviceinfo glib ]} \
--set LOMIRI_BINARY "$out/bin/lomiri"
wrapProgram $out/libexec/Xwayland.lomiri \
--prefix PATH : ${lib.makeBinPath [ deviceinfo ]}
wrapProgram $out/libexec/lomiri-systemd-wrapper \
--prefix PATH : ${lib.makeBinPath [ dbus ]}
'';
passthru = {
updateScript = gitUpdater { };
greeter = linkFarm "lomiri-greeter" [{
path = "${finalAttrs.finalPackage}/share/lightdm/greeters/lomiri-greeter.desktop";
name = "lomiri-greeter.desktop";
}];
};
meta = with lib; {
description = "Shell of the Lomiri Operating environment";
longDescription = ''
Shell of the Lomiri Operating environment optimized for touch based human-machine interaction, but also supporting
convergence (i.e. switching between tablet/phone and desktop mode).
Lomiri is the user shell driving Ubuntu Touch based mobile devices.
'';
homepage = "https://lomiri.com/";
changelog = "https://gitlab.com/ubports/development/core/lomiri/-/blob/${finalAttrs.version}/ChangeLog";
license = licenses.gpl3Only;
mainProgram = "lomiri";
maintainers = teams.lomiri.members;
platforms = platforms.linux;
};
})

View File

@ -8,6 +8,7 @@ let
inherit (self) callPackage;
in {
#### Core Apps
lomiri = callPackage ./applications/lomiri { };
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 { };
lomiri-system-settings = callPackage ./applications/lomiri-system-settings/wrapper.nix { };