From 6aca4f9f62d6d68d7968a4e8c438e403d06e9182 Mon Sep 17 00:00:00 2001
From: Antoine Martin <antoine@alarsyo.net>
Date: Fri, 17 Jan 2025 16:58:14 +0100
Subject: [PATCH] services: mealie: get rid of copy-pasted module

---
 services/mealie.nix | 70 ++++++++++++---------------------------------
 1 file changed, 18 insertions(+), 52 deletions(-)

diff --git a/services/mealie.nix b/services/mealie.nix
index 8333c4c..61baefe 100644
--- a/services/mealie.nix
+++ b/services/mealie.nix
@@ -29,64 +29,30 @@ in {
       example = 8080;
       description = "Internal port for Mealie webapp";
     };
-    credentialsFile = lib.mkOption {
-      type = types.nullOr types.path;
-      default = null;
-      example = "/run/secrets/mealie-credentials.env";
-      description = ''
-        File containing credentials used in mealie such as {env}`POSTGRES_PASSWORD`
-        or sensitive LDAP options.
-
-        Expects the format of an `EnvironmentFile=`, as described by {manpage}`systemd.exec(5)`.
-      '';
-    };
   };
 
-  # FIXME(NixOS 24.11) Copy pasted from nixpkgs master module, because some needed changes weren't in stable yet.
-  config = mkIf cfg.enable (let
-    settings = {
-      ALLOW_SIGNUP = "false";
-      BASE_URL = "https://mealie.${domain}";
-      TZ = config.time.timeZone;
+  config = mkIf cfg.enable {
+    services.mealie = {
+      inherit listenAddress;
 
-      # Use PostgreSQL
-      DB_ENGINE = "postgres";
+      enable = true;
+      package = pkgs.unstable.mealie;
+      port = cfg.port;
 
-      # Settings for Mealie 1.7+
-      POSTGRES_URL_OVERRIDE = "postgresql://mealie:@/mealie?host=/run/postgresql";
-    };
-  in {
-    systemd.services = {
-      mealie = {
-        after = ["network-online.target" "postgresql.service"];
-        requires = ["postgresql.service"];
-        wants = ["network-online.target"];
-        wantedBy = ["multi-user.target"];
-
-        description = "Mealie, a self hosted recipe manager and meal planner";
-
-        environment =
-          {
-            PRODUCTION = "true";
-            API_PORT = toString cfg.port;
-            BASE_URL = "http://localhost:${toString cfg.port}";
-            DATA_DIR = "/var/lib/mealie";
-            CRF_MODEL_PATH = "/var/lib/mealie/model.crfmodel";
-          }
-          // (builtins.mapAttrs (_: val: toString val) settings);
-
-        serviceConfig = {
-          DynamicUser = true;
-          User = "mealie";
-          ExecStartPre = "${pkg}/libexec/init_db";
-          ExecStart = "${lib.getExe pkg} -b ${listenAddress}:${builtins.toString cfg.port}";
-          EnvironmentFile = lib.mkIf (cfg.credentialsFile != null) cfg.credentialsFile;
-          StateDirectory = "mealie";
-          StandardOutput = "journal";
-        };
+      settings = {
+        ALLOW_SIGNUP = "false";
+        BASE_URL = "https://mealie.${domain}";
+        TZ = config.time.timeZone;
+        DB_ENGINE = "postgres";
+        POSTGRES_URL_OVERRIDE = "postgresql://mealie:@/mealie?host=/run/postgresql";
       };
     };
 
+    systemd.services.mealie = {
+      after = ["postgresql.service"];
+      requires = ["postgresql.service"];
+    };
+
     # Set-up database
     services.postgresql = {
       enable = true;
@@ -118,5 +84,5 @@ in {
     my.services.restic-backup = {
       paths = ["/var/lib/mealie"];
     };
-  });
+  };
 }