mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-23 09:51:00 +03:00
Merge pull request #289961 from leona-ya/vikunja-0.23.0
vikunja: 0.22.1 -> 0.23.0
This commit is contained in:
commit
f09b7dc6a5
8 changed files with 200 additions and 142 deletions
|
@ -162,6 +162,10 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
|
|||
release notes of [v19](https://github.com/systemd/mkosi/releases/tag/v19) and
|
||||
[v20](https://github.com/systemd/mkosi/releases/tag/v20) for a list of changes.
|
||||
|
||||
- The `services.vikunja` systemd service now uses `vikunja` as dynamic user instead of `vikunja-api`. Database users might need to be changed.
|
||||
|
||||
- The `services.vikunja.setupNginx` setting has been removed. Users now need to setup the webserver configuration on their own with a proxy pass to the vikunja service.
|
||||
|
||||
- The `woodpecker-*` packages have been updated to v2 which includes [breaking changes](https://woodpecker-ci.org/docs/next/migrations#200).
|
||||
|
||||
- `services.nginx` will no longer advertise HTTP/3 availability automatically. This must now be manually added, preferably to each location block.
|
||||
|
|
|
@ -9,10 +9,13 @@ let
|
|||
useMysql = cfg.database.type == "mysql";
|
||||
usePostgresql = cfg.database.type == "postgres";
|
||||
in {
|
||||
imports = [
|
||||
(mkRemovedOptionModule [ "services" "vikunja" "setupNginx" ] "services.vikunja no longer supports the automatic set up of a nginx virtual host. Set up your own webserver config with a proxy pass to the vikunja service.")
|
||||
];
|
||||
|
||||
options.services.vikunja = with lib; {
|
||||
enable = mkEnableOption (lib.mdDoc "vikunja service");
|
||||
package-api = mkPackageOption pkgs "vikunja-api" { };
|
||||
package-frontend = mkPackageOption pkgs "vikunja-frontend" { };
|
||||
package = mkPackageOption pkgs "vikunja" { };
|
||||
environmentFiles = mkOption {
|
||||
type = types.listOf types.path;
|
||||
default = [ ];
|
||||
|
@ -21,25 +24,10 @@ in {
|
|||
For example passwords should be set in one of these files.
|
||||
'';
|
||||
};
|
||||
setupNginx = mkOption {
|
||||
type = types.bool;
|
||||
default = config.services.nginx.enable;
|
||||
defaultText = literalExpression "config.services.nginx.enable";
|
||||
description = lib.mdDoc ''
|
||||
Whether to setup NGINX.
|
||||
Further nginx configuration can be done by changing
|
||||
{option}`services.nginx.virtualHosts.<frontendHostname>`.
|
||||
This does not enable TLS or ACME by default. To enable this, set the
|
||||
{option}`services.nginx.virtualHosts.<frontendHostname>.enableACME` to
|
||||
`true` and if appropriate do the same for
|
||||
{option}`services.nginx.virtualHosts.<frontendHostname>.forceSSL`.
|
||||
'';
|
||||
};
|
||||
frontendScheme = mkOption {
|
||||
type = types.enum [ "http" "https" ];
|
||||
description = lib.mdDoc ''
|
||||
Whether the site is available via http or https.
|
||||
This does not configure https or ACME in nginx!
|
||||
'';
|
||||
};
|
||||
frontendHostname = mkOption {
|
||||
|
@ -104,42 +92,27 @@ in {
|
|||
};
|
||||
};
|
||||
|
||||
systemd.services.vikunja-api = {
|
||||
description = "vikunja-api";
|
||||
systemd.services.vikunja = {
|
||||
description = "vikunja";
|
||||
after = [ "network.target" ] ++ lib.optional usePostgresql "postgresql.service" ++ lib.optional useMysql "mysql.service";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
path = [ cfg.package-api ];
|
||||
path = [ cfg.package ];
|
||||
restartTriggers = [ configFile ];
|
||||
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
DynamicUser = true;
|
||||
StateDirectory = "vikunja";
|
||||
ExecStart = "${cfg.package-api}/bin/vikunja";
|
||||
ExecStart = "${cfg.package}/bin/vikunja";
|
||||
Restart = "always";
|
||||
EnvironmentFile = cfg.environmentFiles;
|
||||
};
|
||||
};
|
||||
|
||||
services.nginx.virtualHosts."${cfg.frontendHostname}" = mkIf cfg.setupNginx {
|
||||
locations = {
|
||||
"/" = {
|
||||
root = cfg.package-frontend;
|
||||
tryFiles = "try_files $uri $uri/ /";
|
||||
};
|
||||
"~* ^/(api|dav|\\.well-known)/" = {
|
||||
proxyPass = "http://localhost:${toString cfg.port}";
|
||||
extraConfig = ''
|
||||
client_max_body_size 20M;
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
environment.etc."vikunja/config.yaml".source = configFile;
|
||||
|
||||
environment.systemPackages = [
|
||||
cfg.package-api # for admin `vikunja` CLI
|
||||
cfg.package # for admin `vikunja` CLI
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -13,15 +13,20 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
|||
frontendScheme = "http";
|
||||
frontendHostname = "localhost";
|
||||
};
|
||||
services.nginx.enable = true;
|
||||
services.nginx = {
|
||||
enable = true;
|
||||
virtualHosts."http://localhost" = {
|
||||
locations."/".proxyPass = "http://localhost:3456";
|
||||
};
|
||||
};
|
||||
};
|
||||
vikunjaPostgresql = { pkgs, ... }: {
|
||||
services.vikunja = {
|
||||
enable = true;
|
||||
database = {
|
||||
type = "postgres";
|
||||
user = "vikunja-api";
|
||||
database = "vikunja-api";
|
||||
user = "vikunja";
|
||||
database = "vikunja";
|
||||
host = "/run/postgresql";
|
||||
};
|
||||
frontendScheme = "http";
|
||||
|
@ -30,20 +35,25 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
|||
};
|
||||
services.postgresql = {
|
||||
enable = true;
|
||||
ensureDatabases = [ "vikunja-api" ];
|
||||
ensureDatabases = [ "vikunja" ];
|
||||
ensureUsers = [
|
||||
{ name = "vikunja-api";
|
||||
{ name = "vikunja";
|
||||
ensureDBOwnership = true;
|
||||
}
|
||||
];
|
||||
};
|
||||
services.nginx.enable = true;
|
||||
services.nginx = {
|
||||
enable = true;
|
||||
virtualHosts."http://localhost" = {
|
||||
locations."/".proxyPass = "http://localhost:9090";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testScript =
|
||||
''
|
||||
vikunjaSqlite.wait_for_unit("vikunja-api.service")
|
||||
vikunjaSqlite.wait_for_unit("vikunja.service")
|
||||
vikunjaSqlite.wait_for_open_port(3456)
|
||||
vikunjaSqlite.succeed("curl --fail http://localhost:3456/api/v1/info")
|
||||
|
||||
|
@ -52,7 +62,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
|||
vikunjaSqlite.succeed("curl --fail http://localhost/api/v1/info")
|
||||
vikunjaSqlite.succeed("curl --fail http://localhost")
|
||||
|
||||
vikunjaPostgresql.wait_for_unit("vikunja-api.service")
|
||||
vikunjaPostgresql.wait_for_unit("vikunja.service")
|
||||
vikunjaPostgresql.wait_for_open_port(9090)
|
||||
vikunjaPostgresql.succeed("curl --fail http://localhost:9090/api/v1/info")
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue