Merge pull request #334952 from OPNA2608/fix/ayatana-lomiri-indicator-marking
nixos/ayatana-indicators: Split ayatana and lomiri indicators
This commit is contained in:
@@ -20,11 +20,12 @@ in
|
||||
example = lib.literalExpression "with pkgs; [ ayatana-indicator-messages ]";
|
||||
description = ''
|
||||
List of packages containing Ayatana Indicator services
|
||||
that should be brought up by the SystemD "ayatana-indicators" user target.
|
||||
that should be brought up by a SystemD "ayatana-indicators" user target.
|
||||
|
||||
Packages specified here must have passthru.ayatana-indicators set correctly.
|
||||
|
||||
If, how, and where these indicators are displayed will depend on your DE.
|
||||
Which target they will be brought up by depends on the packages' passthru.ayatana-indicators.
|
||||
'';
|
||||
};
|
||||
};
|
||||
@@ -39,16 +40,36 @@ in
|
||||
# libayatana-common's ayatana-indicators.target with explicit Wants & Before to bring up requested indicator services
|
||||
systemd.user.targets =
|
||||
let
|
||||
indicatorServices = lib.lists.flatten (
|
||||
map (pkg: (map (ind: "${ind}.service") pkg.passthru.ayatana-indicators)) cfg.packages
|
||||
);
|
||||
namesToServices = map (indicator: "${indicator}.service");
|
||||
indicatorServices =
|
||||
target:
|
||||
lib.lists.flatten (
|
||||
map (
|
||||
pkg:
|
||||
if lib.isList pkg.passthru.ayatana-indicators then
|
||||
# Old format, add to every target
|
||||
(lib.warn "${pkg.name} is using the old passthru.ayatana-indicators format, please update it!" (
|
||||
namesToServices pkg.passthru.ayatana-indicators
|
||||
))
|
||||
else
|
||||
# New format, filter by target being mentioned
|
||||
(namesToServices (
|
||||
builtins.filter (
|
||||
service:
|
||||
builtins.any (
|
||||
targetPrefix: "${targetPrefix}-indicators" == target
|
||||
) pkg.passthru.ayatana-indicators.${service}
|
||||
) (builtins.attrNames pkg.passthru.ayatana-indicators)
|
||||
))
|
||||
) cfg.packages
|
||||
);
|
||||
in
|
||||
lib.attrsets.mapAttrs
|
||||
(_: desc: {
|
||||
(name: desc: {
|
||||
description = "Target representing the lifecycle of the ${desc}. Each indicator should be bound to it in its individual service file";
|
||||
partOf = [ "graphical-session.target" ];
|
||||
wants = indicatorServices;
|
||||
before = indicatorServices;
|
||||
wants = indicatorServices name;
|
||||
before = indicatorServices name;
|
||||
})
|
||||
{
|
||||
ayatana-indicators = "Ayatana Indicators";
|
||||
|
||||
@@ -141,7 +141,7 @@ in {
|
||||
authelia = handleTest ./authelia.nix {};
|
||||
avahi = handleTest ./avahi.nix {};
|
||||
avahi-with-resolved = handleTest ./avahi.nix { networkd = true; };
|
||||
ayatana-indicators = handleTest ./ayatana-indicators.nix {};
|
||||
ayatana-indicators = runTest ./ayatana-indicators.nix;
|
||||
babeld = handleTest ./babeld.nix {};
|
||||
bazarr = handleTest ./bazarr.nix {};
|
||||
bcachefs = handleTestOn ["x86_64-linux" "aarch64-linux"] ./bcachefs.nix {};
|
||||
|
||||
@@ -1,116 +1,148 @@
|
||||
import ./make-test-python.nix ({ pkgs, lib, ... }: let
|
||||
{ pkgs, lib, ... }:
|
||||
let
|
||||
user = "alice";
|
||||
in {
|
||||
in
|
||||
{
|
||||
name = "ayatana-indicators";
|
||||
|
||||
meta = {
|
||||
maintainers = lib.teams.lomiri.members;
|
||||
};
|
||||
|
||||
nodes.machine = { config, ... }: {
|
||||
imports = [
|
||||
./common/auto.nix
|
||||
./common/user-account.nix
|
||||
];
|
||||
nodes.machine =
|
||||
{ config, ... }:
|
||||
{
|
||||
imports = [
|
||||
./common/auto.nix
|
||||
./common/user-account.nix
|
||||
];
|
||||
|
||||
test-support.displayManager.auto = {
|
||||
enable = true;
|
||||
inherit user;
|
||||
test-support.displayManager.auto = {
|
||||
enable = true;
|
||||
inherit user;
|
||||
};
|
||||
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
desktopManager.mate.enable = true;
|
||||
};
|
||||
services.displayManager.defaultSession = lib.mkForce "mate";
|
||||
|
||||
services.ayatana-indicators = {
|
||||
enable = true;
|
||||
packages =
|
||||
with pkgs;
|
||||
[
|
||||
ayatana-indicator-datetime
|
||||
ayatana-indicator-display
|
||||
ayatana-indicator-messages
|
||||
ayatana-indicator-power
|
||||
ayatana-indicator-session
|
||||
ayatana-indicator-sound
|
||||
]
|
||||
++ (with pkgs.lomiri; [
|
||||
lomiri-indicator-network
|
||||
telephony-service
|
||||
]);
|
||||
};
|
||||
|
||||
# Setup needed by some indicators
|
||||
|
||||
services.accounts-daemon.enable = true; # messages
|
||||
|
||||
hardware.pulseaudio.enable = true; # sound
|
||||
|
||||
# Lomiri-ish setup for Lomiri indicators
|
||||
# TODO move into a Lomiri module, once the package set is far enough for the DE to start
|
||||
|
||||
networking.networkmanager.enable = true; # lomiri-network-indicator
|
||||
# TODO potentially urfkill for lomiri-network-indicator?
|
||||
|
||||
services.dbus.packages = with pkgs.lomiri; [ libusermetrics ];
|
||||
|
||||
environment.systemPackages = with pkgs.lomiri; [ lomiri-schemas ];
|
||||
|
||||
services.telepathy.enable = true;
|
||||
|
||||
users.users.usermetrics = {
|
||||
group = "usermetrics";
|
||||
home = "/var/lib/usermetrics";
|
||||
createHome = true;
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
users.groups.usermetrics = { };
|
||||
};
|
||||
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
desktopManager.mate.enable = true;
|
||||
};
|
||||
services.displayManager.defaultSession = lib.mkForce "mate";
|
||||
|
||||
services.ayatana-indicators = {
|
||||
enable = true;
|
||||
packages = with pkgs; [
|
||||
ayatana-indicator-datetime
|
||||
ayatana-indicator-display
|
||||
ayatana-indicator-messages
|
||||
ayatana-indicator-power
|
||||
ayatana-indicator-session
|
||||
ayatana-indicator-sound
|
||||
] ++ (with pkgs.lomiri; [
|
||||
lomiri-indicator-network
|
||||
telephony-service
|
||||
]);
|
||||
};
|
||||
|
||||
# Setup needed by some indicators
|
||||
|
||||
services.accounts-daemon.enable = true; # messages
|
||||
|
||||
hardware.pulseaudio.enable = true; # sound
|
||||
|
||||
# Lomiri-ish setup for Lomiri indicators
|
||||
# TODO move into a Lomiri module, once the package set is far enough for the DE to start
|
||||
|
||||
networking.networkmanager.enable = true; # lomiri-network-indicator
|
||||
# TODO potentially urfkill for lomiri-network-indicator?
|
||||
|
||||
services.dbus.packages = with pkgs.lomiri; [
|
||||
libusermetrics
|
||||
];
|
||||
|
||||
environment.systemPackages = with pkgs.lomiri; [
|
||||
lomiri-schemas
|
||||
];
|
||||
|
||||
services.telepathy.enable = true;
|
||||
|
||||
users.users.usermetrics = {
|
||||
group = "usermetrics";
|
||||
home = "/var/lib/usermetrics";
|
||||
createHome = true;
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
users.groups.usermetrics = { };
|
||||
};
|
||||
|
||||
# TODO session indicator starts up in a semi-broken state, but works fine after a restart. maybe being started before graphical session is truly up & ready?
|
||||
testScript = { nodes, ... }: let
|
||||
runCommandOverServiceList = list: command:
|
||||
lib.strings.concatMapStringsSep "\n" command list;
|
||||
testScript =
|
||||
{ nodes, ... }:
|
||||
let
|
||||
runCommandOverServiceList = list: command: lib.strings.concatMapStringsSep "\n" command list;
|
||||
|
||||
runCommandOverAyatanaIndicators = runCommandOverServiceList
|
||||
(builtins.filter
|
||||
(service: !(lib.strings.hasPrefix "lomiri" service || lib.strings.hasPrefix "telephony-service" service))
|
||||
nodes.machine.systemd.user.targets."ayatana-indicators".wants);
|
||||
runCommandOverAyatanaIndicators = runCommandOverServiceList
|
||||
nodes.machine.systemd.user.targets.ayatana-indicators.wants;
|
||||
|
||||
runCommandOverAllIndicators = runCommandOverServiceList
|
||||
nodes.machine.systemd.user.targets."ayatana-indicators".wants;
|
||||
in ''
|
||||
start_all()
|
||||
machine.wait_for_x()
|
||||
runCommandOverLomiriIndicators = runCommandOverServiceList nodes.machine.systemd.user.targets.lomiri-indicators.wants;
|
||||
in
|
||||
''
|
||||
start_all()
|
||||
machine.wait_for_x()
|
||||
|
||||
# Desktop environment should reach graphical-session.target
|
||||
machine.wait_for_unit("graphical-session.target", "${user}")
|
||||
# Desktop environment should reach graphical-session.target
|
||||
machine.wait_for_unit("graphical-session.target", "${user}")
|
||||
|
||||
# MATE relies on XDG autostart to bring up the indicators.
|
||||
# Not sure *when* XDG autostart fires them up, and awaiting pgrep success seems to misbehave?
|
||||
machine.sleep(10)
|
||||
# MATE relies on XDG autostart to bring up the indicators.
|
||||
# Not sure *when* XDG autostart fires them up, and awaiting pgrep success seems to misbehave?
|
||||
machine.sleep(10)
|
||||
|
||||
# Now check if all indicators were brought up successfully, and kill them for later
|
||||
'' + (runCommandOverAyatanaIndicators (service: let serviceExec = builtins.replaceStrings [ "." ] [ "-" ] service; in ''
|
||||
machine.wait_until_succeeds("pgrep -u ${user} -f ${serviceExec}")
|
||||
machine.succeed("pkill -f ${serviceExec}")
|
||||
'')) + ''
|
||||
# Now check if all indicators were brought up successfully, and kill them for later
|
||||
''
|
||||
+ (runCommandOverAyatanaIndicators (
|
||||
service:
|
||||
let
|
||||
serviceExec = builtins.replaceStrings [ "." ] [ "-" ] service;
|
||||
in
|
||||
''
|
||||
machine.wait_until_succeeds("pgrep -u ${user} -f ${serviceExec}")
|
||||
machine.succeed("pkill -f ${serviceExec}")
|
||||
''
|
||||
))
|
||||
+ ''
|
||||
|
||||
# Ayatana target is the preferred way of starting up indicators on SystemD session, the graphical session is responsible for starting this if it supports them.
|
||||
# Mate currently doesn't do this, so start it manually for checking (https://github.com/mate-desktop/mate-indicator-applet/issues/63)
|
||||
machine.systemctl("start ayatana-indicators.target", "${user}")
|
||||
machine.wait_for_unit("ayatana-indicators.target", "${user}")
|
||||
# Ayatana target is the preferred way of starting up indicators on SystemD session, the graphical session is responsible for starting this if it supports them.
|
||||
# Mate currently doesn't do this, so start it manually for checking (https://github.com/mate-desktop/mate-indicator-applet/issues/63)
|
||||
machine.systemctl("start ayatana-indicators.target", "${user}")
|
||||
machine.wait_for_unit("ayatana-indicators.target", "${user}")
|
||||
|
||||
# Let all indicator services do their startups, potential post-launch crash & restart cycles so we can properly check for failures
|
||||
# Not sure if there's a better way of awaiting this without false-positive potential
|
||||
machine.sleep(10)
|
||||
# Let all indicator services do their startups, potential post-launch crash & restart cycles so we can properly check for failures
|
||||
# Not sure if there's a better way of awaiting this without false-positive potential
|
||||
machine.sleep(10)
|
||||
|
||||
# Now check if all indicator services were brought up successfully
|
||||
'' + runCommandOverAllIndicators (service: ''
|
||||
machine.wait_for_unit("${service}", "${user}")
|
||||
'');
|
||||
})
|
||||
# Now check if all indicator services were brought up successfully
|
||||
''
|
||||
+ runCommandOverAyatanaIndicators (service: ''
|
||||
machine.wait_for_unit("${service}", "${user}")
|
||||
'')
|
||||
+ ''
|
||||
# Stop the target
|
||||
machine.systemctl("stop ayatana-indicators.target", "${user}")
|
||||
|
||||
# Let all indicator services do their shutdowns
|
||||
# Not sure if there's a better way of awaiting this without false-positive potential
|
||||
machine.sleep(10)
|
||||
|
||||
# Lomiri uses a different target, which launches a slightly different set of indicators
|
||||
machine.systemctl("start lomiri-indicators.target", "${user}")
|
||||
machine.wait_for_unit("lomiri-indicators.target", "${user}")
|
||||
|
||||
# Let all indicator services do their startups, potential post-launch crash & restart cycles so we can properly check for failures
|
||||
# Not sure if there's a better way of awaiting this without false-positive potential
|
||||
machine.sleep(10)
|
||||
|
||||
# Now check if all indicator services were brought up successfully
|
||||
''
|
||||
+ runCommandOverLomiriIndicators (service: ''
|
||||
machine.wait_for_unit("${service}", "${user}")
|
||||
'');
|
||||
}
|
||||
|
||||
+260
-59
@@ -38,6 +38,13 @@ in
|
||||
testScript =
|
||||
{ nodes, ... }:
|
||||
''
|
||||
def wait_for_text(text):
|
||||
"""
|
||||
Wait for on-screen text, and try to optimise retry count for slow hardware.
|
||||
"""
|
||||
machine.sleep(10)
|
||||
machine.wait_for_text(text)
|
||||
|
||||
start_all()
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
|
||||
@@ -47,12 +54,12 @@ in
|
||||
machine.wait_until_succeeds("pgrep -u lightdm -f 'lomiri --mode=greeter'")
|
||||
|
||||
# Start page shows current time
|
||||
machine.wait_for_text(r"(AM|PM)")
|
||||
wait_for_text(r"(AM|PM)")
|
||||
machine.screenshot("lomiri_greeter_launched")
|
||||
|
||||
# Advance to login part
|
||||
machine.send_key("ret")
|
||||
machine.wait_for_text("${description}")
|
||||
wait_for_text("${description}")
|
||||
machine.screenshot("lomiri_greeter_login")
|
||||
|
||||
# Login
|
||||
@@ -62,16 +69,16 @@ in
|
||||
# Output rendering from Lomiri has started when it starts printing performance diagnostics
|
||||
machine.wait_for_console_text("Last frame took")
|
||||
# Look for datetime's clock, one of the last elements to load
|
||||
machine.wait_for_text(r"(AM|PM)")
|
||||
wait_for_text(r"(AM|PM)")
|
||||
machine.screenshot("lomiri_launched")
|
||||
'';
|
||||
}
|
||||
);
|
||||
|
||||
desktop = makeTest (
|
||||
desktop-basics = makeTest (
|
||||
{ pkgs, lib, ... }:
|
||||
{
|
||||
name = "lomiri-desktop";
|
||||
name = "lomiri-desktop-basics";
|
||||
|
||||
meta = {
|
||||
maintainers = lib.teams.lomiri.members;
|
||||
@@ -89,8 +96,6 @@ in
|
||||
|
||||
users.users.${user} = {
|
||||
inherit description password;
|
||||
# polkit agent test
|
||||
extraGroups = [ "wheel" ];
|
||||
};
|
||||
|
||||
test-support.displayManager.auto = {
|
||||
@@ -128,15 +133,7 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
variables = {
|
||||
# So we can test what content-hub is working behind the scenes
|
||||
CONTENT_HUB_LOGGING_LEVEL = "2";
|
||||
};
|
||||
|
||||
systemPackages = with pkgs; [
|
||||
# For a convenient way of kicking off content-hub peer collection
|
||||
lomiri.content-hub.examples
|
||||
|
||||
# Forcing alacritty to run as an X11 app when opened from the starter menu
|
||||
(symlinkJoin {
|
||||
name = "x11-${alacritty.name}";
|
||||
@@ -205,6 +202,230 @@ in
|
||||
testScript =
|
||||
{ nodes, ... }:
|
||||
''
|
||||
def wait_for_text(text):
|
||||
"""
|
||||
Wait for on-screen text, and try to optimise retry count for slow hardware.
|
||||
"""
|
||||
machine.sleep(10)
|
||||
machine.wait_for_text(text)
|
||||
|
||||
def mouse_click(xpos, ypos):
|
||||
"""
|
||||
Move the mouse to a screen location and hit left-click.
|
||||
"""
|
||||
|
||||
# Need to reset to top-left, --absolute doesn't work?
|
||||
machine.execute("ydotool mousemove -- -10000 -10000")
|
||||
machine.sleep(2)
|
||||
|
||||
# Move
|
||||
machine.execute(f"ydotool mousemove -- {xpos} {ypos}")
|
||||
machine.sleep(2)
|
||||
|
||||
# Click (C0 - left button: down & up)
|
||||
machine.execute("ydotool click 0xC0")
|
||||
machine.sleep(2)
|
||||
|
||||
def open_starter():
|
||||
"""
|
||||
Open the starter, and ensure it's opened.
|
||||
"""
|
||||
|
||||
# Using the keybind has a chance of instantly closing the menu again? Just click the button
|
||||
mouse_click(20, 30)
|
||||
|
||||
start_all()
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
|
||||
# The session should start, and not be stuck in i.e. a crash loop
|
||||
with subtest("lomiri starts"):
|
||||
machine.wait_until_succeeds("pgrep -u ${user} -f 'lomiri --mode=full-shell'")
|
||||
# Output rendering from Lomiri has started when it starts printing performance diagnostics
|
||||
machine.wait_for_console_text("Last frame took")
|
||||
# Look for datetime's clock, one of the last elements to load
|
||||
wait_for_text(r"(AM|PM)")
|
||||
machine.screenshot("lomiri_launched")
|
||||
|
||||
# Working terminal keybind is good
|
||||
with subtest("terminal keybind works"):
|
||||
machine.send_key("ctrl-alt-t")
|
||||
wait_for_text(r"(${user}|machine)")
|
||||
machine.screenshot("terminal_opens")
|
||||
|
||||
# lomiri-terminal-app has a separate VM test to test its basic functionality
|
||||
|
||||
machine.send_key("alt-f4")
|
||||
|
||||
# We want the ability to launch applications
|
||||
with subtest("starter menu works"):
|
||||
open_starter()
|
||||
machine.screenshot("starter_opens")
|
||||
|
||||
# Just try the terminal again, we know that it should work
|
||||
machine.send_chars("Terminal\n")
|
||||
wait_for_text(r"(${user}|machine)")
|
||||
machine.send_key("alt-f4")
|
||||
|
||||
# We want support for X11 apps
|
||||
with subtest("xwayland support works"):
|
||||
open_starter()
|
||||
machine.send_chars("Alacritty\n")
|
||||
wait_for_text(r"(${user}|machine)")
|
||||
machine.screenshot("alacritty_opens")
|
||||
machine.send_key("alt-f4")
|
||||
|
||||
# Morph is how we go online
|
||||
with subtest("morph browser works"):
|
||||
open_starter()
|
||||
machine.send_chars("Morph\n")
|
||||
wait_for_text(r"(Bookmarks|address|site|visited any)")
|
||||
machine.screenshot("morph_open")
|
||||
|
||||
# morph-browser has a separate VM test to test its basic functionalities
|
||||
|
||||
machine.send_key("alt-f4")
|
||||
|
||||
# LSS provides DE settings
|
||||
with subtest("system settings open"):
|
||||
open_starter()
|
||||
machine.send_chars("System Settings\n")
|
||||
wait_for_text("Rotation Lock")
|
||||
machine.screenshot("settings_open")
|
||||
|
||||
# lomiri-system-settings has a separate VM test to test its basic functionalities
|
||||
|
||||
machine.send_key("alt-f4")
|
||||
'';
|
||||
}
|
||||
);
|
||||
|
||||
desktop-appinteractions = makeTest (
|
||||
{ pkgs, lib, ... }:
|
||||
{
|
||||
name = "lomiri-desktop-appinteractions";
|
||||
|
||||
meta = {
|
||||
maintainers = lib.teams.lomiri.members;
|
||||
};
|
||||
|
||||
nodes.machine =
|
||||
{ config, ... }:
|
||||
{
|
||||
imports = [
|
||||
./common/auto.nix
|
||||
./common/user-account.nix
|
||||
];
|
||||
|
||||
virtualisation.memorySize = 2047;
|
||||
|
||||
users.users.${user} = {
|
||||
inherit description password;
|
||||
# polkit agent test
|
||||
extraGroups = [ "wheel" ];
|
||||
};
|
||||
|
||||
test-support.displayManager.auto = {
|
||||
enable = true;
|
||||
inherit user;
|
||||
};
|
||||
|
||||
# To control mouse via scripting
|
||||
programs.ydotool.enable = true;
|
||||
|
||||
services.desktopManager.lomiri.enable = lib.mkForce true;
|
||||
services.displayManager.defaultSession = lib.mkForce "lomiri";
|
||||
|
||||
# Help with OCR
|
||||
fonts.packages = [ pkgs.inconsolata ];
|
||||
|
||||
environment = {
|
||||
# Help with OCR
|
||||
etc."xdg/alacritty/alacritty.yml".text = lib.generators.toYAML { } {
|
||||
font = rec {
|
||||
normal.family = "Inconsolata";
|
||||
bold.family = normal.family;
|
||||
italic.family = normal.family;
|
||||
bold_italic.family = normal.family;
|
||||
size = 16;
|
||||
};
|
||||
colors = rec {
|
||||
primary = {
|
||||
foreground = "0x000000";
|
||||
background = "0xffffff";
|
||||
};
|
||||
normal = {
|
||||
green = primary.foreground;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
variables = {
|
||||
# So we can test what content-hub is working behind the scenes
|
||||
CONTENT_HUB_LOGGING_LEVEL = "2";
|
||||
};
|
||||
|
||||
systemPackages = with pkgs; [
|
||||
# For a convenient way of kicking off content-hub peer collection
|
||||
lomiri.content-hub.examples
|
||||
];
|
||||
};
|
||||
|
||||
# Help with OCR
|
||||
systemd.tmpfiles.settings =
|
||||
let
|
||||
white = "255, 255, 255";
|
||||
black = "0, 0, 0";
|
||||
colorSection = color: {
|
||||
Color = color;
|
||||
Bold = true;
|
||||
Transparency = false;
|
||||
};
|
||||
terminalColors = pkgs.writeText "customized.colorscheme" (
|
||||
lib.generators.toINI { } {
|
||||
Background = colorSection white;
|
||||
Foreground = colorSection black;
|
||||
Color2 = colorSection black;
|
||||
Color2Intense = colorSection black;
|
||||
}
|
||||
);
|
||||
terminalConfig = pkgs.writeText "terminal.ubports.conf" (
|
||||
lib.generators.toINI { } {
|
||||
General = {
|
||||
colorScheme = "customized";
|
||||
fontSize = "16";
|
||||
fontStyle = "Inconsolata";
|
||||
};
|
||||
}
|
||||
);
|
||||
confBase = "${config.users.users.${user}.home}/.config";
|
||||
userDirArgs = {
|
||||
mode = "0700";
|
||||
user = user;
|
||||
group = "users";
|
||||
};
|
||||
in
|
||||
{
|
||||
"10-lomiri-test-setup" = {
|
||||
"${confBase}".d = userDirArgs;
|
||||
"${confBase}/terminal.ubports".d = userDirArgs;
|
||||
"${confBase}/terminal.ubports/customized.colorscheme".L.argument = "${terminalColors}";
|
||||
"${confBase}/terminal.ubports/terminal.ubports.conf".L.argument = "${terminalConfig}";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
enableOCR = true;
|
||||
|
||||
testScript =
|
||||
{ nodes, ... }:
|
||||
''
|
||||
def wait_for_text(text):
|
||||
"""
|
||||
Wait for on-screen text, and try to optimise retry count for slow hardware.
|
||||
"""
|
||||
machine.sleep(10)
|
||||
machine.wait_for_text(text)
|
||||
|
||||
def toggle_maximise():
|
||||
"""
|
||||
Maximise the current window.
|
||||
@@ -252,20 +473,20 @@ in
|
||||
# Output rendering from Lomiri has started when it starts printing performance diagnostics
|
||||
machine.wait_for_console_text("Last frame took")
|
||||
# Look for datetime's clock, one of the last elements to load
|
||||
machine.wait_for_text(r"(AM|PM)")
|
||||
wait_for_text(r"(AM|PM)")
|
||||
machine.screenshot("lomiri_launched")
|
||||
|
||||
# Working terminal keybind is good
|
||||
with subtest("terminal keybind works"):
|
||||
machine.send_key("ctrl-alt-t")
|
||||
machine.wait_for_text(r"(${user}|machine)")
|
||||
wait_for_text(r"(${user}|machine)")
|
||||
machine.screenshot("terminal_opens")
|
||||
|
||||
# lomiri-terminal-app has a separate VM test to test its basic functionality
|
||||
|
||||
# for the LSS content-hub test to work reliably, we need to kick off peer collecting
|
||||
machine.send_chars("content-hub-test-importer\n")
|
||||
machine.wait_for_text(r"(/build/source|hub.cpp|handler.cpp|void|virtual|const)") # awaiting log messages from content-hub
|
||||
wait_for_text(r"(/build/source|hub.cpp|handler.cpp|void|virtual|const)") # awaiting log messages from content-hub
|
||||
machine.send_key("ctrl-c")
|
||||
|
||||
# Doing this here, since we need an in-session shell & separately starting a terminal again wastes time
|
||||
@@ -282,40 +503,11 @@ in
|
||||
|
||||
machine.send_key("alt-f4")
|
||||
|
||||
# We want the ability to launch applications
|
||||
with subtest("starter menu works"):
|
||||
open_starter()
|
||||
machine.screenshot("starter_opens")
|
||||
|
||||
# Just try the terminal again, we know that it should work
|
||||
machine.send_chars("Terminal\n")
|
||||
machine.wait_for_text(r"(${user}|machine)")
|
||||
machine.send_key("alt-f4")
|
||||
|
||||
# We want support for X11 apps
|
||||
with subtest("xwayland support works"):
|
||||
open_starter()
|
||||
machine.send_chars("Alacritty\n")
|
||||
machine.wait_for_text(r"(${user}|machine)")
|
||||
machine.screenshot("alacritty_opens")
|
||||
machine.send_key("alt-f4")
|
||||
|
||||
# Morph is how we go online
|
||||
with subtest("morph browser works"):
|
||||
open_starter()
|
||||
machine.send_chars("Morph\n")
|
||||
machine.wait_for_text(r"(Bookmarks|address|site|visited any)")
|
||||
machine.screenshot("morph_open")
|
||||
|
||||
# morph-browser has a separate VM test, there isn't anything new we could test here
|
||||
|
||||
machine.send_key("alt-f4")
|
||||
|
||||
# LSS provides DE settings
|
||||
with subtest("system settings open"):
|
||||
open_starter()
|
||||
machine.send_chars("System Settings\n")
|
||||
machine.wait_for_text("Rotation Lock")
|
||||
wait_for_text("Rotation Lock")
|
||||
machine.screenshot("settings_open")
|
||||
|
||||
# lomiri-system-settings has a separate VM test, only test Lomiri-specific content-hub functionalities here
|
||||
@@ -331,7 +523,7 @@ in
|
||||
machine.send_key("tab")
|
||||
machine.send_key("tab")
|
||||
machine.send_key("ret")
|
||||
machine.wait_for_text("Background image")
|
||||
wait_for_text("Background image")
|
||||
|
||||
# Try to load custom background
|
||||
machine.send_key("shift-tab")
|
||||
@@ -343,14 +535,14 @@ in
|
||||
machine.send_key("ret")
|
||||
|
||||
# Peers should be loaded
|
||||
machine.wait_for_text("Morph") # or Gallery, but Morph is already packaged
|
||||
wait_for_text("Morph") # or Gallery, but Morph is already packaged
|
||||
machine.screenshot("settings_content-hub_peers")
|
||||
|
||||
# Select Morph as content source
|
||||
mouse_click(370, 100)
|
||||
|
||||
# Expect Morph to be brought into the foreground, with its Downloads page open
|
||||
machine.wait_for_text("No downloads")
|
||||
wait_for_text("No downloads")
|
||||
|
||||
# If content-hub encounters a problem, it may have crashed the original application issuing the request.
|
||||
# Check that it's still alive
|
||||
@@ -403,6 +595,8 @@ in
|
||||
|
||||
# Help with OCR
|
||||
fonts.packages = [ pkgs.inconsolata ];
|
||||
|
||||
environment.systemPackages = with pkgs; [ qt5.qttools ];
|
||||
};
|
||||
|
||||
enableOCR = true;
|
||||
@@ -410,6 +604,13 @@ in
|
||||
testScript =
|
||||
{ nodes, ... }:
|
||||
''
|
||||
def wait_for_text(text):
|
||||
"""
|
||||
Wait for on-screen text, and try to optimise retry count for slow hardware.
|
||||
"""
|
||||
machine.sleep(10)
|
||||
machine.wait_for_text(text)
|
||||
|
||||
def mouse_click(xpos, ypos):
|
||||
"""
|
||||
Move the mouse to a screen location and hit left-click.
|
||||
@@ -436,14 +637,14 @@ in
|
||||
# Output rendering from Lomiri has started when it starts printing performance diagnostics
|
||||
machine.wait_for_console_text("Last frame took")
|
||||
# Look for datetime's clock, one of the last elements to load
|
||||
machine.wait_for_text(r"(AM|PM)")
|
||||
wait_for_text(r"(AM|PM)")
|
||||
machine.screenshot("lomiri_launched")
|
||||
|
||||
# The ayatana indicators are an important part of the experience, and they hold the only graphical way of exiting the session.
|
||||
# There's a test app we could use that also displays their contents, but it's abit inconsistent.
|
||||
with subtest("ayatana indicators work"):
|
||||
mouse_click(735, 0) # the cog in the top-right, for the session indicator
|
||||
machine.wait_for_text(r"(Notifications|Rotation|Battery|Sound|Time|Date|System)")
|
||||
wait_for_text(r"(Notifications|Rotation|Battery|Sound|Time|Date|System)")
|
||||
machine.screenshot("indicators_open")
|
||||
|
||||
# Indicator order within the menus *should* be fixed based on per-indicator order setting
|
||||
@@ -457,32 +658,32 @@ in
|
||||
|
||||
with subtest("ayatana indicator display works"):
|
||||
# We start on this, don't go right
|
||||
machine.wait_for_text("Lock")
|
||||
wait_for_text("Lock")
|
||||
machine.screenshot("indicators_display")
|
||||
|
||||
with subtest("lomiri indicator network works"):
|
||||
machine.send_key("right")
|
||||
machine.wait_for_text(r"(Flight|Wi-Fi)")
|
||||
wait_for_text(r"(Flight|Wi-Fi)")
|
||||
machine.screenshot("indicators_network")
|
||||
|
||||
with subtest("ayatana indicator sound works"):
|
||||
machine.send_key("right")
|
||||
machine.wait_for_text(r"(Silent|Volume)")
|
||||
wait_for_text(r"(Silent|Volume)")
|
||||
machine.screenshot("indicators_sound")
|
||||
|
||||
with subtest("ayatana indicator power works"):
|
||||
machine.send_key("right")
|
||||
machine.wait_for_text(r"(Charge|Battery settings)")
|
||||
wait_for_text(r"(Charge|Battery settings)")
|
||||
machine.screenshot("indicators_power")
|
||||
|
||||
with subtest("ayatana indicator datetime works"):
|
||||
machine.send_key("right")
|
||||
machine.wait_for_text("Time and Date Settings")
|
||||
wait_for_text("Time and Date Settings")
|
||||
machine.screenshot("indicators_timedate")
|
||||
|
||||
with subtest("ayatana indicator session works"):
|
||||
machine.send_key("right")
|
||||
machine.wait_for_text("Log Out")
|
||||
wait_for_text("Log Out")
|
||||
machine.screenshot("indicators_session")
|
||||
|
||||
# We should be able to log out and return to the greeter
|
||||
|
||||
@@ -1,29 +1,30 @@
|
||||
{ stdenv
|
||||
, lib
|
||||
, fetchFromGitHub
|
||||
, gitUpdater
|
||||
, nixosTests
|
||||
, ayatana-indicator-messages
|
||||
, cmake
|
||||
, dbus
|
||||
, dbus-test-runner
|
||||
, evolution-data-server
|
||||
, glib
|
||||
, gst_all_1
|
||||
, gtest
|
||||
, intltool
|
||||
, libaccounts-glib
|
||||
, libayatana-common
|
||||
, libical
|
||||
, libnotify
|
||||
, libuuid
|
||||
, lomiri
|
||||
, pkg-config
|
||||
, properties-cpp
|
||||
, python3
|
||||
, systemd
|
||||
, tzdata
|
||||
, wrapGAppsHook3
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
gitUpdater,
|
||||
nixosTests,
|
||||
ayatana-indicator-messages,
|
||||
cmake,
|
||||
dbus,
|
||||
dbus-test-runner,
|
||||
evolution-data-server,
|
||||
glib,
|
||||
gst_all_1,
|
||||
gtest,
|
||||
intltool,
|
||||
libaccounts-glib,
|
||||
libayatana-common,
|
||||
libical,
|
||||
libnotify,
|
||||
libuuid,
|
||||
lomiri,
|
||||
pkg-config,
|
||||
properties-cpp,
|
||||
python3,
|
||||
systemd,
|
||||
tzdata,
|
||||
wrapGAppsHook3,
|
||||
}:
|
||||
|
||||
let
|
||||
@@ -36,7 +37,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
src = fetchFromGitHub {
|
||||
owner = "AyatanaIndicators";
|
||||
repo = "ayatana-indicator-datetime";
|
||||
rev = finalAttrs.version;
|
||||
rev = "refs/tags/${finalAttrs.version}";
|
||||
hash = "sha256-lY49v2uZ7BawQoN/hmN6pbetHlSGjMHbS6S8Wl1bDmQ=";
|
||||
};
|
||||
|
||||
@@ -61,34 +62,35 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
wrapGAppsHook3
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
ayatana-indicator-messages
|
||||
evolution-data-server
|
||||
glib
|
||||
libaccounts-glib
|
||||
libayatana-common
|
||||
libical
|
||||
libnotify
|
||||
libuuid
|
||||
properties-cpp
|
||||
systemd
|
||||
] ++ (with gst_all_1; [
|
||||
gstreamer
|
||||
gst-plugins-base
|
||||
gst-plugins-good
|
||||
]) ++ (with lomiri; [
|
||||
cmake-extras
|
||||
lomiri-schemas
|
||||
lomiri-sounds
|
||||
lomiri-url-dispatcher
|
||||
]);
|
||||
buildInputs =
|
||||
[
|
||||
ayatana-indicator-messages
|
||||
evolution-data-server
|
||||
glib
|
||||
libaccounts-glib
|
||||
libayatana-common
|
||||
libical
|
||||
libnotify
|
||||
libuuid
|
||||
properties-cpp
|
||||
systemd
|
||||
]
|
||||
++ (with gst_all_1; [
|
||||
gstreamer
|
||||
gst-plugins-base
|
||||
gst-plugins-good
|
||||
])
|
||||
++ (with lomiri; [
|
||||
cmake-extras
|
||||
lomiri-schemas
|
||||
lomiri-sounds
|
||||
lomiri-url-dispatcher
|
||||
]);
|
||||
|
||||
nativeCheckInputs = [
|
||||
dbus
|
||||
dbus-test-runner
|
||||
(python3.withPackages (ps: with ps; [
|
||||
python-dbusmock
|
||||
]))
|
||||
(python3.withPackages (ps: with ps; [ python-dbusmock ]))
|
||||
tzdata
|
||||
];
|
||||
|
||||
@@ -109,13 +111,15 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
enableParallelChecking = false;
|
||||
|
||||
preCheck = ''
|
||||
export XDG_DATA_DIRS=${lib.strings.concatStringsSep ":" [
|
||||
# org.ayatana.common schema
|
||||
(glib.passthru.getSchemaDataDirPath libayatana-common)
|
||||
export XDG_DATA_DIRS=${
|
||||
lib.strings.concatStringsSep ":" [
|
||||
# org.ayatana.common schema
|
||||
(glib.passthru.getSchemaDataDirPath libayatana-common)
|
||||
|
||||
# loading EDS engines to handle ICS-loading
|
||||
edsDataDir
|
||||
]}
|
||||
# loading EDS engines to handle ICS-loading
|
||||
edsDataDir
|
||||
]
|
||||
}
|
||||
'';
|
||||
|
||||
# schema is already added automatically by wrapper, EDS needs to be added explicitly
|
||||
@@ -126,16 +130,19 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
ayatana-indicators = [
|
||||
"ayatana-indicator-datetime"
|
||||
];
|
||||
ayatana-indicators = {
|
||||
ayatana-indicator-datetime = [
|
||||
"ayatana"
|
||||
"lomiri"
|
||||
];
|
||||
};
|
||||
tests = {
|
||||
inherit (nixosTests) ayatana-indicators;
|
||||
};
|
||||
updateScript = gitUpdater { };
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
description = "Ayatana Indicator providing clock and calendar";
|
||||
longDescription = ''
|
||||
This Ayatana Indicator provides a combined calendar, clock, alarm and
|
||||
@@ -143,8 +150,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
'';
|
||||
homepage = "https://github.com/AyatanaIndicators/ayatana-indicator-datetime";
|
||||
changelog = "https://github.com/AyatanaIndicators/ayatana-indicator-datetime/blob/${finalAttrs.version}/ChangeLog";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [ OPNA2608 ];
|
||||
platforms = platforms.linux;
|
||||
license = lib.licenses.gpl3Only;
|
||||
maintainers = with lib.maintainers; [ OPNA2608 ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
})
|
||||
|
||||
@@ -1,30 +1,31 @@
|
||||
{ stdenv
|
||||
, lib
|
||||
, gitUpdater
|
||||
, fetchFromGitHub
|
||||
, nixosTests
|
||||
, accountsservice
|
||||
, cmake
|
||||
, cppcheck
|
||||
, dbus
|
||||
, geoclue2
|
||||
, glib
|
||||
, gsettings-desktop-schemas
|
||||
, gtest
|
||||
, intltool
|
||||
, libayatana-common
|
||||
, libgudev
|
||||
, libqtdbusmock
|
||||
, libqtdbustest
|
||||
, libsForQt5
|
||||
, lomiri
|
||||
, mate
|
||||
, pkg-config
|
||||
, properties-cpp
|
||||
, python3
|
||||
, systemd
|
||||
, wrapGAppsHook3
|
||||
, xsct
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
gitUpdater,
|
||||
fetchFromGitHub,
|
||||
nixosTests,
|
||||
accountsservice,
|
||||
cmake,
|
||||
cppcheck,
|
||||
dbus,
|
||||
geoclue2,
|
||||
glib,
|
||||
gsettings-desktop-schemas,
|
||||
gtest,
|
||||
intltool,
|
||||
libayatana-common,
|
||||
libgudev,
|
||||
libqtdbusmock,
|
||||
libqtdbustest,
|
||||
libsForQt5,
|
||||
lomiri,
|
||||
mate,
|
||||
pkg-config,
|
||||
properties-cpp,
|
||||
python3,
|
||||
systemd,
|
||||
wrapGAppsHook3,
|
||||
xsct,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
@@ -60,29 +61,30 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
];
|
||||
|
||||
# TODO Can we get around requiring every desktop's schemas just to avoid segfaulting on some systems?
|
||||
buildInputs = [
|
||||
accountsservice
|
||||
geoclue2
|
||||
gsettings-desktop-schemas # gnome schemas
|
||||
glib
|
||||
libayatana-common
|
||||
libgudev
|
||||
libsForQt5.qtbase
|
||||
systemd
|
||||
] ++ (with lomiri; [
|
||||
cmake-extras
|
||||
lomiri-schemas # lomiri schema
|
||||
]) ++ (with mate; [
|
||||
mate.marco # marco schema
|
||||
mate.mate-settings-daemon # mate mouse schema
|
||||
]);
|
||||
buildInputs =
|
||||
[
|
||||
accountsservice
|
||||
geoclue2
|
||||
gsettings-desktop-schemas # gnome schemas
|
||||
glib
|
||||
libayatana-common
|
||||
libgudev
|
||||
libsForQt5.qtbase
|
||||
systemd
|
||||
]
|
||||
++ (with lomiri; [
|
||||
cmake-extras
|
||||
lomiri-schemas # lomiri schema
|
||||
])
|
||||
++ (with mate; [
|
||||
mate.marco # marco schema
|
||||
mate.mate-settings-daemon # mate mouse schema
|
||||
]);
|
||||
|
||||
nativeCheckInputs = [
|
||||
cppcheck
|
||||
dbus
|
||||
(python3.withPackages (ps: with ps; [
|
||||
python-dbusmock
|
||||
]))
|
||||
(python3.withPackages (ps: with ps; [ python-dbusmock ]))
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
@@ -104,12 +106,17 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
|
||||
|
||||
passthru = {
|
||||
ayatana-indicators = [ "ayatana-indicator-display" ];
|
||||
ayatana-indicators = {
|
||||
ayatana-indicator-display = [
|
||||
"ayatana"
|
||||
"lomiri"
|
||||
];
|
||||
};
|
||||
tests.vm = nixosTests.ayatana-indicators;
|
||||
updateScript = gitUpdater { };
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
description = "Ayatana Indicator for Display configuration";
|
||||
longDescription = ''
|
||||
This Ayatana Indicator is designed to be placed on the right side of a
|
||||
@@ -117,8 +124,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
'';
|
||||
homepage = "https://github.com/AyatanaIndicators/ayatana-indicator-display";
|
||||
changelog = "https://github.com/AyatanaIndicators/ayatana-indicator-display/blob/${finalAttrs.version}/ChangeLog";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [ OPNA2608 ];
|
||||
platforms = platforms.linux;
|
||||
license = lib.licenses.gpl3Only;
|
||||
maintainers = with lib.maintainers; [ OPNA2608 ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
})
|
||||
|
||||
@@ -1,26 +1,27 @@
|
||||
{ stdenv
|
||||
, lib
|
||||
, fetchFromGitHub
|
||||
, gitUpdater
|
||||
, nixosTests
|
||||
, testers
|
||||
, accountsservice
|
||||
, cmake
|
||||
, dbus-test-runner
|
||||
, withDocumentation ? true
|
||||
, docbook_xsl
|
||||
, docbook_xml_dtd_45
|
||||
, glib
|
||||
, gobject-introspection
|
||||
, gtest
|
||||
, gtk-doc
|
||||
, intltool
|
||||
, lomiri
|
||||
, pkg-config
|
||||
, python3
|
||||
, systemd
|
||||
, vala
|
||||
, wrapGAppsHook3
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
gitUpdater,
|
||||
nixosTests,
|
||||
testers,
|
||||
accountsservice,
|
||||
cmake,
|
||||
dbus-test-runner,
|
||||
withDocumentation ? true,
|
||||
docbook_xsl,
|
||||
docbook_xml_dtd_45,
|
||||
glib,
|
||||
gobject-introspection,
|
||||
gtest,
|
||||
gtk-doc,
|
||||
intltool,
|
||||
lomiri,
|
||||
pkg-config,
|
||||
python3,
|
||||
systemd,
|
||||
vala,
|
||||
wrapGAppsHook3,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
@@ -30,49 +31,51 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
src = fetchFromGitHub {
|
||||
owner = "AyatanaIndicators";
|
||||
repo = "ayatana-indicator-messages";
|
||||
rev = finalAttrs.version;
|
||||
rev = "refs/tags/${finalAttrs.version}";
|
||||
hash = "sha256-D1181eD2mAVXEa7RLXXC4b2tVGrxbh0WWgtbC1anHH0=";
|
||||
};
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
"dev"
|
||||
] ++ lib.optionals withDocumentation [
|
||||
"devdoc"
|
||||
];
|
||||
] ++ lib.optionals withDocumentation [ "devdoc" ];
|
||||
|
||||
postPatch = ''
|
||||
# Uses pkg_get_variable, cannot substitute prefix with that
|
||||
substituteInPlace data/CMakeLists.txt \
|
||||
--replace "\''${SYSTEMD_USER_DIR}" "$out/lib/systemd/user"
|
||||
postPatch =
|
||||
''
|
||||
# Uses pkg_get_variable, cannot substitute prefix with that
|
||||
substituteInPlace data/CMakeLists.txt \
|
||||
--replace "\''${SYSTEMD_USER_DIR}" "$out/lib/systemd/user"
|
||||
|
||||
# Bad concatenation
|
||||
substituteInPlace libmessaging-menu/messaging-menu.pc.in \
|
||||
--replace "\''${exec_prefix}/@CMAKE_INSTALL_LIBDIR@" '@CMAKE_INSTALL_FULL_LIBDIR@' \
|
||||
--replace "\''${prefix}/@CMAKE_INSTALL_INCLUDEDIR@" '@CMAKE_INSTALL_FULL_INCLUDEDIR@'
|
||||
# Bad concatenation
|
||||
substituteInPlace libmessaging-menu/messaging-menu.pc.in \
|
||||
--replace "\''${exec_prefix}/@CMAKE_INSTALL_LIBDIR@" '@CMAKE_INSTALL_FULL_LIBDIR@' \
|
||||
--replace "\''${prefix}/@CMAKE_INSTALL_INCLUDEDIR@" '@CMAKE_INSTALL_FULL_INCLUDEDIR@'
|
||||
|
||||
# Fix tests with gobject-introspection 1.80 not installing GLib introspection data
|
||||
substituteInPlace tests/CMakeLists.txt \
|
||||
--replace-fail 'GI_TYPELIB_PATH=\"' 'GI_TYPELIB_PATH=\"$GI_TYPELIB_PATH$\{GI_TYPELIB_PATH\:+\:\}'
|
||||
'' + lib.optionalString (!withDocumentation) ''
|
||||
sed -i CMakeLists.txt \
|
||||
'/add_subdirectory(doc)/d'
|
||||
'';
|
||||
# Fix tests with gobject-introspection 1.80 not installing GLib introspection data
|
||||
substituteInPlace tests/CMakeLists.txt \
|
||||
--replace-fail 'GI_TYPELIB_PATH=\"' 'GI_TYPELIB_PATH=\"$GI_TYPELIB_PATH$\{GI_TYPELIB_PATH\:+\:\}'
|
||||
''
|
||||
+ lib.optionalString (!withDocumentation) ''
|
||||
sed -i CMakeLists.txt \
|
||||
'/add_subdirectory(doc)/d'
|
||||
'';
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
glib # For glib-compile-schemas
|
||||
intltool
|
||||
pkg-config
|
||||
vala
|
||||
wrapGAppsHook3
|
||||
] ++ lib.optionals withDocumentation [
|
||||
docbook_xsl
|
||||
docbook_xml_dtd_45
|
||||
gtk-doc
|
||||
];
|
||||
nativeBuildInputs =
|
||||
[
|
||||
cmake
|
||||
glib # For glib-compile-schemas
|
||||
intltool
|
||||
pkg-config
|
||||
vala
|
||||
wrapGAppsHook3
|
||||
]
|
||||
++ lib.optionals withDocumentation [
|
||||
docbook_xsl
|
||||
docbook_xml_dtd_45
|
||||
gtk-doc
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
accountsservice
|
||||
@@ -83,10 +86,12 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
];
|
||||
|
||||
nativeCheckInputs = [
|
||||
(python3.withPackages (ps: with ps; [
|
||||
pygobject3
|
||||
python-dbusmock
|
||||
]))
|
||||
(python3.withPackages (
|
||||
ps: with ps; [
|
||||
pygobject3
|
||||
python-dbusmock
|
||||
]
|
||||
))
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
@@ -133,9 +138,12 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
ayatana-indicators = [
|
||||
"ayatana-indicator-messages"
|
||||
];
|
||||
ayatana-indicators = {
|
||||
ayatana-indicator-messages = [
|
||||
"ayatana"
|
||||
"lomiri"
|
||||
];
|
||||
};
|
||||
tests = {
|
||||
pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
|
||||
vm = nixosTests.ayatana-indicators;
|
||||
@@ -143,18 +151,16 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
updateScript = gitUpdater { };
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
description = "Ayatana Indicator Messages Applet";
|
||||
longDescription = ''
|
||||
The -messages Ayatana System Indicator is the messages menu indicator for Unity7, MATE and Lomiri (optionally for
|
||||
others, e.g. XFCE, LXDE).
|
||||
'';
|
||||
homepage = "https://github.com/AyatanaIndicators/ayatana-indicator-messages";
|
||||
license = licenses.gpl3Only;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ OPNA2608 ];
|
||||
pkgConfigModules = [
|
||||
"messaging-menu"
|
||||
];
|
||||
license = lib.licenses.gpl3Only;
|
||||
platforms = lib.platforms.linux;
|
||||
maintainers = with lib.maintainers; [ OPNA2608 ];
|
||||
pkgConfigModules = [ "messaging-menu" ];
|
||||
};
|
||||
})
|
||||
|
||||
@@ -1,22 +1,23 @@
|
||||
{ stdenv
|
||||
, lib
|
||||
, gitUpdater
|
||||
, fetchFromGitHub
|
||||
, nixosTests
|
||||
, cmake
|
||||
, dbus
|
||||
, dbus-test-runner
|
||||
, glib
|
||||
, gtest
|
||||
, intltool
|
||||
, libayatana-common
|
||||
, libnotify
|
||||
, librda
|
||||
, lomiri
|
||||
, pkg-config
|
||||
, python3
|
||||
, systemd
|
||||
, wrapGAppsHook3
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
gitUpdater,
|
||||
fetchFromGitHub,
|
||||
nixosTests,
|
||||
cmake,
|
||||
dbus,
|
||||
dbus-test-runner,
|
||||
glib,
|
||||
gtest,
|
||||
intltool,
|
||||
libayatana-common,
|
||||
libnotify,
|
||||
librda,
|
||||
lomiri,
|
||||
pkg-config,
|
||||
python3,
|
||||
systemd,
|
||||
wrapGAppsHook3,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
@@ -50,24 +51,24 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
wrapGAppsHook3
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
glib
|
||||
libayatana-common
|
||||
libnotify
|
||||
librda
|
||||
systemd
|
||||
] ++ (with lomiri; [
|
||||
cmake-extras
|
||||
deviceinfo
|
||||
lomiri-schemas
|
||||
lomiri-sounds
|
||||
]);
|
||||
buildInputs =
|
||||
[
|
||||
glib
|
||||
libayatana-common
|
||||
libnotify
|
||||
librda
|
||||
systemd
|
||||
]
|
||||
++ (with lomiri; [
|
||||
cmake-extras
|
||||
deviceinfo
|
||||
lomiri-schemas
|
||||
lomiri-sounds
|
||||
]);
|
||||
|
||||
nativeCheckInputs = [
|
||||
dbus
|
||||
(python3.withPackages (ps: with ps; [
|
||||
python-dbusmock
|
||||
]))
|
||||
(python3.withPackages (ps: with ps; [ python-dbusmock ]))
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
@@ -87,12 +88,17 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
|
||||
|
||||
passthru = {
|
||||
ayatana-indicators = [ "ayatana-indicator-power" ];
|
||||
ayatana-indicators = {
|
||||
ayatana-indicator-power = [
|
||||
"ayatana"
|
||||
"lomiri"
|
||||
];
|
||||
};
|
||||
tests.vm = nixosTests.ayatana-indicators;
|
||||
updateScript = gitUpdater { };
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
description = "Ayatana Indicator showing power state";
|
||||
longDescription = ''
|
||||
This Ayatana Indicator displays current power management information and
|
||||
@@ -100,8 +106,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
'';
|
||||
homepage = "https://github.com/AyatanaIndicators/ayatana-indicator-power";
|
||||
changelog = "https://github.com/AyatanaIndicators/ayatana-indicator-power/blob/${finalAttrs.version}/ChangeLog";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [ OPNA2608 ];
|
||||
platforms = platforms.linux;
|
||||
license = lib.licenses.gpl3Only;
|
||||
maintainers = with lib.maintainers; [ OPNA2608 ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
})
|
||||
|
||||
@@ -1,22 +1,23 @@
|
||||
{ stdenv
|
||||
, lib
|
||||
, fetchFromGitHub
|
||||
, gitUpdater
|
||||
, nixosTests
|
||||
, cmake
|
||||
, dbus
|
||||
, glib
|
||||
, gnome
|
||||
, gsettings-desktop-schemas
|
||||
, gtest
|
||||
, intltool
|
||||
, libayatana-common
|
||||
, librda
|
||||
, lomiri
|
||||
, mate
|
||||
, pkg-config
|
||||
, systemd
|
||||
, wrapGAppsHook3
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
gitUpdater,
|
||||
nixosTests,
|
||||
cmake,
|
||||
dbus,
|
||||
glib,
|
||||
gnome,
|
||||
gsettings-desktop-schemas,
|
||||
gtest,
|
||||
intltool,
|
||||
libayatana-common,
|
||||
librda,
|
||||
lomiri,
|
||||
mate,
|
||||
pkg-config,
|
||||
systemd,
|
||||
wrapGAppsHook3,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
@@ -26,7 +27,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
src = fetchFromGitHub {
|
||||
owner = "AyatanaIndicators";
|
||||
repo = "ayatana-indicator-session";
|
||||
rev = finalAttrs.version;
|
||||
rev = "refs/tags/${finalAttrs.version}";
|
||||
hash = "sha256-p4nu7ZgnEjnnxNqyZIg//YcssnQcCY7GFDbpGIu1dz0=";
|
||||
};
|
||||
|
||||
@@ -61,13 +62,9 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
mate.mate-settings-daemon
|
||||
];
|
||||
|
||||
nativeCheckInputs = [
|
||||
dbus
|
||||
];
|
||||
nativeCheckInputs = [ dbus ];
|
||||
|
||||
checkInputs = [
|
||||
gtest
|
||||
];
|
||||
checkInputs = [ gtest ];
|
||||
|
||||
cmakeFlags = [
|
||||
(lib.cmakeBool "ENABLE_TESTS" finalAttrs.finalPackage.doCheck)
|
||||
@@ -81,12 +78,17 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
enableParallelChecking = false;
|
||||
|
||||
passthru = {
|
||||
ayatana-indicators = [ "ayatana-indicator-session" ];
|
||||
ayatana-indicators = {
|
||||
ayatana-indicator-session = [
|
||||
"ayatana"
|
||||
"lomiri"
|
||||
];
|
||||
};
|
||||
tests.vm = nixosTests.ayatana-indicators;
|
||||
updateScript = gitUpdater { };
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
description = "Ayatana Indicator showing session management, status and user switching";
|
||||
longDescription = ''
|
||||
This Ayatana Indicator is designed to be placed on the right side of a
|
||||
@@ -98,8 +100,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
'';
|
||||
homepage = "https://github.com/AyatanaIndicators/ayatana-indicator-session";
|
||||
changelog = "https://github.com/AyatanaIndicators/ayatana-indicator-session/blob/${finalAttrs.version}/ChangeLog";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [ OPNA2608 ];
|
||||
platforms = platforms.linux;
|
||||
license = lib.licenses.gpl3Only;
|
||||
maintainers = with lib.maintainers; [ OPNA2608 ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
})
|
||||
|
||||
@@ -1,30 +1,31 @@
|
||||
{ stdenv
|
||||
, lib
|
||||
, gitUpdater
|
||||
, fetchFromGitHub
|
||||
, nixosTests
|
||||
, accountsservice
|
||||
, cmake
|
||||
, dbus
|
||||
, dbus-test-runner
|
||||
, glib
|
||||
, gobject-introspection
|
||||
, gtest
|
||||
, intltool
|
||||
, libayatana-common
|
||||
, libgee
|
||||
, libnotify
|
||||
, libpulseaudio
|
||||
, libqtdbusmock
|
||||
, libqtdbustest
|
||||
, libsForQt5
|
||||
, libxml2
|
||||
, lomiri
|
||||
, pkg-config
|
||||
, python3
|
||||
, systemd
|
||||
, vala
|
||||
, wrapGAppsHook3
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
gitUpdater,
|
||||
fetchFromGitHub,
|
||||
nixosTests,
|
||||
accountsservice,
|
||||
cmake,
|
||||
dbus,
|
||||
dbus-test-runner,
|
||||
glib,
|
||||
gobject-introspection,
|
||||
gtest,
|
||||
intltool,
|
||||
libayatana-common,
|
||||
libgee,
|
||||
libnotify,
|
||||
libpulseaudio,
|
||||
libqtdbusmock,
|
||||
libqtdbustest,
|
||||
libsForQt5,
|
||||
libxml2,
|
||||
lomiri,
|
||||
pkg-config,
|
||||
python3,
|
||||
systemd,
|
||||
vala,
|
||||
wrapGAppsHook3,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
@@ -61,27 +62,27 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
wrapGAppsHook3
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
accountsservice
|
||||
glib
|
||||
gobject-introspection
|
||||
libayatana-common
|
||||
libgee
|
||||
libnotify
|
||||
libpulseaudio
|
||||
libxml2
|
||||
systemd
|
||||
] ++ (with lomiri; [
|
||||
cmake-extras
|
||||
lomiri-api
|
||||
lomiri-schemas
|
||||
]);
|
||||
buildInputs =
|
||||
[
|
||||
accountsservice
|
||||
glib
|
||||
gobject-introspection
|
||||
libayatana-common
|
||||
libgee
|
||||
libnotify
|
||||
libpulseaudio
|
||||
libxml2
|
||||
systemd
|
||||
]
|
||||
++ (with lomiri; [
|
||||
cmake-extras
|
||||
lomiri-api
|
||||
lomiri-schemas
|
||||
]);
|
||||
|
||||
nativeCheckInputs = [
|
||||
dbus
|
||||
(python3.withPackages (ps: with ps; [
|
||||
python-dbusmock
|
||||
]))
|
||||
(python3.withPackages (ps: with ps; [ python-dbusmock ]))
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
@@ -105,12 +106,17 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
|
||||
|
||||
passthru = {
|
||||
ayatana-indicators = [ "ayatana-indicator-sound" ];
|
||||
ayatana-indicators = {
|
||||
ayatana-indicator-sound = [
|
||||
"ayatana"
|
||||
"lomiri"
|
||||
];
|
||||
};
|
||||
tests.vm = nixosTests.ayatana-indicators;
|
||||
updateScript = gitUpdater { };
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
description = "Ayatana Indicator for managing system sound";
|
||||
longDescription = ''
|
||||
Ayatana Indicator Sound that provides easy control of the PulseAudio
|
||||
@@ -118,8 +124,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
'';
|
||||
homepage = "https://github.com/AyatanaIndicators/ayatana-indicator-sound";
|
||||
changelog = "https://github.com/AyatanaIndicators/ayatana-indicator-sound/blob/${finalAttrs.version}/ChangeLog";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [ OPNA2608 ];
|
||||
platforms = platforms.linux;
|
||||
license = lib.licenses.gpl3Only;
|
||||
maintainers = with lib.maintainers; [ OPNA2608 ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
})
|
||||
|
||||
@@ -263,7 +263,12 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
passthru = {
|
||||
tests = {
|
||||
inherit (nixosTests.lomiri) greeter desktop desktop-ayatana-indicators;
|
||||
inherit (nixosTests.lomiri)
|
||||
greeter
|
||||
desktop-basics
|
||||
desktop-appinteractions
|
||||
desktop-ayatana-indicators
|
||||
;
|
||||
};
|
||||
updateScript = gitUpdater { };
|
||||
greeter = linkFarm "lomiri-greeter" [
|
||||
|
||||
@@ -1,32 +1,34 @@
|
||||
{ stdenv
|
||||
, lib
|
||||
, fetchFromGitLab
|
||||
, gitUpdater
|
||||
, nixosTests
|
||||
, testers
|
||||
, cmake
|
||||
, cmake-extras
|
||||
, coreutils
|
||||
, dbus
|
||||
, doxygen
|
||||
, gettext
|
||||
, glib
|
||||
, gmenuharness
|
||||
, gtest
|
||||
, intltool
|
||||
, libsecret
|
||||
, libqofono
|
||||
, libqtdbusmock
|
||||
, libqtdbustest
|
||||
, lomiri-api
|
||||
, lomiri-url-dispatcher
|
||||
, networkmanager
|
||||
, ofono
|
||||
, pkg-config
|
||||
, python3
|
||||
, qtdeclarative
|
||||
, qtbase
|
||||
, validatePkgConfig
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
fetchFromGitLab,
|
||||
fetchpatch,
|
||||
gitUpdater,
|
||||
nixosTests,
|
||||
testers,
|
||||
cmake,
|
||||
cmake-extras,
|
||||
coreutils,
|
||||
dbus,
|
||||
doxygen,
|
||||
gettext,
|
||||
glib,
|
||||
gmenuharness,
|
||||
gtest,
|
||||
intltool,
|
||||
libsecret,
|
||||
libqofono,
|
||||
libqtdbusmock,
|
||||
libqtdbustest,
|
||||
lomiri-api,
|
||||
lomiri-url-dispatcher,
|
||||
networkmanager,
|
||||
ofono,
|
||||
pkg-config,
|
||||
python3,
|
||||
qtdeclarative,
|
||||
qtbase,
|
||||
validatePkgConfig,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
@@ -46,6 +48,16 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
"doc"
|
||||
];
|
||||
|
||||
patches = [
|
||||
# Move to new lomiri-indicators target
|
||||
# Remove when version > 1.0.2
|
||||
(fetchpatch {
|
||||
name = "0001-lomiri-indicator-network-lomiri-indicators-target.patch";
|
||||
url = "https://gitlab.com/ubports/development/core/lomiri-indicator-network/-/commit/b1e1f7da4b298964eba3caea37b1dace7a6182e9.patch";
|
||||
hash = "sha256-pZKpEn2OJtB1pG/U+6IjtPGiOchRDhdbBHEZbTW7Lx0=";
|
||||
})
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
# Override original prefixes
|
||||
substituteInPlace data/CMakeLists.txt \
|
||||
@@ -78,11 +90,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
qtbase
|
||||
];
|
||||
|
||||
nativeCheckInputs = [
|
||||
(python3.withPackages (ps: with ps; [
|
||||
python-dbusmock
|
||||
]))
|
||||
];
|
||||
nativeCheckInputs = [ (python3.withPackages (ps: with ps; [ python-dbusmock ])) ];
|
||||
|
||||
checkInputs = [
|
||||
gmenuharness
|
||||
@@ -109,9 +117,9 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
ayatana-indicators = [
|
||||
"lomiri-indicator-network"
|
||||
];
|
||||
ayatana-indicators = {
|
||||
lomiri-indicator-network = [ "lomiri" ];
|
||||
};
|
||||
tests = {
|
||||
pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
|
||||
vm = nixosTests.ayatana-indicators;
|
||||
@@ -119,15 +127,13 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
updateScript = gitUpdater { };
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
description = "Ayatana indiator exporting the network settings menu through D-Bus";
|
||||
homepage = "https://gitlab.com/ubports/development/core/lomiri-indicator-network";
|
||||
changelog = "https://gitlab.com/ubports/development/core/lomiri-indicator-network/-/blob/${finalAttrs.version}/ChangeLog";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = teams.lomiri.members;
|
||||
platforms = platforms.linux;
|
||||
pkgConfigModules = [
|
||||
"lomiri-connectivity-qt1"
|
||||
];
|
||||
license = lib.licenses.gpl3Only;
|
||||
maintainers = lib.teams.lomiri.members;
|
||||
platforms = lib.platforms.linux;
|
||||
pkgConfigModules = [ "lomiri-connectivity-qt1" ];
|
||||
};
|
||||
})
|
||||
|
||||
@@ -1,42 +1,45 @@
|
||||
{ stdenv
|
||||
, lib
|
||||
, fetchFromGitLab
|
||||
, fetchpatch
|
||||
, gitUpdater
|
||||
, nixosTests
|
||||
, ayatana-indicator-messages
|
||||
, bash
|
||||
, cmake
|
||||
, dbus
|
||||
, dbus-glib
|
||||
, dbus-test-runner
|
||||
, dconf
|
||||
, gettext
|
||||
, glib
|
||||
, gnome-keyring
|
||||
, history-service
|
||||
, libnotify
|
||||
, libphonenumber
|
||||
, libpulseaudio
|
||||
, libusermetrics
|
||||
, lomiri-url-dispatcher
|
||||
, makeWrapper
|
||||
, pkg-config
|
||||
, protobuf
|
||||
, python3
|
||||
, qtbase
|
||||
, qtdeclarative
|
||||
, qtfeedback
|
||||
, qtmultimedia
|
||||
, qtpim
|
||||
, telepathy
|
||||
, telepathy-glib
|
||||
, telepathy-mission-control
|
||||
, xvfb-run
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
fetchFromGitLab,
|
||||
fetchpatch,
|
||||
gitUpdater,
|
||||
nixosTests,
|
||||
ayatana-indicator-messages,
|
||||
bash,
|
||||
cmake,
|
||||
dbus,
|
||||
dbus-glib,
|
||||
dbus-test-runner,
|
||||
dconf,
|
||||
gettext,
|
||||
glib,
|
||||
gnome-keyring,
|
||||
history-service,
|
||||
libnotify,
|
||||
libphonenumber,
|
||||
libpulseaudio,
|
||||
libusermetrics,
|
||||
lomiri-url-dispatcher,
|
||||
makeWrapper,
|
||||
pkg-config,
|
||||
protobuf,
|
||||
python3,
|
||||
qtbase,
|
||||
qtdeclarative,
|
||||
qtfeedback,
|
||||
qtmultimedia,
|
||||
qtpim,
|
||||
telepathy,
|
||||
telepathy-glib,
|
||||
telepathy-mission-control,
|
||||
xvfb-run,
|
||||
}:
|
||||
|
||||
let
|
||||
replaceDbusService = pkg: name: "--replace \"\\\${DBUS_SERVICES_DIR}/${name}\" \"${pkg}/share/dbus-1/services/${name}\"";
|
||||
replaceDbusService =
|
||||
pkg: name:
|
||||
"--replace-fail \"\\\${DBUS_SERVICES_DIR}/${name}\" \"${pkg}/share/dbus-1/services/${name}\"";
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "telephony-service";
|
||||
@@ -65,23 +68,25 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
})
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
# Queries qmake for the QML installation path, which returns a reference to Qt5's build directory
|
||||
# Patch out failure if QMake is not found, since we don't use it
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace "\''${QMAKE_EXECUTABLE} -query QT_INSTALL_QML" "echo $out/${qtbase.qtQmlPrefix}" \
|
||||
--replace-fail 'QMAKE_EXECUTABLE STREQUAL "QMAKE_EXECUTABLE-NOTFOUND"' 'FALSE'
|
||||
postPatch =
|
||||
''
|
||||
# Queries qmake for the QML installation path, which returns a reference to Qt5's build directory
|
||||
# Patch out failure if QMake is not found, since we don't use it
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace-fail "\''${QMAKE_EXECUTABLE} -query QT_INSTALL_QML" "echo $out/${qtbase.qtQmlPrefix}" \
|
||||
--replace-fail 'QMAKE_EXECUTABLE STREQUAL "QMAKE_EXECUTABLE-NOTFOUND"' 'FALSE'
|
||||
|
||||
'' + lib.optionalString finalAttrs.finalPackage.doCheck ''
|
||||
substituteInPlace tests/common/dbus-services/CMakeLists.txt \
|
||||
${replaceDbusService telepathy-mission-control "org.freedesktop.Telepathy.MissionControl5.service"} \
|
||||
${replaceDbusService telepathy-mission-control "org.freedesktop.Telepathy.AccountManager.service"} \
|
||||
${replaceDbusService dconf "ca.desrt.dconf.service"}
|
||||
''
|
||||
+ lib.optionalString finalAttrs.finalPackage.doCheck ''
|
||||
substituteInPlace tests/common/dbus-services/CMakeLists.txt \
|
||||
${replaceDbusService telepathy-mission-control "org.freedesktop.Telepathy.MissionControl5.service"} \
|
||||
${replaceDbusService telepathy-mission-control "org.freedesktop.Telepathy.AccountManager.service"} \
|
||||
${replaceDbusService dconf "ca.desrt.dconf.service"}
|
||||
|
||||
substituteInPlace cmake/modules/GenerateTest.cmake \
|
||||
--replace '/usr/lib/dconf' '${lib.getLib dconf}/libexec' \
|
||||
--replace '/usr/lib/telepathy' '${lib.getLib telepathy-mission-control}/libexec'
|
||||
'';
|
||||
substituteInPlace cmake/modules/GenerateTest.cmake \
|
||||
--replace-fail '/usr/lib/dconf' '${lib.getLib dconf}/libexec' \
|
||||
--replace-fail '/usr/lib/telepathy' '${lib.getLib telepathy-mission-control}/libexec'
|
||||
'';
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
@@ -106,10 +111,12 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
libusermetrics
|
||||
lomiri-url-dispatcher
|
||||
protobuf
|
||||
(python3.withPackages (ps: with ps; [
|
||||
dbus-python
|
||||
pygobject3
|
||||
]))
|
||||
(python3.withPackages (
|
||||
ps: with ps; [
|
||||
dbus-python
|
||||
pygobject3
|
||||
]
|
||||
))
|
||||
qtbase
|
||||
qtdeclarative
|
||||
qtfeedback
|
||||
@@ -134,22 +141,27 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
# These rely on libphonenumber reformatting inputs to certain results
|
||||
# Seem to be broken for a small amount of numbers, maybe libphonenumber version change?
|
||||
(lib.cmakeBool "SKIP_QML_TESTS" true)
|
||||
(lib.cmakeFeature "CMAKE_CTEST_ARGUMENTS" (lib.concatStringsSep ";" [
|
||||
# Exclude tests
|
||||
"-E" (lib.strings.escapeShellArg "(${lib.concatStringsSep "|" [
|
||||
# Flaky, randomly failing to launch properly & stuck until test timeout
|
||||
# https://gitlab.com/ubports/development/core/lomiri-telephony-service/-/issues/70
|
||||
"^HandlerTest"
|
||||
"^OfonoAccountEntryTest"
|
||||
"^TelepathyHelperSetupTest"
|
||||
"^AuthHandlerTest"
|
||||
"^ChatManagerTest"
|
||||
"^AccountEntryTest"
|
||||
"^AccountEntryFactoryTest"
|
||||
"^PresenceRequestTest"
|
||||
"^CallEntryTest"
|
||||
]})")
|
||||
]))
|
||||
(lib.cmakeFeature "CMAKE_CTEST_ARGUMENTS" (
|
||||
lib.concatStringsSep ";" [
|
||||
# Exclude tests
|
||||
"-E"
|
||||
(lib.strings.escapeShellArg "(${
|
||||
lib.concatStringsSep "|" [
|
||||
# Flaky, randomly failing to launch properly & stuck until test timeout
|
||||
# https://gitlab.com/ubports/development/core/lomiri-telephony-service/-/issues/70
|
||||
"^HandlerTest"
|
||||
"^OfonoAccountEntryTest"
|
||||
"^TelepathyHelperSetupTest"
|
||||
"^AuthHandlerTest"
|
||||
"^ChatManagerTest"
|
||||
"^AccountEntryTest"
|
||||
"^AccountEntryFactoryTest"
|
||||
"^PresenceRequestTest"
|
||||
"^CallEntryTest"
|
||||
]
|
||||
})")
|
||||
]
|
||||
))
|
||||
];
|
||||
|
||||
env.NIX_CFLAGS_COMPILE = toString ([
|
||||
@@ -165,7 +177,12 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
preCheck = ''
|
||||
export QT_QPA_PLATFORM=minimal
|
||||
export QT_PLUGIN_PATH=${lib.makeSearchPathOutput "bin" qtbase.qtPluginPrefix [ qtbase qtpim ]}
|
||||
export QT_PLUGIN_PATH=${
|
||||
lib.makeSearchPathOutput "bin" qtbase.qtPluginPrefix [
|
||||
qtbase
|
||||
qtpim
|
||||
]
|
||||
}
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
@@ -173,20 +190,27 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
# Still missing getprop from libhybris, we don't have it packaged (yet?)
|
||||
wrapProgram $out/bin/ofono-setup \
|
||||
--prefix PATH : ${lib.makeBinPath [ dbus dconf gettext glib telepathy-mission-control ]}
|
||||
--prefix PATH : ${
|
||||
lib.makeBinPath [
|
||||
dbus
|
||||
dconf
|
||||
gettext
|
||||
glib
|
||||
telepathy-mission-control
|
||||
]
|
||||
}
|
||||
|
||||
# These SystemD services are referenced by the installed D-Bus services, but not part of the installation. Why?
|
||||
for service in telephony-service-{approver,indicator}; do
|
||||
install -Dm644 ../debian/telephony-service."$service".user.service $out/lib/systemd/user/"$service".service
|
||||
|
||||
# ofono-setup.service would be rovided by ubuntu-touch-session, we don't plan to package it
|
||||
# ofono-setup.service would be provided by ubuntu-touch-session, we don't plan to package it
|
||||
# Doesn't make sense to provide on non-Lomiri
|
||||
substituteInPlace $out/lib/systemd/user/"$service".service \
|
||||
--replace '/usr' "$out" \
|
||||
--replace 'Requires=ofono-setup.service' "" \
|
||||
--replace 'After=ofono-setup.service' "" \
|
||||
|
||||
sed -i $out/lib/systemd/user/"$service".service \
|
||||
-e '/ofono-setup.service/d'
|
||||
--replace-fail '/usr' "$out" \
|
||||
--replace-warn 'Requires=ofono-setup.service' "" \
|
||||
--replace-warn 'After=ofono-setup.service' "" \
|
||||
--replace-warn 'WantedBy=ayatana-indicators.target' 'WantedBy=lomiri-indicators.target'
|
||||
done
|
||||
|
||||
# Parses the call & SMS indicator desktop files & tries to find its own executable in PATH
|
||||
@@ -195,19 +219,19 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
ayatana-indicators = [
|
||||
"telephony-service-indicator"
|
||||
];
|
||||
ayatana-indicators = {
|
||||
telephony-service-indicator = [ "lomiri" ];
|
||||
};
|
||||
tests.vm = nixosTests.ayatana-indicators;
|
||||
updateScript = gitUpdater { };
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
description = "Backend dispatcher service for various mobile phone related operations";
|
||||
homepage = "https://gitlab.com/ubports/development/core/telephony-service";
|
||||
changelog = "https://gitlab.com/ubports/development/core/telephony-service/-/blob/${finalAttrs.version}/ChangeLog";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = teams.lomiri.members;
|
||||
platforms = platforms.linux;
|
||||
license = lib.licenses.gpl3Only;
|
||||
maintainers = lib.teams.lomiri.members;
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user