2022-07-28 17:53:23 +02:00
|
|
|
# Groceries and household management
|
|
|
|
{ config, lib, ... }:
|
|
|
|
let
|
|
|
|
cfg = config.my.services.grocy;
|
2022-07-28 18:26:02 +02:00
|
|
|
grocyDomain = "grocy.${config.networking.domain}";
|
2022-07-28 17:53:23 +02:00
|
|
|
in
|
|
|
|
{
|
|
|
|
options.my.services.grocy = with lib; {
|
|
|
|
enable = mkEnableOption "Grocy household ERP";
|
|
|
|
};
|
|
|
|
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
|
|
services.grocy = {
|
|
|
|
enable = true;
|
|
|
|
|
|
|
|
# The service sets up the reverse proxy automatically
|
2022-07-28 18:26:02 +02:00
|
|
|
hostName = grocyDomain;
|
2022-07-28 17:53:23 +02:00
|
|
|
|
2022-07-28 18:26:02 +02:00
|
|
|
# Configure SSL by hand
|
2022-07-28 17:53:23 +02:00
|
|
|
nginx = {
|
2022-07-28 18:26:02 +02:00
|
|
|
enableSSL = false;
|
2022-07-28 17:53:23 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
settings = {
|
|
|
|
currency = "EUR";
|
|
|
|
culture = "en";
|
|
|
|
calendar = {
|
|
|
|
# Start on Monday
|
|
|
|
firstDayOfWeek = 1;
|
|
|
|
showWeekNumber = true;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
2022-07-28 18:26:02 +02:00
|
|
|
|
|
|
|
services.nginx.virtualHosts."${grocyDomain}" = {
|
|
|
|
forceSSL = true;
|
|
|
|
useACMEHost = config.networking.domain;
|
|
|
|
};
|
2024-09-22 02:21:01 +02:00
|
|
|
|
2024-11-28 22:46:39 +01:00
|
|
|
my.services.backup = {
|
|
|
|
paths = [
|
|
|
|
config.services.grocy.dataDir
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2024-09-22 02:21:01 +02:00
|
|
|
# NOTE: unfortunately grocy does not log connection failures for fail2ban
|
2022-07-28 17:53:23 +02:00
|
|
|
};
|
|
|
|
}
|