diff --git a/projects-old/Libervia/default.nix b/projects-old/Libervia/default.nix deleted file mode 100644 index 84cf14f93..000000000 --- a/projects-old/Libervia/default.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ - pkgs, - lib, - sources, -}@args: -{ - packages = { - inherit (pkgs) - doubleratchet - libervia-backend - libervia-desktop-kivy - libervia-media - libervia-templates - libxeddsa - oldmemo - omemo - sat-tmp - twomemo - urwid-satext - x3dh - xeddsa - ; - inherit (pkgs.python3Packages) - kivy-garden-modernmenu - ; - }; - nixos = { - modules.programs.libervia = ./module.nix; - tests.libervia = import ./test.nix args; - examples = { - base = { - description = "Enables the use of Libervia's CLI, TUI and GUI (kivy) clients."; - path = ./examples/base.nix; - }; - }; - }; -} diff --git a/projects-old/Libervia/example.org.cnf b/projects-old/Libervia/example.org.cnf deleted file mode 100644 index 31d8bda9c..000000000 --- a/projects-old/Libervia/example.org.cnf +++ /dev/null @@ -1,35 +0,0 @@ -[subject_alternative_name] -DNS.0 = upload.example.org -DNS.1 = conference.example.org -DNS.2 = example.org -otherName.0 = 1.3.6.1.5.5.7.8.7;IA5STRING:_xmpp-server.upload.example.org -otherName.1 = 1.3.6.1.5.5.7.8.5;FORMAT:UTF8,UTF8:upload.example.org -otherName.2 = 1.3.6.1.5.5.7.8.7;IA5STRING:_xmpp-server.conference.example.org -otherName.3 = 1.3.6.1.5.5.7.8.5;FORMAT:UTF8,UTF8:conference.example.org -otherName.4 = 1.3.6.1.5.5.7.8.7;IA5STRING:_xmpp-client.example.org -otherName.5 = 1.3.6.1.5.5.7.8.7;IA5STRING:_xmpp-server.example.org -otherName.6 = 1.3.6.1.5.5.7.8.5;FORMAT:UTF8,UTF8:example.org - -[selfsigned] -basicConstraints = CA:TRUE -subjectAltName = @subject_alternative_name - -[req] -prompt = no -req_extensions = certrequest -x509_extensions = selfsigned -distinguished_name = distinguished_name - -[certrequest] -extendedKeyUsage = serverAuth,clientAuth -subjectAltName = @subject_alternative_name -basicConstraints = CA:FALSE -keyUsage = digitalSignature,keyEncipherment - -[distinguished_name] -countryName = GB -localityName = The Internet -organizationName = Your Organisation -organizationalUnitName = XMPP Department -commonName = example.org -emailAddress = xmpp@example.org diff --git a/projects-old/Libervia/examples/base.nix b/projects-old/Libervia/examples/base.nix deleted file mode 100644 index 3eb969d40..000000000 --- a/projects-old/Libervia/examples/base.nix +++ /dev/null @@ -1,4 +0,0 @@ -{ ... }: -{ - programs.libervia.enable = true; -} diff --git a/projects-old/Libervia/module.nix b/projects-old/Libervia/module.nix deleted file mode 100644 index 32e72edc3..000000000 --- a/projects-old/Libervia/module.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -let - cfg = config.programs.libervia; -in -{ - options.programs.libervia = { - enable = lib.mkEnableOption "Libervia"; - }; - - config = lib.mkIf cfg.enable { - environment.systemPackages = with pkgs; [ - libervia-backend - libervia-desktop-kivy - ]; - - services.dbus.packages = with pkgs; [ libervia-backend ]; - }; -} diff --git a/projects/Libervia/default.nix b/projects/Libervia/default.nix new file mode 100644 index 000000000..5aa9fe272 --- /dev/null +++ b/projects/Libervia/default.nix @@ -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; + }; + }; + }; + }; +} diff --git a/projects/Libervia/examples/backend.nix b/projects/Libervia/examples/backend.nix new file mode 100644 index 000000000..967d7615d --- /dev/null +++ b/projects/Libervia/examples/backend.nix @@ -0,0 +1,4 @@ +{ ... }: +{ + programs.libervia.backend.enable = true; +} diff --git a/projects/Libervia/examples/desktop.nix b/projects/Libervia/examples/desktop.nix new file mode 100644 index 000000000..3f2c5c189 --- /dev/null +++ b/projects/Libervia/examples/desktop.nix @@ -0,0 +1,4 @@ +{ ... }: +{ + programs.libervia.kivy.enable = true; +} diff --git a/projects/Libervia/module.nix b/projects/Libervia/module.nix new file mode 100644 index 000000000..806b7f3f0 --- /dev/null +++ b/projects/Libervia/module.nix @@ -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 + ]; + }) + ]; +} diff --git a/projects-old/Libervia/test.nix b/projects/Libervia/tests/backend.nix similarity index 88% rename from projects-old/Libervia/test.nix rename to projects/Libervia/tests/backend.nix index 1d1e1e507..4667b3238 100644 --- a/projects-old/Libervia/test.nix +++ b/projects/Libervia/tests/backend.nix @@ -21,7 +21,9 @@ let }; in { - name = "libervia"; + name = "Libervia-backend"; + + passthru.xmppMessage = xmppMessage; nodes = { server = @@ -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 @@ -166,8 +167,6 @@ in # Small script to register our test user in prosody systemPackages = [ setup-initial-libervia-user - pkgs.firefox - pkgs.xdotool ]; }; }; @@ -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}") ''; } diff --git a/projects/Libervia/tests/desktop.nix b/projects/Libervia/tests/desktop.nix new file mode 100644 index 000000000..cfd7a9e20 --- /dev/null +++ b/projects/Libervia/tests/desktop.nix @@ -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}") + ''; +}