diff --git a/checks/ergochat/default.nix b/checks/ergochat/default.nix new file mode 100644 index 000000000..b9a06359f --- /dev/null +++ b/checks/ergochat/default.nix @@ -0,0 +1,51 @@ +{ + pkgs, + nixosLib, + clan-core, + ... +}: +nixosLib.runTest ( + { ... }: + { + imports = [ + clan-core.modules.nixosVmTest.clanTest + ]; + + hostPkgs = pkgs; + name = "ergochat"; + + clan = { + directory = ./.; + modules."@clan/ergochat" = ../../clanServices/ergochat/default.nix; + inventory = { + machines.server = { }; + + instances = { + ergochat-test = { + module.name = "@clan/ergochat"; + roles.default.machines."server".settings = { }; + }; + }; + }; + }; + + nodes = { + server = { }; + }; + + testScript = '' + start_all() + + server.wait_for_unit("ergochat") + + # Check that ergochat is running + server.succeed("systemctl status ergochat") + + # Check that the data directory exists + server.succeed("test -d /var/lib/ergo") + + # Check that the server is listening on the correct ports + server.succeed("${pkgs.netcat}/bin/nc -z -v ::1 6667") + ''; + } +) diff --git a/checks/ergochat/sops/users/admin/key.json b/checks/ergochat/sops/users/admin/key.json new file mode 100644 index 000000000..e408aa96b --- /dev/null +++ b/checks/ergochat/sops/users/admin/key.json @@ -0,0 +1,4 @@ +{ + "publickey": "age1qm0p4vf9jvcnn43s6l4prk8zn6cx0ep9gzvevxecv729xz540v8qa742eg", + "type": "age" +} diff --git a/checks/flake-module.nix b/checks/flake-module.nix index 66ebb0ab3..1bca58838 100644 --- a/checks/flake-module.nix +++ b/checks/flake-module.nix @@ -41,6 +41,9 @@ in # Deltachat test deltachat = import ./deltachat nixosTestArgs; + # Ergochat test + ergochat = import ./ergochat nixosTestArgs; + # Base Tests secrets = self.clanLib.test.baseTest ./secrets nixosTestArgs; borgbackup-legacy = self.clanLib.test.baseTest ./borgbackup-legacy nixosTestArgs; diff --git a/clanModules/ergochat/README.md b/clanModules/ergochat/README.md index 403896f28..b04f61a47 100644 --- a/clanModules/ergochat/README.md +++ b/clanModules/ergochat/README.md @@ -1,3 +1,5 @@ --- description = "A modern IRC server" +categories = ["Social"] +features = [ "inventory", "deprecated" ] --- diff --git a/clanModules/ergochat/default.nix b/clanModules/ergochat/roles/default.nix similarity index 100% rename from clanModules/ergochat/default.nix rename to clanModules/ergochat/roles/default.nix diff --git a/clanServices/ergochat/default.nix b/clanServices/ergochat/default.nix new file mode 100644 index 000000000..85301acab --- /dev/null +++ b/clanServices/ergochat/default.nix @@ -0,0 +1,36 @@ +{ ... }: +{ + _class = "clan.service"; + manifest.name = "clan-core/ergochat"; + manifest.description = "A modern IRC server"; + manifest.categories = [ "Social" ]; + + roles.default = { + interface = + { ... }: + { + options = { }; + }; + + perInstance = + { settings, ... }: + { + nixosModule = + { ... }: + { + services.ergochat = { + enable = true; + + settings = { + datastore = { + autoupgrade = true; + path = "/var/lib/ergo/ircd.db"; + }; + }; + }; + + clan.core.state.ergochat.folders = [ "/var/lib/ergo" ]; + }; + }; + }; +} diff --git a/clanServices/ergochat/flake-module.nix b/clanServices/ergochat/flake-module.nix new file mode 100644 index 000000000..3d74faf19 --- /dev/null +++ b/clanServices/ergochat/flake-module.nix @@ -0,0 +1,6 @@ +{ lib, ... }: +{ + clan.modules = { + ergochat = lib.modules.importApply ./default.nix { }; + }; +} diff --git a/clanServices/flake-module.nix b/clanServices/flake-module.nix index 90b044c0f..b16e2923e 100644 --- a/clanServices/flake-module.nix +++ b/clanServices/flake-module.nix @@ -3,6 +3,7 @@ imports = [ ./admin/flake-module.nix ./deltachat/flake-module.nix + ./ergochat/flake-module.nix ./auto-upgrade/flake-module.nix ./hello-world/flake-module.nix ./wifi/flake-module.nix diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index bd5ac5b70..40b24e261 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -86,6 +86,7 @@ nav: - reference/clanServices/auto-upgrade.md - reference/clanServices/borgbackup.md - reference/clanServices/deltachat.md + - reference/clanServices/ergochat.md - reference/clanServices/hello-world.md - reference/clanServices/wifi.md - Clan Modules: