From 1bfda37cbabc45d7735353f02d13542889885337 Mon Sep 17 00:00:00 2001 From: kurogeek Date: Thu, 24 Jul 2025 11:38:39 +0700 Subject: [PATCH] vikunja clanService --- modules/clan/vikunja/default.nix | 22 +++++++++++++ modules/clan/vikunja/flake-module.nix | 18 +++++++++++ modules/clan/vikunja/tests/vm/default.nix | 39 +++++++++++++++++++++++ 3 files changed, 79 insertions(+) create mode 100644 modules/clan/vikunja/default.nix create mode 100644 modules/clan/vikunja/flake-module.nix create mode 100644 modules/clan/vikunja/tests/vm/default.nix diff --git a/modules/clan/vikunja/default.nix b/modules/clan/vikunja/default.nix new file mode 100644 index 0000000..8ea396e --- /dev/null +++ b/modules/clan/vikunja/default.nix @@ -0,0 +1,22 @@ +{ ... }: +{ + _class = "clan.service"; + manifest.name = "vikunja"; + manifest.description = "The to-do app to organize your life."; + manifest.categories = [ "System" ]; + + roles.default = { + perInstance.nixosModule = + { + lib, + ... + }: + { + services.vikunja = { + enable = lib.mkDefault true; + frontendScheme = lib.mkDefault "http"; + frontendHostname = lib.mkDefault "localhost"; + }; + }; + }; +} diff --git a/modules/clan/vikunja/flake-module.nix b/modules/clan/vikunja/flake-module.nix new file mode 100644 index 0000000..3ed1b3e --- /dev/null +++ b/modules/clan/vikunja/flake-module.nix @@ -0,0 +1,18 @@ +{ lib, ... }: +let + module = lib.modules.importApply ./default.nix { }; +in +{ + clan.modules = { + vikunja = module; + }; + perSystem = + { ... }: + { + clan.nixosTests.vikunja = { + imports = [ ./tests/vm/default.nix ]; + + clan.modules."@clan/vikunja" = module; + }; + }; +} diff --git a/modules/clan/vikunja/tests/vm/default.nix b/modules/clan/vikunja/tests/vm/default.nix new file mode 100644 index 0000000..830d71b --- /dev/null +++ b/modules/clan/vikunja/tests/vm/default.nix @@ -0,0 +1,39 @@ +{ + pkgs, + ... +}: +{ + name = "service-vikunja"; + + clan = { + directory = ./.; + inventory = { + machines.server = { }; + + instances = { + vikunja-test = { + module.name = "@clan/vikunja"; + module.input = "self"; + roles.default.machines."server".settings = { }; + }; + }; + }; + }; + + nodes = { + server = { + services.vikunja = { + }; + }; + }; + + testScript = '' + start_all() + + server.wait_for_unit("vikunja") + + # Check that garage is running + server.succeed("systemctl status vikunja") + + ''; +}