aboutsummaryrefslogtreecommitdiff
path: root/modules/services/vikunja.nix
diff options
context:
space:
mode:
authorsefidel <contact@sefidel.net>2024-01-24 13:29:27 +0900
committersefidel <contact@sefidel.net>2024-01-24 18:59:54 +0900
commit8e9b074467006c76768efe04cf1fb1ef9d652c67 (patch)
treefad73c7f94a74c77714c260d1fc0a63e2d205b49 /modules/services/vikunja.nix
downloadinfra-modules-main.zip
initial commitHEADmain
Diffstat (limited to 'modules/services/vikunja.nix')
-rw-r--r--modules/services/vikunja.nix50
1 files changed, 50 insertions, 0 deletions
diff --git a/modules/services/vikunja.nix b/modules/services/vikunja.nix
new file mode 100644
index 0000000..c54870b
--- /dev/null
+++ b/modules/services/vikunja.nix
@@ -0,0 +1,50 @@
+{ config, lib, ... }:
+
+with lib;
+let
+ cfg = config.modules.services.vikunja;
+in
+{
+ options.modules.services.vikunja = {
+ enable = mkEnableOption "vikunja";
+ domain = mkOption { type = types.str; };
+ realHost = mkOption { type = types.str; };
+ };
+
+ config = mkIf cfg.enable {
+ services.vikunja = {
+ enable = true;
+ frontendHostname = cfg.realHost;
+ frontendScheme = "https";
+
+ settings = {
+ service.enableregistration = false;
+ };
+
+ database = {
+ type = "postgres";
+ user = "vikunja";
+ database = "vikunja";
+ host = "/run/postgresql";
+ };
+ };
+
+ services.postgresql.enable = true;
+ services.postgresql.ensureDatabases = [ "vikunja" ];
+ services.postgresql.ensureUsers = [
+ {
+ name = "vikunja";
+ ensureDBOwnership = true;
+ }
+ ];
+
+ modules.persistence.directories = [
+ "/var/lib/private/vikunja"
+ ];
+
+ services.nginx.virtualHosts.${cfg.realHost} = {
+ forceSSL = true;
+ useACMEHost = cfg.domain;
+ };
+ };
+}