Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 0 additions & 37 deletions projects-old/Libervia/default.nix

This file was deleted.

35 changes: 0 additions & 35 deletions projects-old/Libervia/example.org.cnf

This file was deleted.

4 changes: 0 additions & 4 deletions projects-old/Libervia/examples/base.nix

This file was deleted.

23 changes: 0 additions & 23 deletions projects-old/Libervia/module.nix

This file was deleted.

53 changes: 53 additions & 0 deletions projects/Libervia/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
{
lib,
pkgs,
sources,
}@args:
{
metadata = {
summary = ''
Libervia is a multi-frontend, multi-purpose XMPP client. It doesn't just
focus on instant messaging, and uses the open standard to provide features
such as blogging/microblogging, calendar events, file sharing, end-to-end
encryption, etc.
'';
subgrants = [
"Libervia"
];
};
nixos = {
modules.programs.libervia = {
links = {
config = {
text = "libervia.conf file reference";
url = "https://libervia.org/__b/doc/backend/configuration.html";
};
backend = {
text = "Documentation on how to manually start the backend";
url = "https://libervia.org/__b/doc/backend/installation.html#usage";
};
cli = {
text = "Command-line interface documentation";
url = "https://libervia.org/__b/doc/backend/libervia-cli/index.html";
};
kivy = {
text = "Kivy desktop client documentation";
url = "https://libervia.org/documentation/desktop-mobile";
};
};
module = ./module.nix;
examples = {
backend = {
description = "Enables manually starting Libervia's backend and the use of its CLI and TUI clients.";
module = ./examples/backend.nix;
tests.backend = import ./tests/backend.nix args;
};
desktop = {
description = "Enables the use of the Kivy desktop client for Libervia.";
module = ./examples/desktop.nix;
tests.desktop = import ./tests/desktop.nix args;
};
};
};
};
}
4 changes: 4 additions & 0 deletions projects/Libervia/examples/backend.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{ ... }:
{
programs.libervia.backend.enable = true;
}
4 changes: 4 additions & 0 deletions projects/Libervia/examples/desktop.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{ ... }:
{
programs.libervia.kivy.enable = true;
}
36 changes: 36 additions & 0 deletions projects/Libervia/module.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.programs.libervia;
in
{
options.programs.libervia = {
backend.enable = lib.mkEnableOption "Libervia backend and CLI/TUI clients";
kivy.enable = lib.mkEnableOption "Libervia Kivy desktop client";
};

config = lib.mkMerge [
# Backend
(lib.mkIf cfg.backend.enable {
environment.systemPackages = with pkgs; [
libervia-backend
];

services.dbus.packages = with pkgs; [ libervia-backend ];
})

# Kivy client
(lib.mkIf cfg.kivy.enable {
# Also needs the backend
programs.libervia.backend.enable = true;

environment.systemPackages = with pkgs; [
libervia-desktop-kivy
];
})
];
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@ let
};
in
{
name = "libervia";
name = "Libervia-backend";

passthru.xmppMessage = xmppMessage;

nodes = {
server =
Expand Down Expand Up @@ -94,8 +96,7 @@ in
imports = [
sources.modules.ngipkgs
sources.modules.programs.libervia
sources.examples.Libervia.base
# can't test Libervia/unfree, enabling unfree derivations breaks nixosTests eval
sources.examples.Libervia.backend
];

# Need an actual logged-in user to test with
Expand Down Expand Up @@ -166,8 +167,6 @@ in
# Small script to register our test user in prosody
systemPackages = [
setup-initial-libervia-user
pkgs.firefox
pkgs.xdotool
];
};
};
Expand Down Expand Up @@ -243,28 +242,5 @@ in
machine.send_chars("libervia-cli message mam | tee -a ~/frontend.log\n")
machine.wait_for_console_text("${xmppUser}> ${xmppMessage}") # first log, us sending the message to ourself
machine.wait_for_console_text("${xmppUser}> ${xmppMessage}") # second log, us receicing the message from ourself

next_workspace()

with subtest("libervia-desktop-kivy works"):
# Start it
spawn_terminal()
machine.send_chars("libervia-desktop-kivy 2>&1 | tee -a ~/desktop.log\n")
machine.wait_for_text("Select a profile")
machine.send_key("alt-f10")

# Log in as alice
machine.succeed("sudo -su alice xdotool mousemove 518 163 click 1")
machine.sleep(2)
machine.succeed("sudo -su alice xdotool mousemove 509 721 click 1")
machine.wait_for_text("chat")

# Enter chat
machine.succeed("sudo -su alice xdotool mousemove 493 199 click 1")
machine.wait_for_text("Your contacts")

# Open conversation with ourselves
machine.succeed("sudo -su alice xdotool mousemove 80 148 click 1")
machine.wait_for_text("${xmppMessage}")
'';
}
68 changes: 68 additions & 0 deletions projects/Libervia/tests/desktop.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
{
sources,
lib,
pkgs,
...
}@args:

# We need all the same setup as the libervia-backend test, so just extend that one with desktop things
let
backendTest = import ./backend.nix args;
in
backendTest
// {
name = "Libervia-desktop-kivy";

nodes.server =
{
config,
lib,
pkgs,
...
}@args2:
let
backendTestConfig = backendTest.nodes.server args2;
in
backendTestConfig
// {
imports = backendTestConfig.imports ++ [
sources.examples.Libervia.desktop
];

environment = backendTestConfig.environment // {
systemPackages =
backendTestConfig.environment.systemPackages
++ (with pkgs; [
xdotool # Control the mouse
]);
};
};

testScript =
{ nodes, ... }@args3:
(backendTest.testScript args3)
+ ''
next_workspace()

with subtest("libervia-desktop-kivy works"):
# Start it
spawn_terminal()
machine.send_chars("libervia-desktop-kivy 2>&1 | tee -a ~/desktop.log\n")
machine.wait_for_text("Select a profile")
machine.send_key("alt-f10")

# Log in as alice
machine.succeed("sudo -su alice xdotool mousemove 518 163 click 1")
machine.sleep(2)
machine.succeed("sudo -su alice xdotool mousemove 509 721 click 1")
machine.wait_for_text("chat")

# Enter chat
machine.succeed("sudo -su alice xdotool mousemove 493 199 click 1")
machine.wait_for_text("Your contacts")

# Open conversation with ourselves
machine.succeed("sudo -su alice xdotool mousemove 80 148 click 1")
machine.wait_for_text("${backendTest.passthru.xmppMessage}")
'';
}