Unverified Commit e8f532de authored by Bruno BELANYI's avatar Bruno BELANYI Committed by GitHub
Browse files

nixos/mealie: add 'database.createLocally' (#403670)

parents 2a3d3d08 b8e36dd3
Loading
Loading
Loading
Loading
+28 −1
Original line number Diff line number Diff line
@@ -50,13 +50,24 @@ in
        Expects the format of an `EnvironmentFile=`, as described by {manpage}`systemd.exec(5)`.
      '';
    };

    database = {
      createLocally = lib.mkOption {
        type = lib.types.bool;
        default = false;
        description = ''
          Configure local PostgreSQL database server for Mealie.
        '';
      };
    };
  };

  config = lib.mkIf cfg.enable {
    systemd.services.mealie = {
      description = "Mealie, a self hosted recipe manager and meal planner";

      after = [ "network-online.target" ];
      after = [ "network-online.target" ] ++ lib.optional cfg.database.createLocally "postgresql.service";
      requires = lib.optional cfg.database.createLocally "postgresql.service";
      wants = [ "network-online.target" ];
      wantedBy = [ "multi-user.target" ];

@@ -78,5 +89,21 @@ in
        StandardOutput = "journal";
      };
    };

    services.mealie.settings = lib.mkIf cfg.database.createLocally {
      DB_ENGINE = "postgres";
      POSTGRES_URL_OVERRIDE = "postgresql://mealie:@/mealie?host=/run/postgresql";
    };

    services.postgresql = lib.mkIf cfg.database.createLocally {
      enable = true;
      ensureDatabases = [ "mealie" ];
      ensureUsers = [
        {
          name = "mealie";
          ensureDBOwnership = true;
        }
      ];
    };
  };
}
+24 −9
Original line number Diff line number Diff line
@@ -10,20 +10,35 @@ import ./make-test-python.nix (
      ];
    };

    nodes = {
      server = {
    nodes =
      let
        sqlite = {
          services.mealie = {
            enable = true;
            port = 9001;
          };
        };
        postgres = {
          imports = [ sqlite ];
          services.mealie.database.createLocally = true;
        };
      in
      {
        inherit sqlite postgres;
      };

    testScript = ''
      start_all()
      server.wait_for_unit("mealie.service")
      server.wait_for_open_port(9001)
      server.succeed("curl --fail http://localhost:9001")

      def test_mealie(node):
        node.wait_for_unit("mealie.service")
        node.wait_for_open_port(9001)
        node.succeed("curl --fail http://localhost:9001")

      test_mealie(sqlite)
      simple.send_monitor_command("quit")
      simple.wait_for_shutdown()
      test_mealie(postgres)
    '';
  }
)