diff --git a/nixos/doc/manual/release-notes/rl-2411.section.md b/nixos/doc/manual/release-notes/rl-2411.section.md index 10392e1dea75..56c72ed3e1b8 100644 --- a/nixos/doc/manual/release-notes/rl-2411.section.md +++ b/nixos/doc/manual/release-notes/rl-2411.section.md @@ -135,7 +135,7 @@ - [QGroundControl], a ground station support and configuration manager for the PX4 and APM Flight Stacks. Available as [programs.qgroundcontrol](options.html#opt-programs.qgroundcontrol.enable). -- [Eintopf](https://eintopf.info), a community event and calendar web application. Available as [services.eintopf](options.html#opt-services.eintopf.enable). +- [Eintopf](https://eintopf.info), a community event and calendar web application. Available as `services.eintopf`. - [`pay-respects`](https://codeberg.org/iff/pay-respects), a terminal command correction program, alternative to `thefuck`, written in Rust. Available as [programs.pay-respects](options.html#opt-programs.pay-respects). diff --git a/nixos/doc/manual/release-notes/rl-2605.section.md b/nixos/doc/manual/release-notes/rl-2605.section.md index 62c71bd7c46a..5b2793941619 100644 --- a/nixos/doc/manual/release-notes/rl-2605.section.md +++ b/nixos/doc/manual/release-notes/rl-2605.section.md @@ -110,6 +110,8 @@ of pulling the upstream container image from Docker Hub. If you want the old beh - `systemd.services.stalwart` owned by `stalwart:stalwart`. The `user` and `group` are configurable via `services.stalwart.user` and `services.stalwart.group`, respectively. By default, if `stateVersion` is older than `26.05`, will fallback to legacy value of `stalwart-mail` for both `user` and `group`. - Default value for `services.stalwart.dataDir` has changed to `/var/lib/stalwart`. If `stateVersion` is older than `26.05`, will fallback to legacy value of `/var/lib/stalwart-mail`. +- `services.eintopf` has been renamed to `services.lauti` to align with upstream re-brand as a community online calendar. + - `services.oauth2-proxy.clientSecret` and `services.oauth2-proxy.cookie.secret` have been replaced with `services.oauth2-proxy.clientSecretFile` and `services.oauth2-proxy.cookie.secretFile` respectively. This was done to ensure secrets don't get made world-readable. - [`services.grafana.settings.security.secret_key`](#opt-services.grafana.settings.security.secret_key) doesn't have a diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 28b5852ee733..0c1c1ba417d2 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -1623,7 +1623,6 @@ ./services/web-apps/drasl.nix ./services/web-apps/drupal.nix ./services/web-apps/echoip.nix - ./services/web-apps/eintopf.nix ./services/web-apps/engelsystem.nix ./services/web-apps/ente.nix ./services/web-apps/fediwall.nix @@ -1678,6 +1677,7 @@ ./services/web-apps/lanraragi.nix ./services/web-apps/lasuite-docs.nix ./services/web-apps/lasuite-meet.nix + ./services/web-apps/lauti.nix ./services/web-apps/lemmy.nix ./services/web-apps/librechat.nix ./services/web-apps/librespeed.nix diff --git a/nixos/modules/services/web-apps/eintopf.nix b/nixos/modules/services/web-apps/lauti.nix similarity index 67% rename from nixos/modules/services/web-apps/eintopf.nix rename to nixos/modules/services/web-apps/lauti.nix index d9bf612042a0..a804e1943743 100644 --- a/nixos/modules/services/web-apps/eintopf.nix +++ b/nixos/modules/services/web-apps/lauti.nix @@ -9,13 +9,30 @@ with lib; let - cfg = config.services.eintopf; + cfg = config.services.lauti; + useLegacyDefault = lib.versionOlder config.system.stateVersion "26.05"; + default = if useLegacyDefault then "eintopf" else "lauti"; in { - options.services.eintopf = { - enable = mkEnableOption "Lauti (Eintopf) community event calendar web app"; + imports = [ + # since 0.12.0 (2025-05-26) release, upstream re-branded project to 'stalwart' due to inclusion of collaboration features (CalDAV, CardDAV, and WebDAV) + # https://github.com/stalwartlabs/stalwart/releases/tag/v0.12.0 + (lib.mkRenamedOptionModule [ "services" "eintopf" ] [ "services" "lauti" ]) + ]; + + options.services.lauti = { + + enable = mkEnableOption "Lauti community event calendar web app"; + + dataDir = lib.mkOption { + type = lib.types.path; + default = if useLegacyDefault then "/var/lib/eintopf" else "/var/lib/lauti"; + description = '' + Data directory for Lauti + ''; + }; settings = mkOption { type = types.attrsOf types.str; @@ -27,9 +44,9 @@ in ''; example = literalExpression '' { - EINTOPF_ADDR = ":1234"; - EINTOPF_ADMIN_EMAIL = "admin@example.org"; - EINTOPF_TIMEZONE = "Europe/Berlin"; + LAUTI_ADDR = ":1234"; + LAUTI_ADMIN_EMAIL = "admin@example.org"; + LAUTI_TIMEZONE = "Europe/Berlin"; } ''; }; @@ -47,7 +64,7 @@ in config = mkIf cfg.enable { - systemd.services.eintopf = { + systemd.services.lauti = { description = "Community event calendar web app"; wantedBy = [ "multi-user.target" ]; after = [ "network-online.target" ]; @@ -55,8 +72,8 @@ in environment = cfg.settings; serviceConfig = { ExecStart = lib.getExe pkgs.lauti; - WorkingDirectory = "/var/lib/eintopf"; - StateDirectory = "eintopf"; + WorkingDirectory = cfg.dataDir; + StateDirectory = default; EnvironmentFile = [ cfg.secrets ]; # hardening diff --git a/nixos/tests/lauti.nix b/nixos/tests/lauti.nix index 11e1158456f1..6e0dc2d1de67 100644 --- a/nixos/tests/lauti.nix +++ b/nixos/tests/lauti.nix @@ -5,20 +5,20 @@ }: { - name = "eintopf"; + name = "lauti"; meta.maintainers = with lib.maintainers; [ onny ]; nodes = { - eintopf = { - services.eintopf.enable = true; + lauti = { + services.lauti.enable = true; }; }; testScript = '' - eintopf.start - eintopf.wait_for_unit("eintopf.service") - eintopf.wait_for_open_port(3333) - eintopf.succeed("curl -sSfL http://eintopf:3333 | grep 'No events available'") + lauti.start + lauti.wait_for_unit("lauti.service") + lauti.wait_for_open_port(3333) + lauti.succeed("curl -sSfL http://lauti:3333 | grep 'No events available'") ''; }